Je gère un serveur Tomcat sur une machine ubuntu
hébergé dans une instance AWS. Je peux atteindre le serveur via public_ip:8080
Mais quand je change le port d'écoute sur server.xml
de 8080
à 80
La connexion est refusée par l'hôte distant.
Numéro de port 80
est activé sur AWS firewall
.
J'ai vérifié ufw
via Sudo ufw status
mais le résultat est inactive
ufw
front-end du mécanisme de pare-feu sous-jacent?
Comment puis-je activer le port 80
sur firewall
?
Merci d'avance.
Output de iptables -S
:
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
Sortie de 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
Sortie de netstat -na |grep \:80
Avant de changer de port sur 80
:
tcp6 0 0 127.0.0.1:8005 :::* LISTEN
tcp6 0 0 :::8080 :::* LISTEN
Sortie de netstat -na |grep \:80
Après avoir changé de port sur 80
:
tcp6 0 0 127.0.0.1:8005 :::* LISTEN
Sortie du navigateur sur le 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)
Définition du port partie de server.xml
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
URIEncoding="UTF-8"
redirectPort="8443" />
partie de catalina.out lors du début de Tomcat sur 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
Mise à jour 2:
J'ai installé Tomcat via apt-get
C'est donc une version reconditionnée de Tomcat. ICI Il dit que fonctionnant Tomcat alors que la racine résoudra le problème mais ici Il dit Tomcat should not be run under the root user.
N'y a-t-il aucune façon possible de le gérer avec l'instance Tomcat reconditionnée?
Mise à jour 3:
Je suppose - this est la réponse à ma question
Oui c'est le cas. C'est comme une version facile à utiliser des iptables. Essayez d'écrire, pour voir les règles de pare-feu IPTABLES:
$ Sudo iptables -L
Vous pouvez ouvrir le port 80 en utilisant:
$ Sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
Je peux décrire cette ligne pour votre, si vous en avez besoin. Dis-moi :-)
Cela a fonctionné pour moi:
Courir en tant que root:
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080