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


Posted in Servers onMarch 31, 2021

Nginx 502 Bad Gateway 的错误已经遇到好几次了,这里做一下记录,备忘哈哈。

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

会有好多种情况出现502错误,下面我们分情况来说一下。

一、fastcgi缓冲区设置过小

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

2013/01/17 13:33:47 [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;
  ...
}

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

二、代理缓冲区设置过小

如果你使用的是nginx反向代理,如果header过大,超出了默认的1k,就会引发上述的upstream sent too big header (说白了就是nginx把外部请求给后端处理,后端返回的header太大,nginx处理不过来就会导致502。

server {
    listen    80;
    server_name *.lxy.me;
    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;
............
}

三、默认php-cgi的进程数设置过少

在安装好使用过程中出现502问题,一般是因为默认php-cgi进程是5个,可能因为phpcgi进程不够用而造成502,需要修改/usr/local/php/etc/php-fpm.conf 将其中的max_children值适当增加。也有可能是max_requests值不够用。需要说明的是这连个配置项占用内存很大,请根据服务器配置进行设置。否则可能起到反效果。

四、php执行超时

php执行超时,修改/usr/local/php/etc/php.ini 将max_execution_time 改为300

五、nginx等待时间超时

部分PHP程序的执行时间超过了Nginx的等待时间,可以适当增加nginx.conf配置文件中FastCGI的timeout时间

http {
 fastcgi_connect_timeout 300;
 fastcgi_send_timeout 300;
 fastcgi_read_timeout 300;
 .....
 }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Servers 相关文章推荐
nginx前后端同域名配置的方法实现
Mar 31 Servers
nginx反向代理时如何保持长连接
Mar 31 Servers
提升Nginx性能的一些建议
Mar 31 Servers
详解Nginx 被动检查服务器的存活状态
Oct 16 Servers
基于Apache Hudi在Google云构建数据湖平台的思路详解
Apr 07 Servers
微信告警的zabbix监控系统 监控整个NGINX集群
Apr 18 Servers
CentOS7安装MySQL8的超级详细教程(无坑!)
Jun 10 Servers
WIN10使用IIS部署ftp服务器详细教程
Aug 05 Servers
ssh服务器拒绝了密码 请再试一次已解决(亲测有效)
Aug 14 Servers
nginx配置指令之server_name的具体使用
Aug 14 Servers
服务器nginx权限被拒绝解决案例
Sep 23 Servers
Nginx访问日志及错误日志参数说明
Mar 31 #Servers
nginx对http请求处理的各个阶段详析
Mar 31 #Servers
Nginx服务器添加Systemd自定义服务过程解析
Mar 31 #Servers
nginx处理http请求实现过程解析
Mar 31 #Servers
Nginx服务器添加Systemd自定义服务过程解析
Mar 31 #Servers
nginx处理http请求实现过程解析
Mar 31 #Servers
Nginx开启Brotli压缩算法实现过程详解
You might like
php中使用preg_replace函数匹配图片并加上链接的方法
2013/02/06 PHP
php中ltrim()、rtrim()与trim()删除字符空格实例
2014/11/25 PHP
php如何利用pecl安装mongodb扩展详解
2019/01/09 PHP
javascript 面向对象编程 聊聊对象的事
2009/09/17 Javascript
通过身份证号得到出生日期和性别的js代码
2009/11/23 Javascript
javascript Object与Function使用
2010/01/11 Javascript
基于JavaScript 声明全局变量的三种方式详解
2013/05/07 Javascript
jQuery多级手风琴菜单实例讲解
2015/10/22 Javascript
用jQuery向div中添加Html文本内容的简单实现
2016/07/13 Javascript
canvas知识总结
2017/01/25 Javascript
老生常谈combobox和combotree模糊查询
2017/04/17 Javascript
微信小程序 滚动到某个位置添加class效果实现代码
2017/04/19 Javascript
vue组件Prop传递数据的实现示例
2017/08/17 Javascript
vue更改数组中的值实例代码详解
2020/02/07 Javascript
vue element table中自定义一些input的验证操作
2020/07/18 Javascript
Handtrack.js库实现实时监测手部运动(推荐)
2021/02/08 Javascript
[39:46]完美世界DOTA2联赛PWL S2 LBZS vs Rebirth 第二场 11.25
2020/11/25 DOTA
Python编程中的反模式实例分析
2014/12/08 Python
Python导入txt数据到mysql的方法
2015/04/08 Python
用Python的Django框架来制作一个RSS阅读器
2015/07/22 Python
基于Django模板中的数字自增(详解)
2017/09/05 Python
详解pandas中MultiIndex和对象实际索引不一致问题
2019/07/23 Python
Python更新所有已安装包的操作
2020/02/13 Python
基于Numba提高python运行效率过程解析
2020/03/02 Python
django自带的权限管理Permission用法说明
2020/05/13 Python
Python3 用matplotlib绘制sigmoid函数的案例
2020/12/11 Python
详解Canvas 实现炫丽的粒子运动效果(粒子生成文字)
2018/02/01 HTML / CSS
Bugatchi官方网站:男士服装在线
2019/04/10 全球购物
什么是Rollback Segment
2013/04/22 面试题
可以使用抽象函数重写基类中的虚函数吗
2013/06/02 面试题
工厂仓管员岗位职责
2014/01/01 职场文书
2014年大学生党课心得体会范文
2014/03/29 职场文书
作文评语大全
2014/04/23 职场文书
大学生入党积极分子党校学习思想汇报
2014/10/25 职场文书
python 自动刷新网页的两种方法
2021/04/20 Python
Nginx文件已经存在全局反向代理问题排查记录
2022/07/15 Servers