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简单配置多个server的方法
Mar 31 Servers
Nginx设置日志打印post请求参数的方法
Mar 31 Servers
nginx反向代理时如何保持长连接
Mar 31 Servers
Mac环境Nginx配置和访问本地静态资源的实现
Mar 31 Servers
Nginx防盗链与服务优化配置的全过程
Jan 18 Servers
Windows server 2012 配置Telnet以及用法详解
Apr 28 Servers
Nginx的gzip相关介绍
May 11 Servers
linux目录管理方法介绍
Jun 01 Servers
Linux服务器离线安装 nginx的详细步骤
Jun 16 Servers
解决Git推送错误non-fast-forward的方法
Jun 25 Servers
windows系统安装配置nginx环境
Jun 28 Servers
Nginx报错104:Connection reset by peer问题的解决及分析
Jul 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
Laravel SQL语句记录方式(推荐)
2016/05/26 PHP
Yii框架ACF(accessController)简单权限控制操作示例
2019/04/26 PHP
json简单介绍
2008/06/10 Javascript
关于js获取radio和select的属性并控制的代码
2011/05/12 Javascript
ajax不执行success回调而是执行了error回调
2012/12/10 Javascript
常见表单重复提交问题整理及解决方法
2013/11/13 Javascript
js使用removeChild方法动态删除div元素
2014/08/01 Javascript
Jquery日期选择datepicker插件用法实例分析
2015/06/08 Javascript
javascript中caller和callee详解
2015/08/10 Javascript
jQuery视差滚动效果网页实现方法经验总结
2016/09/29 Javascript
Angular实现预加载延迟模块的示例
2017/10/12 Javascript
vue2中引用及使用 better-scroll的方法详解
2018/11/15 Javascript
countup.js实现数字动态叠加效果
2019/10/17 Javascript
autojs 蚂蚁森林能量自动拾取即给指定好友浇水的实现方法
2020/05/03 Javascript
Vue中watch、computed、updated三者的区别及用法
2020/07/27 Javascript
axios解决高并发的方法:axios.all()与axios.spread()的操作
2020/11/09 Javascript
[03:59]第二届DOTA2亚洲邀请赛选手传记-VGJ.rOtk
2017/04/03 DOTA
写了个监控nginx进程的Python脚本
2012/05/10 Python
简单的通用表达式求10乘阶示例
2014/03/03 Python
linux平台使用Python制作BT种子并获取BT种子信息的方法
2017/01/20 Python
10分钟用python搭建一个超好用的CMDB系统
2019/07/17 Python
详解numpy.meshgrid()方法使用
2019/08/01 Python
python可视化篇之流式数据监控的实现
2019/08/07 Python
一行Python代码过滤标点符号等特殊字符
2019/08/12 Python
Python实现使用dir获取类的方法列表
2019/12/24 Python
Python3如何在Windows和Linux上打包
2020/02/25 Python
python读取多层嵌套文件夹中的文件实例
2020/02/27 Python
美国儿童服装、家具和玩具精品店:Maisonette
2019/11/24 全球购物
Ibatis的核心配置文件都有什么
2014/09/08 面试题
劳资员岗位职责
2013/11/11 职场文书
“四风”查摆问题自我剖析材料
2014/09/27 职场文书
2014学习十八届四中全会精神思想汇报范文
2014/10/23 职场文书
装配车间主任岗位职责
2015/04/08 职场文书
导游词之珠海轮廓
2019/10/25 职场文书
python设置 matplotlib 正确显示中文的四种方式
2021/05/10 Python
Go timer如何调度
2021/06/09 Golang