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四层负载均衡的配置指南
Jun 11 Servers
Nginx源码编译安装过程记录
Nov 17 Servers
nginx日志格式分析和修改
Apr 28 Servers
排查Tomcat进程假死的问题
May 06 Servers
nginx rewrite功能使用场景分析
May 30 Servers
windows server 2012安装FTP并配置被动模式指定开放端口
Jun 10 Servers
Linux服务器离线安装 nginx的详细步骤
Jun 16 Servers
Zabbix对Kafka topic积压数据监控的问题(bug优化)
Jul 07 Servers
GPU服务器的多用户配置方法
Jul 07 Servers
源码安装apache脚本部署过程详解
Sep 23 Servers
ubuntu20.04虚拟机无法上网的问题及解决
Dec 24 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学习 函数 课件
2008/06/15 PHP
PHP中Enum(枚举)用法实例详解
2015/12/07 PHP
JQuery select标签操作代码段
2010/05/16 Javascript
javascript面向对象编程(一) 实例代码
2010/06/25 Javascript
JS基础之undefined与null的区别分析
2011/08/08 Javascript
jquery实现多级下拉菜单的实例代码
2013/10/02 Javascript
JavaScript设计模式之策略模式实例
2014/10/10 Javascript
Angular发布1.5正式版,专注于向Angular 2的过渡
2016/02/18 Javascript
jQuery 选择符详细介绍及整理
2016/12/02 Javascript
jQuery点击导航栏选中更换样式的实现代码
2017/01/23 Javascript
vue2项目使用sass的示例代码
2017/06/28 Javascript
使用Vue开发一个实时性时间转换指令
2018/01/17 Javascript
node thread.sleep实现示例
2018/06/20 Javascript
layui实现文件或图片上传记录
2018/08/28 Javascript
jQuery实现鼠标放置名字上显示详细内容气泡提示框效果的方法分析
2020/04/04 jQuery
koa中间件核心(koa-compose)源码解读分析
2020/06/15 Javascript
如何手写简易的 Vue Router
2020/10/10 Javascript
vant 解决tab切换插件标题样式自定义的问题
2020/11/13 Javascript
[05:09]2016国际邀请赛中国区预选赛淘汰赛首日精彩回顾
2016/06/29 DOTA
[01:10:03]OG vs EG 2018国际邀请赛淘汰赛BO3 第三场 8.23
2018/08/24 DOTA
寻找网站后台地址的python脚本
2014/09/01 Python
使用Python从有道词典网页获取单词翻译
2016/07/03 Python
浅谈python str.format与制表符\t关于中文对齐的细节问题
2019/01/14 Python
Python argparse模块应用实例解析
2019/11/15 Python
Pytorch 计算误判率,计算准确率,计算召回率的例子
2020/01/18 Python
Python实现企业微信机器人每天定时发消息实例
2020/02/25 Python
Python tkinter界面实现历史天气查询的示例代码
2020/08/23 Python
css3 border-image使用说明
2010/06/23 HTML / CSS
amazeui时间组件的实现示例
2020/08/18 HTML / CSS
印度网上药店:1mg
2017/10/13 全球购物
北京天润融通.net面试题笔试题
2012/02/20 面试题
中文专业毕业生自荐信
2014/05/24 职场文书
女方家长婚礼致辞
2015/07/27 职场文书
长辈生日祝福语大全(72句)
2019/08/09 职场文书
.Net Core导入千万级数据至Mysql的步骤
2021/05/24 MySQL
Java中的随机数Random
2022/03/17 Java/Android