开发者社区 问答 正文

tomcat 访问网页不带端口

使用的是轻量级服务器。 使用自带的Ubuntu 20.04系统,安装了jdk11和tomcat9。 外网能通过8080正常访问tomcat的页面和网页页面。但是现在想不带端口访问。server.xml文件修改成80监听了。还是不行。有没有大佬指点下萌新啊。

展开
收起
游客yqdtxfjvu7lm2 2021-09-02 18:57:16 718 分享 版权
阿里云 AI 助理回答

在Linux系统中,监听80端口通常需要root权限,因为80端口是系统保留的端口。如果你直接在Tomcat的server.xml文件中将HTTP连接器(Connector)的端口从8080改为了80,而没有以root权限运行Tomcat,那么Tomcat将无法成功绑定到80端口。

这里有几种解决方法:

1. 以root权限启动Tomcat

警告: 直接以root用户运行Tomcat存在安全隐患,因为任何通过Tomcat引入的安全漏洞都可能影响到整个系统。仅在充分了解风险并采取了适当安全措施的情况下才考虑此选项。

  • 可以通过修改Tomcat启动脚本(如catalina.shsetenv.sh),使用sudo或者调整启动服务的用户为root来实现。但强烈建议避免这样做,除非你完全理解潜在的风险,并且有相应的安全策略。

2. 使用端口转发

如果你的服务器上安装了防火墙(如ufw)或使用了Nginx等反向代理,可以设置端口转发,让80端口的流量转发到8080端口。

使用Nginx作为反向代理

  1. 安装Nginx。
  2. 编辑Nginx配置文件(通常是/etc/nginx/nginx.conf/etc/nginx/sites-available/default),添加如下内容:

    server {
       listen 80;
       server_name your_domain.com; # 替换为你的域名
    
       location / {
           proxy_pass http://localhost:8080;
           proxy_set_header Host $host;
           proxy_set_header X-Real-IP $remote_addr;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
           proxy_set_header X-Forwarded-Proto $scheme;
       }
    }
    
  3. 重启Nginx服务使配置生效。

这种方法的好处是,你可以利用Nginx来做更多的事情,比如SSL加密、负载均衡等,同时保持Tomcat在非root权限下运行。

3. 使用非root用户和capabilities

Linux的capabilities机制允许你给非root用户分配特定的权限,而不必赋予全部的root权限。具体操作较为复杂,涉及到修改系统配置,确保Tomcat进程能够绑定到低号端口。

综上所述,推荐使用Nginx作为反向代理的方式,既安全又灵活。希望这些建议能帮助到你!

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答