0


502 Bad Gateway产生的原因以及8种详细的解决方法

在这里插入图片描述

文章目录

1. 复现错误

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

在这里插入图片描述

即报出

502 Bad Gateway

的错误信息,这个错误信息是什么,又该如何解决呢?

接下来,我便详细分析。

2. 分析错误

2.1 502系列错误代码

502 Bad Gateway

是一种

HTTP

协议的服务器端错误状态代码,它表示作为网关或代理角色的服务器,从上游服务器(如

tomcat

php-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. 原因1
DNS

缓冲,针对这种情况,通常是因为你在未开启

vpn

的情况下,访问了

facebook

这样的网站。

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

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

也可以尝试在

dos

窗口运行

ipconfig /flushdns

,该命令会刷新

DNS

缓冲。

  1. 原因2

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

  1. 原因3
dns

被劫持,即使使用国外的

dns

,也会被劫持。

有些机子开

vpn

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

排除了

代理、防火墙、本地网络

的原因,此时同时

ping

远程网站,比如

facebook

不能访问的机子,通常获取了一个怪异的

ip

, 从任何地方都

ping

不通的

ip

能访问的机子

ip

,在不能访问的机子上直接可以访问,也可以

ping

通。这种情况我们可以去掉

VPN

服务器的

DNS

切换另外的

dns

。在

windows

系统中,可以在本地网络连接的属性中, 去掉默认的

dns

,选用国外的

dns

,比如

google

opendns

4. 解决502错误的方法

Nginx 502 Bad Gateway

错误的原因及解决方法如下所示。

多数是后端的问题, 简单的情况,可以按

Ctrl + F5

强制刷新解决。

如果

Ctrl + F5

无法强制刷新,可以使用

Ctrl + Fn + F5

强制刷新。

php服务

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

  • max_requestst
  • 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_time

300

  1. 检查FastCGI进程是否启动

执行

linux

的如下命令,查看是否启动了

php-fpm

服务:

ps aux |grep php
  1. 检查FastCGI worker进程数是否足够

执行

linux

的如下命令:

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

判断是否接近

FastCGI

进程,接近配置文件中设置的数值,表明

worker

进程数设置太少。

  1. 检查FastCGI执行时间是否超时
PHP

程序执行时间超过了

Nginx

等待时间,可以适当增加

nginx.conf

配置文件中

FastCGI

timeout

时间,根据实际情况调高以下参数值:

fastcgi_connect_timeout 300;

fastcgi_send_timeout 300;

fastcgi_read_timeout 300;
  1. 检查FastCGI Buffer是否足够
nginx

apache

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

fastcgi_buffer_size 32k;

fastcgi_buffers 832k;
  1. 检查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 816k;
    fastcgi_buffer_size 32k;...}

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

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

这是使用了

nginx

反向代理的情况。

如果

header

过大,超出了默认的

1k

,就会引发

upstream sent too big header

,如下所示:

server {
    listen       80;
    server_name  *.test.com;

    location /{# 加这3行
        proxy_buffer_size 64k;
        proxy_buffers   3232k;
        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;...}}
  1. 检查默认的php-cgi的进程数设置是否过少

在安装好使用过程中出现

502

问题,一般是因为默认

php-cgi

进程是

5

个。

可能因为

phpcgi

进程不够用而造成

502

,需要修改

/usr/local/php/etc/php-fpm.conf

将其中的

max_children

的值适当增加,也有可能是

max_requests

的值不够用。

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

5. 补充说明

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

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

在种情况下,只有您的

ISP

可以帮助您。

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

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

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

6. 参考文档

  1. https://cloud.tencent.com/developer/article/1966434

本文转载自: https://blog.csdn.net/lvoelife/article/details/129561407
版权归原作者 互联网全栈开发实战 所有, 如有侵权,请联系我们删除。

“502 Bad Gateway产生的原因以及8种详细的解决方法”的评论:

还没有评论