首先,我只想看到它不是ec2控制台中的安全组设置。因为我可以通过80端口设置apache,并且能够通过80端口访问apache网站。 但对于tomcat,如果我使用端口8080(默认情况下)或某些大于1023的值(我认为这个端口),它可以工作。但是当我更改server.xml(将8080更改为80)时,如果我使用80端口,它就无法工作,我成功启动了服务,但是没有80 / http监听。我知道它应该是一些特权问题(只有root可以在1023端口下启动服务)。但我不知道怎么做。
答案 0 :(得分:27)
我个人对此问题的选择是使用iptables
将所有流量从端口80重定向到运行Tomcat的上端口(例如8080)。
/sbin/iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -p tcp --dport 8080 -j ACCEPT
/sbin/iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
答案 1 :(得分:2)
我以前这样做的方式是使用Apache2作为使用虚拟主机的代理,并使用代理到Tomcat。这将处理请求,如果将来您决定使用多个Tomcats进行负载平衡,也可以用作负载均衡器。
答案 2 :(得分:1)
将Tomcat配置为在Linux上的特权端口上运行的常用方法是使用authbind。
以下是Ubuntu 16.04上Tomcat 7的设置步骤。
首先确保安装了authbind:
sudo apt-get install authbind
修改/etc/default/tomcat7
并取消注释此行:
AUTHBIND=yes
为端口80创建绑定权限文件:
sudo touch /etc/authbind/byport/80
sudo chmod 500 /etc/authbind/byport/80
sudo chown tomcat7 /etc/authbind/byport/80
如果您还使用https,请执行与上面相同的端口443。