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实现上游服务器动态自动上下线无需reload的实现方法
Mar 31 Servers
Nginx下配置Https证书详细过程
Apr 01 Servers
利用Nginx代理如何解决前端跨域问题详析
Apr 02 Servers
关于nginx 实现jira反向代理的问题
Sep 25 Servers
Nginx反向代理学习实例教程
Oct 24 Servers
Nginx性能优化之Gzip压缩设置详解(最大程度提高页面打开速度)
Feb 12 Servers
Nginx配置根据url参数重定向
Apr 11 Servers
阿里云ECS云服务器快照的概念以及如何使用
Apr 21 Servers
解决IIS7下无法绑定https主机的问题
Apr 29 Servers
openEuler 搭建java开发环境的详细过程
Jun 10 Servers
Nginx文件已经存在全局反向代理问题排查记录
Jul 15 Servers
Nginx 502 bad gateway错误解决的九种方案及原因
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写出自己的BLOG系统 2
2010/04/12 PHP
php和editplus正则表达式去除空白行
2015/04/17 PHP
ThinkPHP中数据操作案例分析
2015/09/27 PHP
phpstudy2020搭建站点的实现示例
2020/10/30 PHP
Javascript 不能释放内存.
2006/09/07 Javascript
jquery动画1.加载指示器
2012/08/24 Javascript
仿百度联盟对联广告实现代码
2014/08/30 Javascript
javascript实现图片自动和可控的轮播切换特效
2015/04/13 Javascript
jQuery拖动元素并对元素进行重新排序
2015/12/30 Javascript
动态JavaScript所造成一些你不知道的危害
2016/09/25 Javascript
jQuery动态添加与删除tr行实例代码
2016/10/18 Javascript
JavaScript交换两个变量值的七种解决方案
2016/12/01 Javascript
详解Node 定时器
2018/02/26 Javascript
vue router 配置路由的方法
2018/07/26 Javascript
JQuery Ajax动态加载Table数据的实例讲解
2018/08/09 jQuery
基于Webpack4和React hooks搭建项目的方法
2019/02/05 Javascript
微信小程序实现搜索历史功能
2020/03/26 Javascript
JavaScript利用键盘码控制div移动
2020/03/19 Javascript
结合axios对项目中的api请求进行封装操作
2020/09/21 Javascript
elementui实现预览图片组件二次封装
2020/12/29 Javascript
python操作MySQL数据库具体方法
2013/10/28 Python
Python实现的特征提取操作示例
2018/12/03 Python
使用python实现CGI环境搭建过程解析
2020/04/28 Python
django数据模型中null和blank的区别说明
2020/09/02 Python
Django 权限管理(permissions)与用户组(group)详解
2020/11/30 Python
python爬虫利用selenium实现自动翻页爬取某鱼数据的思路详解
2020/12/22 Python
纯css3使用vw和vh实现自适应的方法
2018/02/09 HTML / CSS
美国保健品专家:Life Extension
2018/05/04 全球购物
平面设计自荐信
2013/10/07 职场文书
公司领导班子对照检查材料
2014/09/24 职场文书
内乡县衙导游词
2015/02/05 职场文书
2015初中政治教学工作总结
2015/07/21 职场文书
2016年党员学习廉政准则心得体会
2016/01/20 职场文书
小学语文的各类谚语(70首)
2019/08/15 职场文书
Redis之RedisTemplate配置方式(序列和反序列化)
2022/03/13 Redis
Redis+AOP+自定义注解实现限流
2022/06/28 Redis