2012-09-17 73 views
11

首先,我只是想看到它不在ec2控制台安全组安装。因为我可以设置apache,这是通过故障80端口,并能够通过80端口访问Apache网站。 但是对于tomcat它可以工作,如果我使用端口8080(默认)或一些大于1023的值(我认为这个端口)。但是当我改变server.xml(改变8080到80),它不能工作,如果我使用80端口,我成功启动服务,但没有80/HTTP监听。我知道它应该是一些特权问题(只有根可以启动1023端口以下的服务)。但我不知道该怎么做。Linux中的EC2(亚马逊)不能使用端口80的tomcat

+0

[EC2中的Linux不能使用tomcat的端口80,但端口80对于Apache是​​可以的](http://stackoverflow.com/questions/12464888/linux-in-ec2-cannot-use-port-80 -for-tomcat-but-port-80-is-ok-for-apache) –

回答

1

配置Tomcat在Linux上的特权端口上运行的常用方法是使用authbind。您可以找到有关Ubuntu和Amazon Linux的详细设置说明here

25

我个人对此问题的选择是使用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 
+0

这是正确的答案。它只是通过端口80将流量重定向到8080,而不会限制出站流量。一些像这样的iptable脚本阻止了http出于安全考虑,但是这使得在今天更新你的服务器非常困难。 – chubbsondubs

+0

[“云中的猫”](http://www.excelsior-usa.com/articles/tomcat-amazon-ec2-advanced.html)文章介绍了几条建议,截至2012年,他们似乎更喜欢' iptables“。 – amos

2

我之前做过这个的方式是使用Apache2作为代理,使用虚拟主机和代理到Tomcat上。这将处理请求,然后也可以用作负载均衡器,如果将来您决定使用多个Tomcat进行负载均衡。