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


Posted in Servers onAugust 14, 2022

前言

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

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

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

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

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 gateway错误解决的九种方案及原因

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错误内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!


Tags in this post...

Servers 相关文章推荐
本地通过nginx配置反向代理的全过程记录
Mar 31 Servers
如何在centos上使用yum安装rabbitmq-server
Mar 31 Servers
小程序后台PHP版本部署运行 LNMP+WNMP
Apr 01 Servers
详解使用内网穿透工具Ngrok代理本地服务
Mar 31 Servers
微信告警的zabbix监控系统 监控整个NGINX集群
Apr 18 Servers
IIS服务器中设置HTTP重定向访问HTTPS
Apr 29 Servers
Tomcat弱口令复现及利用
May 06 Servers
windows server 2012安装FTP并配置被动模式指定开放端口
Jun 10 Servers
Windows Server 修改远程桌面端口的实现
Jun 25 Servers
Win2008系统搭建DHCP服务器
Jun 25 Servers
Windows Server 2012 R2服务器安装与配置的完整步骤
Jul 15 Servers
keepalived + nginx 实现高可用方案
Dec 24 Servers
Tomcat安装使用及部署Web项目的3种方法汇总
Aug 14 #Servers
SpringBoot前端后端分离之Nginx服务器下载安装过程
Docker容器harbor私有仓库部署和管理
Aug 05 #Servers
Centos7 Shell编程之正则表达式、文本处理工具详解
Aug 05 #Servers
Nginx使用ngx_http_upstream_module实现负载均衡功能示例
Aug 05 #Servers
Nginx跨域问题解析与解决
Aug 05 #Servers
win10搭建配置ftp服务器的方法
Aug 05 #Servers
You might like
动漫定律:眯眯眼都是怪物!这些角色狠话不多~
2020/03/03 日漫
全国FM电台频率大全 - 23 四川省
2020/03/11 无线电
php array的学习笔记
2012/05/10 PHP
PHP获取当前页面完整URL的实现代码
2013/06/10 PHP
PHP实现的汉字拼音转换和公历农历转换类及使用示例
2014/07/01 PHP
php上传图片之时间戳命名(保存路径)
2014/08/15 PHP
全面解读PHP的人气开发框架Laravel
2015/10/15 PHP
PHP读取mssql json数据中文乱码的解决办法
2016/04/11 PHP
一个简单的php MVC留言本实例代码(必看篇)
2016/09/22 PHP
PHP实现的获取文件mimes类型工具类示例
2018/04/08 PHP
在php的yii2框架中整合hbase库的方法
2018/09/20 PHP
JavaScript 学习笔记(十二) dom
2010/01/21 Javascript
Extjs在exlipse中设置自动提示的方法
2010/04/07 Javascript
javascript制作loading动画效果 loading效果
2014/01/14 Javascript
JS案例分享之金额小写转大写
2014/05/15 Javascript
jQuery插件开发详细教程
2014/06/06 Javascript
jQuery数据缓存用法分析
2015/02/20 Javascript
jquery实现点击label的同时触发文本框点击事件的方法
2015/06/05 Javascript
Ext JS框架程序中阻止键盘触发回退或者刷新页面的代码分享
2016/06/07 Javascript
使用jquery实现的循环连续可停顿滚动实例
2016/11/23 Javascript
js实现键盘自动打字效果
2016/12/23 Javascript
zTree实现节点修改的实时刷新功能
2017/03/20 Javascript
Vue 按键修饰符处理事件的方法
2018/05/04 Javascript
vue中解决微信html5原生ios虚拟键返回不刷新问题
2020/10/20 Javascript
python操作字典类型的常用方法(推荐)
2016/05/16 Python
Python 稀疏矩阵-sparse 存储和转换
2017/05/27 Python
python pandas中对Series数据进行轴向连接的实例
2018/06/08 Python
Python设计模式之原型模式实例详解
2019/01/18 Python
Python中三元表达式的几种写法介绍
2019/03/04 Python
Python实现简单的列表冒泡排序和反转列表操作示例
2019/07/10 Python
python各种excel写入方式的速度对比
2020/11/10 Python
Flask-SocketIO服务端安装及使用代码示例
2020/11/26 Python
一款基于css3和jquery实现的动画显示弹出层按钮教程
2015/01/04 HTML / CSS
印尼第一大家居、生活和家具电子商务:Ruparupa
2019/11/25 全球购物
美国相机和电子产品零售商:Beach Camera
2020/11/26 全球购物
Python初学者必备的文件读写指南
2021/06/23 Python