【发布时间】:2017-12-19 22:25:25
【问题描述】:
我的 Tomcat 连接器有问题。当我尝试使用 SSL 连接时,它可以工作并且我可以访问该页面 (https://nombritech.pl)。我希望能够从端口 80 重定向到 443,但是如果我尝试使用 http 连接,我将无法访问该页面 (http://nombritech.pl)。
我指定的这些连接器有问题吗?我认为我做的一切都是正确的,就像我在其他线程中看到的那样。
<Connector port="80" redirectPort="443" protocol="HTTP/1.1" connectionTimeout="20000" />
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" KeystoreFile="/opt/tomcat/certificate/nombritech.pl.keystore" keystorePass="pass" />
我看不到任何通过端口 80 的流量:
我在 Ubuntu 17.10 和 Tomcat 9 beta 2 上运行它。
编辑:我认为它可能在 ipv6 而不是 ipv4 上运行:
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:5355 0.0.0.0:* LISTEN 23950/systemd-resol
tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN 1151/dnsmasq
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 851/vsftpd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 19096/sshd
tcp 0 0 0.0.0.0:5432 0.0.0.0:* LISTEN 940/postgres
tcp 0 0 127.0.0.1:5433 0.0.0.0:* LISTEN 939/postgres
tcp 0 464 79.137.81.193:22 29.72.22.156:52036 ESTABLISHED 20310/sshd: root@pt
tcp 0 136 79.137.81.193:22 29.72.22.156:53406 ESTABLISHED 27828/sshd: root@no
tcp6 0 0 127.0.0.1:8005 :::* LISTEN 27741/java
tcp6 0 0 :::5355 :::* LISTEN 23950/systemd-resol
tcp6 0 0 :::80 :::* LISTEN 27741/java
tcp6 0 0 :::22 :::* LISTEN 19096/sshd
tcp6 0 0 :::5432 :::* LISTEN 940/postgres
tcp6 0 0 :::443 :::* LISTEN 27741/java
udp 0 0 0.0.0.0:5355 0.0.0.0:* 23950/systemd-resol
udp 0 0 127.0.0.1:54514 127.0.0.1:54514 ESTABLISHED 939/postgres
udp 0 0 127.0.0.53:53 0.0.0.0:* 23950/systemd-resol
udp 0 0 192.168.122.1:53 0.0.0.0:* 1151/dnsmasq
udp 0 0 0.0.0.0:67 0.0.0.0:* 1151/dnsmasq
udp 0 0 0.0.0.0:68 0.0.0.0:* 740/dhclient
udp 0 0 127.0.0.1:58536 127.0.0.1:58536 ESTABLISHED 940/postgres
udp6 0 0 :::5355 :::* 23950/systemd-resol
EDIT2:我将其更改为 tcp,但它仍然没有响应 http:
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 28573/java
80 端口像以前一样关闭。你有什么想法我现在可以用它做什么吗?对于此事的任何提示,我将不胜感激。
编辑:如果我有端口:8080 和:443 的连接器,现在它正在工作,虽然它已在防火墙中启用并且我以 root 身份运行 Tomcat,但:80 仍然无法工作,为什么可以那我不是在 :80 上运行它吗? Tomcat 侦听端口 :80 并且总是拒绝连接
编辑:
我当前的 server.xml:
<Service name="Catalina">
<Connector port="80" redirectPort="443" protocol="HTTP/1.1" connectionTimeout="20000" address="0.0.0.0"/>
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" KeystoreFile="/opt/tomcat/certificate/nombritech.pl.keystore" keystorePass="pass" />
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase" />
</Realm>
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"></Host>
</Engine>
</Service>
【问题讨论】:
-
您似乎没有在防火墙中打开端口 80。离题。
-
To Action From -- ------ ---- 443/tcp ALLOW Anywhere 80/tcp ALLOW Anywhere 22 ALLOW Anywhere 443/tcp (v6) ALLOW Anywhere (v6) 80/tcp (v6) 允许在任何地方 (v6) 22 (v6) 允许在任何地方 (v6)
-
@EJP 根据 sudo ufw 状态 80 端口已打开
-
根据我刚刚得到的连接超时,以及您观察到的通过端口 80 的流量不足,不是。
-
嗯...如果 ufw 声明它是允许的,为什么有可能?那我该如何启用呢?
标签: java ubuntu tomcat connector