要让域名访问Tomcat,核心在于将域名解析到服务器IP,并确保Tomcat监听正确的端口且请求能够到达。整个过程涉及DNS解析、Tomcat连接器配置、防火墙规则以及可能的反向代理设置。

第一步,进行域名解析。需要在域名服务商处添加一条A记录,将域名(如 example.com)或子域名(如 www.example.com)指向运行Tomcat的服务器公网IP地址。如果使用了CDN或负载均衡,则解析到对应服务地址。解析生效后,可通过 ping 域名 或 nslookup 验证。
第二步,确认Tomcat的监听端口。Tomcat默认使用8080端口,若要直接通过HTTP 80端口访问,需修改 conf/server.xml 中的 Connector 配置。将 <Connector port="8080" protocol="HTTP/1.1" .../> 的端口改为 80。若使用HTTPS,则需配置8443或443端口,并配置SSL证书。
第三步,配置域名与虚拟主机。在 server.xml 的 Engine 或 Host 中设置 name 属性为你的域名。例如:<Host name="www.example.com" appBase="webapps" unpackWARs="true" autoDeploy="true">。同时,可将 <Engine name="Catalina" defaultHost="www.example.com"> 设置默认主机,使未匹配的请求也转向该域名。部署的应用则放置在 webapps 目录下,通过 http://域名/应用名 访问。
第四步,处理端口占用与防火墙。若将Tomcat端口改为80,需确保该端口未被其他服务(如Nginx、Apache)占用。在Linux服务器上,使用 ss -tlnp | grep :80 检查。同时,需要在云安全组和系统防火墙(如 firewalld 或 iptables)中放行80端口(以及443端口),否则外部无法访问。
第五步,若服务器上已有Nginx或Apache占用80端口,推荐使用反向代理方式。配置Nginx作为前端,将域名请求转发到Tomcat的8080端口。示例Nginx配置:server_name www.example.com; location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; }。这种方式更灵活,支持动静分离和负载均衡。
第六步,修改应用上下文路径。若希望直接通过域名根路径(如 http://www.example.com/)访问应用,而不加应用名,可将应用部署为 ROOT(将WAR包重命名为 ROOT.war 或解压为 ROOT 目录),或在 server.xml 的 Host 中配置 <Context path="" docBase="应用路径" />。
第七步,验证与测试。配置完成后,重启Tomcat服务,在浏览器输入 http://域名 或 http://域名:端口 进行访问。若无法访问,可检查DNS解析状态、Tomcat日志(logs/catalina.out)以及网络连通性(如 telnet 域名 80)。
第八步,考虑HTTPS强制跳转。若配置了SSL证书,可在Tomcat的 web.xml 中设置安全约束,或在反向代理层将HTTP请求301重定向到HTTPS。同时,HSTS(HTTP严格传输安全)可增强安全性,但需谨慎启用。
此外,还需注意会话保持与静态资源缓存。若使用集群,需配置Session共享;若通过反向代理,可设置 proxy_set_header X-Forwarded-Proto $scheme 使Tomcat正确识别协议。对于多域名场景,可在 server.xml 中定义多个 Host 来区分不同应用。
最后,推荐使用环境变量或配置文件管理域名和端口,避免硬编码。生产环境中,应定期更新JDK和Tomcat版本,修复安全漏洞。通过上述步骤,域名即可稳定、高效地访问Tomcat应用。

查看详情

查看详情