Ich verwende einen Tomcat-Server auf einem ubuntu
Computer, der in einer AWS-Instanz gehostet wird. Ich kann den Server über erreichen, public_ip:8080
aber wenn ich den Überwachungsport server.xml
von 8080
auf auf 80
Verbindung ändere , wird dies vom Remote-Host abgelehnt.
Portnummer 80
ist aktiviert AWS firewall
.
Ich habe ufw
über überprüft, sudo ufw status
aber das Ergebnis istinactive
Ist das ufw
Front-End des zugrunde liegenden Firewall-Mechanismus?
Wie kann ich aktivieren Port 80
auf firewall
?
Danke im Voraus.
Ouptut von iptables -S
:
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
Ausgabe von 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
Ausgabe von netstat -na |grep \:80
vor dem Portwechsel auf 80
:
tcp6 0 0 127.0.0.1:8005 :::* LISTEN
tcp6 0 0 :::8080 :::* LISTEN
Ausgabe von netstat -na |grep \:80
nach dem Portwechsel auf 80
:
tcp6 0 0 127.0.0.1:8005 :::* LISTEN
Ausgabe des Browsers am Port 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)
Port Definition Teil von server.xml
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
URIEncoding="UTF-8"
redirectPort="8443" />
Teil von Catalina.out beim Starten von Tomcat am port 80
:
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
UPDATE 2:
Ich habe Tomcat über installiert apt-get
, es ist also eine neu gepackte Version von Tomcat. Hier heißt es, dass das Ausführen von Tomcat als Root das Problem lösen wird, aber hier heißt es: Tomcat should not be run under the root user.
Gibt es keine Möglichkeit, mit der neu gepackten Tomcat-Instanz damit umzugehen?
UPDATE 3:
Ich denke, das ist die Antwort auf meine Frage
apt-get
, möchte ich nur darauf hinweisen, dass das Ändern des Portsserver.xml
normalerweise nicht ausreicht, da Port 80 ein privilegierter Port ist. Haben Sie eingecheckt,catalina.out
um festzustellen, ob Sie eine Fehlermeldung haben?Antworten:
Ja ist es. Es ist wie eine benutzerfreundliche Version von iptables. Versuchen Sie zu schreiben, um die Firewall-Regeln von iptables anzuzeigen:
Sie können für Port 80 öffnen, indem Sie Folgendes verwenden:
Ich kann diese Zeile für Sie beschreiben, wenn Sie sie brauchen. Sag's mir einfach :-)
quelle
sudo iptables -L
isChain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination
Es wäre perfekt, die Leitung zu beschreiben, die den Port 80 öffnen soll. Vielen Dank im Voraus.Das hat bei mir funktioniert:
Als root ausführen:
quelle