【问题标题】:Tomcat works with port :443 and doesn't with :80 despite of enabling firewallTomcat 使用端口:443,但不使用:80,尽管启用了防火墙
【发布时间】: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


【解决方案1】:

我重新安装了我的 Ubuntu 服务器,现在它可以正常工作了。我不知道这个问题的确切原因,但它一定是防火墙或其他网络相关的问题,因为 Tomcat 配置和以前一样。

感谢您在此问题上的帮助,我很高兴它开始起作用了 :)。我希望我知道它为什么不起作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多