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
如何利用map实现Nginx允许多个域名跨域
Mar 31 Servers
Nginx配置https原理及实现过程详解
Mar 31 Servers
Mac环境Nginx配置和访问本地静态资源的实现
Mar 31 Servers
使用nginx配置访问wgcloud的方法
Jun 26 Servers
关于Nginx中虚拟主机的一些冷门知识小结
Mar 03 Servers
详解如何使用Nginx解决跨域问题
May 06 Servers
基于docker安装zabbix的详细教程
Jun 05 Servers
nginx之内存池的实现
Jun 28 Servers
Nginx如何配置根据路径转发详解
Jul 23 Servers
windows系统搭建WEB服务器详细教程
Aug 05 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
改造一台复古桌面收音机
2021/03/02 无线电
php db类库进行数据库操作
2009/03/19 PHP
解析Ubuntu下crontab命令的用法
2013/06/24 PHP
PHP $_FILES中error返回值详解
2014/01/30 PHP
php简单实现MVC
2015/02/05 PHP
Yii2中DropDownList简单用法示例
2016/07/18 PHP
php微信公众号开发之微信企业付款给个人
2018/10/04 PHP
laravel 判断查询数据库返回值的例子
2019/10/11 PHP
另类调用flash无须激活的方法
2006/12/27 Javascript
拉动滚动条加载数据的jquery代码
2012/05/03 Javascript
js遍历、动态的添加数据的小例子
2013/06/22 Javascript
父元素与子iframe相互获取变量和元素对象的具体实现
2013/10/15 Javascript
Jquery遍历checkbox获取选中项value值的方法
2014/02/13 Javascript
Javascript技术栈中的四种依赖注入小结
2016/02/27 Javascript
AngularJS辅助库browserTrigger用法示例
2016/11/03 Javascript
学习 NodeJS 第八天:Socket 通讯实例
2016/12/21 NodeJs
微信小程序-获得用户输入内容
2017/02/13 Javascript
Bootstrap fileinput组件封装及使用详解
2017/03/10 Javascript
使用gulp搭建本地服务器并实现模拟ajax
2017/04/05 Javascript
python爬取安居客二手房网站数据(实例讲解)
2017/10/19 Javascript
简单的vuex 的使用案例笔记
2018/04/13 Javascript
JS/CSS实现字符串单词首字母大写功能
2019/09/03 Javascript
element-ui table组件如何使用render属性的实现
2019/11/04 Javascript
Python程序员开发中常犯的10个错误
2014/07/07 Python
Python中enumerate()函数编写更Pythonic的循环
2018/03/06 Python
Django模板获取field的verbose_name实例
2020/05/19 Python
英国一家专门出售品牌鞋子的网站:Allsole
2016/08/07 全球购物
土耳其新趋势女装购物网站:Addax
2020/01/07 全球购物
儿科护士实习自我鉴定
2013/10/17 职场文书
《歌唱二小放牛郎》教学反思
2014/04/19 职场文书
服务承诺书格式
2014/05/21 职场文书
交通事故委托书范本精选
2014/10/04 职场文书
2014年人事行政工作总结
2014/12/03 职场文书
导师鉴定意见
2015/06/05 职场文书
上甘岭观后感
2015/06/10 职场文书
法人身份证明书
2015/06/18 职场文书