You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 03:42:32