【问题标题】:Tomcat not responding on localhost, but working through apache2/mod_jkTomcat 在 localhost 上没有响应,但通过 apache2/mod_jk 工作
【发布时间】:2019-03-06 21:13:33
【问题描述】:

Tomcat 没有响应对 localhost:8080 的调用

curl -k https://localhost/user-service/1/user

工作正常,但是

curl localhost:8080/user-service/1/user

挂了几个小时,从不响应。

netstat -tnlp

表演

tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1504/sshd
tcp6 0 0 :::443 :::* LISTEN 1559/apache2
tcp6 0 0 :::9090 :::* LISTEN 19341/java
tcp6 0 0 :::46467 :::* LISTEN 19341/java
tcp6 0 0 127.0.0.1:8005 :::* LISTEN 19341/java
tcp6 0 0 :::8009 :::* LISTEN 19341/java
tcp6 0 0 :::8080 :::* LISTEN 19341/java
tcp6 0 0 :::80 :::* LISTEN 1559/apache2

但是 localhost 调用甚至没有显示在 localhost 访问日志中

我们正在运行 apache2、mod_jk 和 tomcat8。

我没有发现任何错误。任何帮助将不胜感激。谢谢!

【问题讨论】:

    标签: java apache tomcat networking mod-jk


    【解决方案1】:

    您的 tomcat 实例期望 IPv6 地址连接到端口 8080(tcp6 表示 ipv6 连接)。

    要在您的 TOMCAT_HOME\bin 目录中解决此问题,请创建一个名为 setenv.sh 的文件(如果它尚不存在)并添加以下内容

    JAVA_OPTS="$JAVA_OPTS -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses=true
    

    这将使 tomcat 在重新启动时绑定到 IPv4。

    您可以通过再次运行 netstat 命令来检查这一点,而不是看到 tcp6 for 8080 它应该只是说 tcp

    【讨论】:

    • 1.连接器的地址属性可用于指定 IPv4 或 IPv6 地址。
    • 2. IIRC,一个 Java 连接器实现(“Nio”,“Nio2”)将默认绑定到 IPv4 和 IPv6 地址(“双重”功能)。 3. Tomcat-Native 连接器(“Apr”)仅绑定到一个网络(IPv4 或 IPv6)。我认为它不受“java.net”系统属性的控制。 4. 在 OP 的 netstat 列表中,HTTPD 似乎只在 IPv6 和 Tomcat 上侦听。我想知道为什么连接到 HTTPD 会成功,如果这真的是 IPv4 与 IPv6 的问题。
    • 我必须将指定的 java_opts 添加到我的 tomcat 实例中,以使其绑定到 ipv4,因为我在本地 tomcat 实例中遇到了同样的问题。可能是 httpd 成功的原因是因为它正在查看 ipv4 和 ipv6 连接并进行翻译,而 tomcat 被严格设置为 ipv6
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多