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
apache基于端口创建虚拟主机的示例
Apr 22 Servers
配置nginx 重定向到系统维护页面
Jun 08 Servers
Linux中Nginx的防盗链和优化的实现代码
Jun 20 Servers
Nginx实现负载均衡的项目实践
Mar 18 Servers
配置Kubernetes外网访问集群
Mar 31 Servers
忘记Grafana不要紧2种Grafana重置admin密码方法详细步骤
Apr 07 Servers
阿里云k8s服务升级时502错误 springboot项目应用
Apr 09 Servers
Docker官方工具docker-registry案例演示
Apr 13 Servers
nginx 配置指令之location使用详解
May 25 Servers
nginx静态资源的服务器配置方法
Jul 07 Servers
CentOS7设置ssh服务以及端口修改方式
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
数据库相关问题
2006/10/09 PHP
下载文件的点击数回填
2006/10/09 PHP
php5 mysql分页实例代码
2008/04/10 PHP
《PHP编程最快明白》第五讲:php目录、文件操作
2010/11/01 PHP
destoon首页调用求购供应信息的地区名称的方法
2014/08/21 PHP
用PHP生成excel文件到指定目录
2015/06/22 PHP
PHP编辑器PhpStrom运行缓慢问题
2017/02/21 PHP
PHP不使用内置函数实现字符串转整型的方法示例
2017/07/03 PHP
解决laravel-admin 自己新建页面里 js 需要刷新一次的问题
2019/10/03 PHP
通过Unicode转义序列来加密,按你说的可以算是混淆吧
2007/05/06 Javascript
jquery中的 $("#jb51")与document.getElementById("jb51") 的区别
2011/07/26 Javascript
javascript改变position值实现菜单滚动至顶部后固定
2013/01/18 Javascript
Javascript Web Slider 焦点图示例源码
2013/10/10 Javascript
jQuery编程中的一些核心方法简介
2015/08/14 Javascript
JS随机打乱数组的方法小结
2016/06/22 Javascript
js前端实现多图图片上传预览的两个方法(推荐)
2016/11/18 Javascript
jQuery中的select操作详解
2016/11/29 Javascript
深入理解javascript函数参数与闭包
2016/12/12 Javascript
vue实现局部刷新的实现示例
2019/04/16 Javascript
vue elementUI 表单校验功能之数组多层嵌套
2019/06/04 Javascript
vue-cli3添加模式配置多环境变量的方法
2019/06/05 Javascript
微信小程序图片左右摆动效果详解
2019/07/13 Javascript
[01:45]DOTA2众星出演!DSPL刀塔次级职业联赛宣传片
2014/11/21 DOTA
用python 批量更改图像尺寸到统一大小的方法
2018/03/31 Python
Python加速程序运行的方法
2020/07/29 Python
Python使用xpath实现图片爬取
2020/09/16 Python
Python字符串查找基本操作代码案例
2020/10/27 Python
利用CSS3的flexbox实现水平垂直居中与三列等高布局
2016/09/12 HTML / CSS
学年自我鉴定范文
2013/10/01 职场文书
名人演讲稿范文
2013/12/28 职场文书
《灯光》教学反思
2014/02/08 职场文书
开学季活动策划方案
2014/02/28 职场文书
简历自荐信范文
2015/03/09 职场文书
《正面管教》读后有感:和善而坚定的旅程
2019/12/19 职场文书
MySQL pt-slave-restart工具的使用简介
2021/04/07 MySQL
解决MySQL添加新用户-ERROR 1045 (28000)的问题
2022/03/03 MySQL