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
fastdfs+nginx集群搭建的实现
Mar 31 Servers
nginx的zabbix 5.0安装部署的方法步骤
Jul 16 Servers
关于Nginx中虚拟主机的一些冷门知识小结
Mar 03 Servers
nginx中封禁ip和允许内网ip访问的实现示例
Mar 17 Servers
Apache Hudi数据布局黑科技降低一半查询时间
Mar 31 Servers
阿里云日志过滤器配置日志服务
Apr 09 Servers
KVM基础命令详解
Apr 30 Servers
Nginx限流和黑名单配置
May 20 Servers
winserver2019安装软件一直卡在应用程序正在为首次使用做准备
Jun 10 Servers
Nginx配置使用详解
Jul 07 Servers
Windows Server 2016服务器用户管理及远程授权图文教程
Aug 14 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获取字符串的编码格式的方法(函数)
2013/06/21 PHP
smarty模板引擎之分配数据类型
2015/03/30 PHP
PHP实现根据数组的值进行分组的方法
2017/04/20 PHP
PHP面向对象五大原则之单一职责原则(SRP)详解
2018/04/04 PHP
Thinkphp5 自定义上传文件名的实现方法
2019/07/23 PHP
PHPstorm启用自动换行的方法详解(IDE)
2020/09/17 PHP
javascript 类型判断代码分析
2010/03/28 Javascript
jQuery 锚点跳转滚动条平滑滚动一句话代码
2010/04/30 Javascript
JavaScript的document对象和window对象详解
2010/12/30 Javascript
判断及设置浏览器全屏模式
2014/04/20 Javascript
javascript获取select值的方法分析
2015/07/02 Javascript
使用Angular和Nodejs、socket.io搭建聊天室及多人聊天室
2015/08/21 NodeJs
Bootstrap与KnockoutJs相结合实现分页效果实例详解
2016/05/03 Javascript
如何解决IONIC页面底部被遮住无法向上滚动问题
2016/09/06 Javascript
javascript函数的节流[throttle]与防抖[debounce]
2017/11/15 Javascript
Angularjs Promise实例详解
2018/03/15 Javascript
nodejs实现聊天机器人功能
2019/09/19 NodeJs
JavaScript 作用域实例分析
2019/10/02 Javascript
JavaScript canvas绘制折线图
2020/02/18 Javascript
基于vue+echarts 数据可视化大屏展示的方法示例
2020/03/09 Javascript
JS数组push、unshift、pop、shift方法的实现与使用方法示例
2020/04/29 Javascript
[07:54]DOTA2 MV《我的动力鞋》 ImbaTV 出品
2014/11/21 DOTA
[44:40]2018DOTA2亚洲邀请赛3月30日 小组赛A组Liquid VS OG
2018/03/31 DOTA
pandas创建新Dataframe并添加多行的实例
2018/04/08 Python
终端命令查看TensorFlow版本号及路径的方法
2018/06/13 Python
使用Python实现毫秒级抢单功能
2019/06/06 Python
PYTHON发送邮件YAGMAIL的简单实现解析
2019/10/28 Python
基于python的列表list和集合set操作
2019/11/24 Python
解决python3.6用cx_Oracle库连接Oracle的问题
2020/12/07 Python
Europcar意大利:汽车租赁
2019/07/07 全球购物
英文版网络工程师求职信
2013/10/28 职场文书
高中化学教学反思
2014/01/13 职场文书
新颖的化妆品活动方案
2014/08/21 职场文书
学生个人总结范文
2015/02/15 职场文书
银行大堂经理培训心得体会
2016/01/09 职场文书
python读取并查看npz/npy文件数据以及数据显示方法
2022/04/14 Python