• [运维] 请求 nginx 出现 502 Bad Gateway 的解决方案!


    环境: 

    云服务器镜像 Linux CentOS 7.6

    已经安装并成功配置 SSL 的 nginx 1.16.1

    成功安装并且可以正常运行的 apache-tomcat-9.0.26

    遇到的问题: 在服务器没有报错的情况下, 向服务器发送 HTTPS 请求时出现 502 Bad Gateway

    问题的前提: 

    (1) 在刚刚开始的时候是可以正常访问或请求, 可以接受 HTTP/HTTPS 请求

    (2) 一切运行正常, 没有修改 war 包, 代码也无异常

    正常情况下, 请求一个正常的接口, 是不可能出现超时现象的, 我的处理方案是

    [1] 按照前人的经验, 延长 nginx 的超时时间, nginx 配置如下

    http{
      ......
    fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300; fastcgi_buffer_size 64k; fastcgi_buffers 4 64k; fastcgi_busy_buffers_size 128k; fastcgi_temp_file_write_size 128k;
      ......
      server{
        ......
      }
    }

    然后关闭 nginx , 再打开

    [root@server nginx]#cd /usr/local/nginx/sbin
    [root@server sbin]# ./nginx -s quit
    [root@server sbin]# ./nginx

    然后会发现问题并没有解决, 依然还是 502 Bad Gateway

    为什么呢> 因为根本不是请求的时候时间不够用才超时的,  而是我们的服务器出了问题

    然后我习惯性的去查 Tomcat 的运行情况, 为什么不查 nginx 呢? 因为它只是一个中转站, 出问题的几率不大, 输入

    [root@server nginx]# ps -ef|grep tomcat

    看到的结果我震惊了!!!!

    root 20179  1 99 14:54 pts/0 00:00:28 /usr/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties 
                              -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
                              -Djdk.tls.ephemeralDHKeySize=2048
                              -Djava.protocol.handler.pkgs=org.apache.catalina.webresources
                              -Dorg.apache.catalina.security.SecurityListener.UMASK=0027
                              -Dignore.endorsed.dirs= -classpath /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
                              -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat
                              -Djava.io.tmpdir=/usr/local/tomcat/temp org.apache.catalina.startup.Bootstrap start
    root 20178  1 99 14:54 pts/0 00:00:38 /usr/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties 
                              -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
                              -Djdk.tls.ephemeralDHKeySize=2048
                              -Djava.protocol.handler.pkgs=org.apache.catalina.webresources
                              -Dorg.apache.catalina.security.SecurityListener.UMASK=0027
                              -Dignore.endorsed.dirs= -classpath /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
                              -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat
                              -Djava.io.tmpdir=/usr/local/tomcat/temp org.apache.catalina.startup.Bootstrap start

    root 20177  1 99 14:54 pts/0 00:00:48 /usr/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties 
                              -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
                              -Djdk.tls.ephemeralDHKeySize=2048
                              -Djava.protocol.handler.pkgs=org.apache.catalina.webresources
                              -Dorg.apache.catalina.security.SecurityListener.UMASK=0027
                              -Dignore.endorsed.dirs= -classpath /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
                              -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat
                              -Djava.io.tmpdir=/usr/local/tomcat/temp org.apache.catalina.startup.Bootstrap start
    root 20215 17425 0 14:54 pts/2 00:00:00 grep --color=auto tomcat

    可以看见, 居然有三个Tomcat 的进程在运行中, 我回想起来, 我当时在修改 server.xml 文件, 没有先关掉 Tomcat ,然后在没有关掉 Tomcat 的情况下又打开了一次 Tomcat, 然后发现配置没有生效, 然后关掉 Tomcat (./shutdown.sh) 又再一次打开 Tomcat (./startup.sh), 所以是服务器同时运行着多个 Java 项目, 估计 nginx 也懵逼了, 不知道该把请求给哪一个, 所以, 就超时了

    所以, 当出现这种情况,

    第一步  

    ps -ef|grep tomcat

    第二步

    kill -9 [pid]        也就是进程号

    把多余的进程杀掉, 再重启, 当然上述问题的原理我还没弄清楚, 有空再去研究

    当然还有一个可能就是, 你后台没有启动 Tomcat , 服务器上没有运行项目, 这时如果请求目标服务器的话也会出现  502 Bad Gateway

     没启动 Tomcat

     也是会出现这种问题的

  • 相关阅读:
    iOS UI基础05
    iOS UI基础04
    document.referrer
    节点
    特殊符号编码
    margin和padding的百分比
    XSS要点总结
    页面加载的过程
    函数声明和函数表达式
    jpg和png
  • 原文地址:https://www.cnblogs.com/unityworld/p/11889639.html
Copyright © 2020-2023  润新知