502 Bad Gateway产生的原因及8个详细的解决方法总结

 更新时间:2023年05月31日 08:55:11   作者:互联网全栈开发实战  
Nginx 502 Bad Gateway的错误已经遇到好几次了,这里做一下记录,备忘,下面这篇文章主要给大家介绍了关于502 Bad Gateway产生的原因及8个详细的解决方法,文中的介绍非常详细,需要的朋友可以参考下

1. 复现错误

今天打开某网站时,却报出如下的错误信息:

即报出502 Bad Gateway的错误信息,这个错误信息是什么,又该如何解决呢?

接下来,我便详细分析。

2. 分析错误

2.1 502系列错误代码

502 Bad Gateway是一种HTTP协议的服务器端错误状态代码,它表示作为网关或代理角色的服务器,从上游服务器(如tomcatphp-fpm)中接收到的响应是无效的。

Gateway (网关)在计算机网络体系中可以指代不同的设备,502错误通常不是客户端能够修复的,而是需要由途径的Web服务器或者代理服务器对其进行修复。

502系列错误代码如下列表所示:

  1. HTTP Error 502 Bad Gateway HTTP 错误502网关错误
  2. HTTP 502
  3. 502 Service Temporarily Overloaded 502 服务暂时超载
  4. Temporary Error (502) 临时错误 (502)
  5. 502 Server Error: The server encountered a temporary error and could not - - complete your 6. request 502 服务器错误:服务器遇到临时错误,无法完成您的请求
  6. 502 Bad Gateway Nginx 502 Nginx错误

2.2 5XX系列错误代码

  1. 500 Internal Server ErrorWeb 服务器遇到遇到阻止其无法完成其任务(即客户端请求)的条件时,将显示此错误
  2. 501 Not Implemented 服务器无法支持或识别请求方法。 它缺少处理请求的功能,因此它会响应此错误
  3. 502 Bad Gateway 服务器之间发生了错误,充当代理或网关时,您的服务器在尝试处理请求时未收到上游服务器的正确响应
  4. 503 Service Unavailable 由于正在进行维护或服务器当前过载而导致服务器无法处理请求的临时情况
  5. 504 Gateway Timeout 服务器再次充当代理或网关时,没有及时从另一个服务器(例如DNS)获得响应,因此它无法处理请求
  6. 505 HTTP Version Not Supported 当您的Web服务器不能或将不支持源自请求的HTTP协议版本时,将发生他的错误。 该错误通常包含服务器为什么不合作的描述。

3. 产生502错误的原因

连接超时,我们向服务器器发送请求时,由于服务器当前连接太多,导致服务器方面无法给于正常的响应,产生此类报错。

具体如所示:

原因1

DNS缓冲,针对这种情况,通常是因为你在未开启vpn的情况下,访问了facebook这样的网站。

此时,你自然访问不上,同时却在本机留下了缓冲。

这种情况通常在几分钟之内就可以访问了。

也可以尝试在dos窗口运行ipconfig /flushdns,该命令会刷新DNS缓冲。

原因2

你的浏览器开了代理什么的,确认一下关掉代理。

原因3

dns被劫持,即使使用国外的dns,也会被劫持。

有些机子开vpn能够访问,但有些机子不能。

排除了代理、防火墙、本地网络的原因,此时同时ping远程网站,比如facebook

不能访问的机子,通常获取了一个怪异的ip, 从任何地方都ping不通的ip

能访问的机子ip,在不能访问的机子上直接可以访问,也可以ping通。这种情况我们可以去掉VPN服务器的DNS

切换另外的dns。在windows系统中,可以在本地网络连接的属性中, 去掉默认的dns,选用国外的dns,比如googleopendns

4. 解决502错误的方法

Nginx 502 Bad Gateway错误的原因及解决方法如下所示。

多数是后端的问题, 简单的情况,可以按Ctrl + F5强制刷新解决。

如果Ctrl + F5无法强制刷新,可以使用Ctrl + Fn + F5强制刷新。

php服务当中,有两个参数非常的重要:

  1. max_requestst
  2. max_children

具体的原因,必须要查看日志,才可以弄明白!

1.检查PHP基础设置

修改/www/server/php/80/etc/php-fpm.conf文件中的request_terminate_timeout = 100 ,把100改成5

php执行超时,修改/usr/local/php/etc/php.ini文件中的max_execution_time, 将max_execution_time300

2.检查FastCGI进程是否启动

执行linux的如下命令,查看是否启动了php-fpm服务:

ps aux | grep php

3.检查FastCGI worker进程数是否足够

执行linux的如下命令:

netstat -anpo | grep “php-cgi” | wc -l

判断是否接近FastCGI进程,接近配置文件中设置的数值,表明worker进程数设置太少。

4.检查FastCGI执行时间是否超时

PHP程序执行时间超过了Nginx等待时间,可以适当增加nginx.conf配置文件中FastCGItimeout时间,根据实际情况调高以下参数值:

fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;

5.检查FastCGI Buffer是否足够

nginxapache一样,有前端缓冲限制,可以调整缓冲参数,如下所示:

fastcgi_buffer_size 32k;
fastcgi_buffers 8 32k;

