使用的是轻量级服务器。 使用自带的Ubuntu 20.04系统,安装了jdk11和tomcat9。 外网能通过8080正常访问tomcat的页面和网页页面。但是现在想不带端口访问。server.xml文件修改成80监听了。还是不行。有没有大佬指点下萌新啊。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在Linux系统中,监听80端口通常需要root权限,因为80端口是系统保留的端口。如果你直接在Tomcat的server.xml
文件中将HTTP连接器(Connector)的端口从8080改为了80,而没有以root权限运行Tomcat,那么Tomcat将无法成功绑定到80端口。
这里有几种解决方法:
警告: 直接以root用户运行Tomcat存在安全隐患,因为任何通过Tomcat引入的安全漏洞都可能影响到整个系统。仅在充分了解风险并采取了适当安全措施的情况下才考虑此选项。
catalina.sh
或setenv.sh
),使用sudo
或者调整启动服务的用户为root来实现。但强烈建议避免这样做,除非你完全理解潜在的风险,并且有相应的安全策略。如果你的服务器上安装了防火墙(如ufw)或使用了Nginx等反向代理,可以设置端口转发,让80端口的流量转发到8080端口。
编辑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;
}
}
这种方法的好处是,你可以利用Nginx来做更多的事情,比如SSL加密、负载均衡等,同时保持Tomcat在非root权限下运行。
Linux的capabilities机制允许你给非root用户分配特定的权限,而不必赋予全部的root权限。具体操作较为复杂,涉及到修改系统配置,确保Tomcat进程能够绑定到低号端口。
综上所述,推荐使用Nginx作为反向代理的方式,既安全又灵活。希望这些建议能帮助到你!