Tomcat部署WAR包:指定18080端口可正常访问,无端口访问提示目录不存在的问题求助
问题原因与解决办法
这问题我碰到过好几次,本质是端口映射或者默认端口配置的问题,咱们一步步拆解:
核心原因
直接访问http://my-server-site/welcome时,浏览器默认会使用HTTP协议的默认端口80发送请求,但你的Tomcat实际监听的是18080端口——这两个端口没有建立关联,所以请求根本没到达Tomcat服务,自然会提示找不到目录/welcome。
具体解决办法
根据你的需求,分两种场景处理:
场景1:想通过默认80端口访问(不带端口号)
如果希望用户不用输入端口就能访问,需要把80端口的请求转发到Tomcat的18080端口,或者让Tomcat直接监听80端口:
方法1:用反向代理(推荐,更灵活)
比如用Nginx做反向代理,配置示例如下:server { listen 80; server_name my-server-site; location / { proxy_pass http://localhost:18080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }配置完成后重启Nginx,80端口的请求就会转发到Tomcat的18080端口,不带端口访问就能正常打开页面了。
方法2:修改Tomcat监听端口为80
编辑Tomcat安装目录下conf/server.xml文件,找到<Connector>标签,把port值改成80:<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />注意:Linux系统中,监听1024以下的端口需要root权限,如果你不想用root启动Tomcat,可以用
authbind工具授权,或者用iptables做端口转发:iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 18080
场景2:仅确认访问路径正确性
如果只是临时测试,确保访问时加上Tomcat的监听端口18080,也就是http://my-server-site:18080/welcome,这个路径你已经验证过是正常的。
额外排查点
- 检查服务器80端口是否被其他服务占用(比如Apache、其他Web服务),可以用命令查看:
Linux:netstat -tulpn | grep :80
Windows:netstat -ano | findstr ":80" - 确认服务器防火墙/安全组已经开放80端口,避免外部请求被拦截。
内容的提问来源于stack exchange,提问作者gordon
相关产品推荐
相关产品推荐

