在Ubuntu AWS上打开端口80

我在一个AWS实例中托pipe的ubuntu机器上运行一个tomcat服务器。 我可以通过public_ip:8080到达服务器,但是当我将server.xml上的监听端口从8080更改为80连接被远程主机拒绝。

端口号80AWS firewall上启用。

我通过sudo ufw status检查ufw ,但结果是inactive

是基础防火墙机制的前端吗?

我如何在firewall上启用端口80

预先感谢。

iptables -S

 -P INPUT ACCEPT -P FORWARD ACCEPT -P OUTPUT ACCEPT 

netstat -punta输出

 Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 785/mysqld tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 613/sshd tcp 0 0 172.31.1.56:22 92.45.23.114:3913 ESTABLISHED 5825/sshd: ubuntu [ tcp 0 0 172.31.1.56:22 92.45.23.114:19374 ESTABLISHED 7320/sshd: ubuntu [ tcp 0 0 172.31.1.56:22 92.45.23.114:28051 ESTABLISHED 6901/sshd: ubuntu [ tcp 0 272 172.31.1.56:22 92.45.23.114:9327 ESTABLISHED 7428/sshd: ubuntu [ tcp 0 0 172.31.1.56:22 92.45.23.114:7597 ESTABLISHED 7034/sshd: ubuntu [ tcp 0 0 127.0.0.1:3306 127.0.0.1:45655 ESTABLISHED 785/mysqld tcp6 0 0 127.0.0.1:8005 :::* LISTEN 7275/java tcp6 0 0 :::8080 :::* LISTEN 7275/java tcp6 0 0 :::22 :::* LISTEN 613/sshd tcp6 0 0 127.0.0.1:45655 127.0.0.1:3306 ESTABLISHED 7275/java udp 0 0 0.0.0.0:68 0.0.0.0:* 538/dhclient3 

在将端口更改为80之前,输出netstat -na |grep \:80 80

 tcp6 0 0 127.0.0.1:8005 :::* LISTEN tcp6 0 0 :::8080 :::* LISTEN 

输出netstat -na |grep \:80将端口更改为80

 tcp6 0 0 127.0.0.1:8005 :::* LISTEN 

浏览器在端口80上的输出:

 ERROR The requested URL could not be retrieved The following error was encountered while trying to retrieve the URL: http://54.194.236.229/TransportationAutomation/personnel.xhtml Connection to 54.194.236.229 failed. The system returned: (111) Connection refused The remote host or network may be down. Please try the request again. Your cache administrator is webmaster. Generated Fri, 14 Feb 2014 15:01:06 GMT by proxy (squid/2.7.STABLE7) 

server.xml端口定义部分

 <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" URIEncoding="UTF-8" redirectPort="8443" /> 

port 80上启动tomcat时Catalina.out的一部分:

 Feb 14, 2014 3:04:25 PM org.apache.coyote.AbstractProtocol init SEVERE: Failed to initialize end point associated with ProtocolHandler ["http-bio-80"] java.net.BindException: Permission denied <null>:80 at org.apache.tomcat.util.net.JIoEndpoint.bind(JIoEndpoint.java:391) at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:554) at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:409) at org.apache.coyote.http11.AbstractHttp11JsseProtocol.init(AbstractHttp11JsseProtocol.java:119) at org.apache.catalina.connector.Connector.initInternal(Connector.java:956) at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102) at org.apache.catalina.core.StandardService.initInternal(StandardService.java:559) at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102) at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:815) at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102) at org.apache.catalina.startup.Catalina.load(Catalina.java:594) at org.apache.catalina.startup.Catalina.load(Catalina.java:619) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:281) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:449) Caused by: java.net.BindException: Permission denied at java.net.PlainSocketImpl.socketBind(Native Method) at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:376) at java.net.ServerSocket.bind(ServerSocket.java:376) at java.net.ServerSocket.<init>(ServerSocket.java:237) at java.net.ServerSocket.<init>(ServerSocket.java:181) at org.apache.tomcat.util.net.DefaultServerSocketFactory.createSocket(DefaultServerSocketFactory.java:49) at org.apache.tomcat.util.net.JIoEndpoint.bind(JIoEndpoint.java:378) ... 17 more 

更新2:

我通过apt-get安装了tomcat,所以它是tomcat的重新打包版本。 这里说的是以root身份运行tomcat将解决这个问题,但是在这里说Tomcat should not be run under the root user. 没有任何可能的方式来处理与重新包装的tomcat实例吗?

更新3:

我想这是我的问题的答案

是的。 它就像一个简单易用的iptables版本。 试着写一下,看看iptables的防火墙规则:

 $ sudo iptables -L 

您可以使用以下命令打开端口80:

 $ sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT 

如果你需要的话,我可以为你描述这一行。 就告诉我嘛 :-)

这对我工作:

以root身份运行:

 iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080