6.检查FastCGI缓冲区的设置是否过小

首先查找nginx日志文件,目录/var/log/nginx,在日志中发现了如下错误:

[error] 15421
#0: *16 upstream sent too big header while reading response header from upstream

意思是nginx缓冲区bug造成,网站页面占用缓冲区可能过大。

增加缓冲区彻底解决了Nginx 502 Bad Gateway,方法如下:

http {
    ...
    fastcgi_buffers 8 16k;
    fastcgi_buffer_size 32k;
    ...
}

请根据服务器已经网站的情况自行增大上述两个配置项。

7.检查代理缓冲区的设置是否过小

这是使用了nginx反向代理的情况。

如果header过大,超出了默认的1k,就会引发upstream sent too big header,如下所示:

server {
    listen       80;
    server_name  *.test.com;
    location / {
        # 加这3行
        proxy_buffer_size 64k;
        proxy_buffers   32 32k;
        proxy_busy_buffers_size 128k;
        # 添加这3行
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP       $remote_addr;
        proxy_set_header X-Forwarded-For  $proxy_add_x_forwarded_for;
        ...
    }
}

8.检查默认的php-cgi的进程数设置是否过少

在安装好使用过程中出现502问题,一般是因为默认php-cgi进程是5个。

可能因为phpcgi进程不够用而造成502,需要修改/usr/local/php/etc/php-fpm.conf将其中的max_children的值适当增加,也有可能是max_requests的值不够用。

需要说明的是这连个配置项占用内存很大,请根据服务器配置进行设置。否则可能起到反效果。

5. 补充说明

如果您上网时在您尝试访问的所有网站上都看这个问题,有如下两种可能:

1.你的ISP重大设备故障/过载

在种情况下,只有您的ISP可以帮助您。

2.有问题的内部互联网连接如您的防火墙无法正常运作。

你需要解决什么,那是阻止你进入互联网。

如果您只有在部分尝试访问的网站中出现此问题,那很可能是一个问题,即这些网站之一,其设备故障或超载。联系你网站的管理员。

6. 参考文档

https://www.jb51.net/article/258603.htm

总结

到此这篇关于502 Bad Gateway产生的原因及8个详细的解决方法的文章就介绍到这了,更多相关502 Bad Gateway的原因及解决内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 一文了解nginx中的signal处理机制

    一文了解nginx中的signal处理机制

    nginx利用信号处理机制,可以捕获和处理各种信号,本文主要介绍了nginx中的signal处理机制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-05-05
  • nginx如何配置部署一个域名,多个端口

    nginx如何配置部署一个域名,多个端口

    文章主要讲述了在Windows下使用Nginx部署服务器的过程,包括配置Nginx、部署前端和后端项目、设置反向代理以及部署多个不同端口的项目
    2026-03-03
  • Nginx负载均衡之upstream模块简介与使用详解

    Nginx负载均衡之upstream模块简介与使用详解

    nginx有一个最大的功能就是可以实现服务器的负载均衡,下面这篇文章主要给大家介绍了关于Nginx负载均衡之upstream模块简介与使用的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-09-09
  • Nginx反向代理基本设置的21个指令详解

    Nginx反向代理基本设置的21个指令详解

    这篇文章主要介绍了Nginx反向代理基本设置的21个指令,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • nginx rewrite重写规则与防盗链配置方法教程详解

    nginx rewrite重写规则与防盗链配置方法教程详解

    这篇文章主要介绍了nginx rewrite重写规则与防盗链配置方法教程详解,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-09-09
  • nginx对http请求处理的各个阶段详析

    nginx对http请求处理的各个阶段详析

    这篇文章主要给大家介绍了关于nginx对http请求处理的各个阶段分析的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • 在Nginx中配置SSL的详细指南

    在Nginx中配置SSL的详细指南

    在当今的网络环境中,数据安全至关重要,SSL和 TLS为数据传输提供了加密保护,Nginx 是一款高性能的 Web 服务器,广泛应用于处理 HTTPS 请求,本文将详细介绍如何在 Nginx 中配置 SSL,需要的朋友可以参考下
    2025-06-06
  • Nginx日志实现访问异常报警详解

    Nginx日志实现访问异常报警详解

    Nginx把遇到的不同级别的问题信息写到错误日志。error_log 指令配置记录到特定的文件,stderr,或者syslog,配置写到日志的最低级别信息。下面这篇文章主要介绍了利用Nginx日志实现访问异常报警的相关资料,需要的朋友可以参考下。
    2017-03-03
  • Nginx反向代理与缓存实现代码

    Nginx反向代理与缓存实现代码

    文章系统解析Nginx反向代理核心配置、缓存机制、性能优化、安全防护及高级应用场景,涵盖负载均衡、缓存策略、限流规则、日志监控等关键内容,提供生产环境配置建议与云原生适配方案,助力高效部署与运维,感兴趣的朋友跟随小编一起看看吧
    2025-08-08
  • 高性能软件负载OpenResty介绍和安装使用详解

    高性能软件负载OpenResty介绍和安装使用详解

    OpenResty是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项,这篇文章主要介绍了高性能软件负载OpenResty介绍和安装,需要的朋友可以参考下
    2023-12-12

最新评论