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工作原理和优化总结。
Apr 02 Servers
制作能在nginx和IIS中使用的ssl证书
Jun 21 Servers
nginx的zabbix 5.0安装部署的方法步骤
Jul 16 Servers
centos8安装nginx1.9.1的详细过程
Aug 02 Servers
解决使用了nginx获取IP地址都是127.0.0.1 的问题
Sep 25 Servers
Nginx+Tomcat负载均衡集群的实现示例
Oct 24 Servers
Nginx 路由转发和反向代理location配置实现
Nov 11 Servers
CentOS7和8下安装Maven3.8.4
Apr 07 Servers
Tomcat执行startup.bat出现闪退的原因及解决办法
Apr 20 Servers
Nginx利用Logrotate实现日志分割
May 20 Servers
WinServer2012搭建DNS服务器的方法步骤
Jun 10 Servers
腾讯云服务器部署前后分离项目之前端部署
Jun 28 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 mysql 判断update之后是否更新了的方法
2012/01/10 PHP
PHP的Yii框架中创建视图和渲染视图的方法详解
2016/03/29 PHP
PHP 计算至少是其他数字两倍的最大数的实现代码
2020/05/26 PHP
Javascript 面向对象 重载
2010/05/13 Javascript
基于node.js的快速开发透明代理
2010/12/25 Javascript
js实现简洁的滑动门菜单(选项卡)效果代码
2015/09/04 Javascript
jQuery Easyui学习教程之实现datagrid在没有数据时显示相关提示内容
2016/07/09 Javascript
微信小程序 scroll-view组件实现列表页实例代码
2016/12/14 Javascript
总结JavaScript在IE9之前版本中内存泄露问题
2018/04/28 Javascript
cnpm加速Angular项目创建的方法
2018/09/07 Javascript
微信小程序前端promise封装代码实例
2019/08/24 Javascript
JavaScript 面向对象基础简单示例
2019/10/02 Javascript
vue 实现强制类型转换 数字类型转为字符串
2019/11/07 Javascript
Vue前端判断数据对象是否为空的实例
2020/09/02 Javascript
Python scikit-learn 做线性回归的示例代码
2017/11/01 Python
Python使用reportlab模块生成PDF格式的文档
2019/03/11 Python
Python实现字符串匹配的KMP算法
2019/04/04 Python
对Django中的权限和分组管理实例讲解
2019/08/16 Python
Python包,__init__.py功能与用法分析
2020/01/07 Python
Python JSON编解码方式原理详解
2020/01/20 Python
Python爬虫爬取博客实现可视化过程解析
2020/06/29 Python
matplotlib基础绘图命令之errorbar的使用
2020/08/13 Python
python Scrapy爬虫框架的使用
2021/01/21 Python
如何开发一款堪比APP的微信小程序(腾讯内部团队分享)
2016/12/22 HTML / CSS
HTML5之SVG 2D入门11—用户交互性(动画)介绍及应用
2013/01/30 HTML / CSS
金宝贝童装官网:Gymboree
2016/08/31 全球购物
用Python写一个for循环的例子
2016/07/19 面试题
应届毕业生自我鉴定范文
2013/12/27 职场文书
《会变的花树叶》教学反思
2014/02/10 职场文书
《小白兔和小灰兔》教学反思
2014/02/18 职场文书
项目经理聘任书
2014/03/29 职场文书
俞敏洪励志演讲稿
2014/04/29 职场文书
青春奉献演讲稿
2014/05/08 职场文书
优秀共青团员事迹材料
2014/12/25 职场文书
2016年小学植树节活动总结
2016/03/16 职场文书
JavaScript原型链中函数和对象的理解
2022/06/16 Javascript