Nginx 502 bad gateway错误解决的九种方案及原因

putongdeyang 2024-05-06 16:25:20电脑知识
57

前言

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

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

总结:php-cgi进程数不够用、php执行时间长、或者是php-cgi进程死掉,都会出现502错误.

Nginx 502 bad gateway.jpg

502系列错误代码

  • HTTP Error 502 Bad Gateway HTTP 错误 502 网关错误

  • HTTP 502

  • 502 Service Temporarily Overloaded 502 服务暂时超载

  • Temporary Error (502) 临时错误 (502)

  • 502 Server Error: The server encountered a temporary error and could not - - complete your request 502 服务器错误:服务器遇到临时错误,无法完成您的请求

  • 502 Bad Gateway Nginx 502 网关坏 Nginx

Nginx 502 bad gateway2.png

5XX系列错误代码

  • 500 Internal Server ErrorWeb 服务器遇到遇到阻止其无法完成其任务(即客户端请求)的条件时,将显示此错误

  • 501 Not Implemented 服务器无法支持或识别请求方法。 它缺少处理请求的功能,因此它会响应此错误

  • 502 Bad Gateway 服务器之间发生了错误,充当代理或网关时,您的服务器在尝试处理请求时未收到上游服务器的正确响应

  • 503 Service Unavailable 由于正在进行维护或服务器当前过载而导致服务器无法处理请求的临时情况

  • 504 Gateway Timeout 服务器再次充当代理或网关时,没有及时从另一个服务器(例如DNS)获得响应,因此它无法处理请求

  • 505 HTTP Version Not Supported 当您的Web服务器不能或将不支持源自请求的HTTP协议版本时,将发生他的错误。 该错误通常包含服务器为什么不合作的描述

Nginx 502 Bad Gateway 错误的原因及解决方法

多数是后端问题也就是PHP的问题, 简单的情况可以刷新(不是一般的刷新哦,Ctrl + F5 强制刷新)解决。在php服务当中,有两个参数非常的重要:max_requeststmax_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_time300

2、FastCGI进程是否已经启动

ps aux | grep php

查看是否启动了php-fpm服务;

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不够

nginx和apache一样,有前端缓冲限制,可以调整缓冲参数

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的值不够用。需要说明的是这连个配置项占用内存很大,请根据服务器配置进行设置。否则可能起到反效果。

9、其它原因

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

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

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

在种情况下,只有您的ISP可以帮助您。在第二种情况下,你需要解决什么,那是阻止你进入互联网。

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

总结

到此这篇关于Nginx 502 bad gateway错误解决的九种方案及原因的文章就介绍到这了,更多相关Nginx 502 bad gateway错误内容请搜索站长工具网以前的文章或继续浏览下面的相关文章希望大家以后多多支持站长工具网!

Nginx 502 bad gateway
THE END
战地网
频繁记录吧,生活的本意是开心

相关推荐

连接已重置怎么修复?Nginx访问网站出现连接已重置的解决方法
Nginx作为一款高性能的Web服务器和反向代理服务器,被广泛应用于各种规模的项目中。然而,在使用Nginx的过程中,有时会遇到“连接已重置”(Connection Reset)的问题,这会导...
2024-07-03 电脑知识
93

502 Bad Gateway是什么意思?出现502 Bad Gateway的原因及解决方法详解
在浏览网页时,我们偶尔会遇到一个错误页面,显示“502 Bad Gateway”。这个错误代码意味着什么?如何解决它?本文zhanid将详细探讨502 Bad Gateway错误的含义、产生原因以及相...
2024-07-01 电脑知识
84

Nginx从哪个版本开始支持HTTP/3协议
Nginx从1.25版本开始正式支持QUIC和HTTP/3协议。特别是从1.25.0版本开始,Linux环境下的Nginx二进制包就已经内建了QUIC和HTTP/3的支持。然而这些新支持的协议目前仍处于实验性...
2024-06-27 电脑知识
63

Nginx安装配置详解
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。本文详细讲解了Nginx安装与配置的方法,对大家的学习或者工作具有一定的参考学习...
2024-06-13 电脑知识
59

Nginx和Apache伪静态规则怎么写?两者有什么区别?
Nginx和Apache都是广泛使用的HTTP服务器软件,它们都可以用于托管网站和服务。虽然它们都能处理伪静态规则,但在配置和处理方式上有一些不同。在这篇文章中,ZHANID将探讨如何...
2024-06-05 站长之家
77

Gzip压缩是什么?Nginx开启Gzip压缩方法详解
Gzip是一种广泛使用的数据压缩格式,它可以有效减少网络传输的数据量,从而加快网页加载速度。本文将详细介绍Nginx开启Gzip压缩的方法,以及如何配置Gzip压缩来优化网站性能。...
2024-06-04 站长之家
69