EC2(亚马逊)中的Linux无法使用端口80进行tomcat

时间:2012-09-17 18:13:51

标签: tomcat amazon-s3 amazon-ec2

首先,我只想看到它不是ec2控制台中的安全组设置。因为我可以通过80端口设置apache,并且能够通过80端口访问apache网站。 但对于tomcat,如果我使用端口8080(默认情况下)或某些大于1023的值(我认为这个端口),它可以工作。但是当我更改server.xml(将8080更改为80)时,如果我使用80端口,它就无法工作,我成功启动了服务,但是没有80 / http监听。我知道它应该是一些特权问题(只有root可以在1023端口下启动服务)。但我不知道怎么做。

3 个答案:

答案 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。