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服务器添加Systemd自定义服务过程解析
Mar 31 Servers
浅谈Nginx 中的两种限流方式
Mar 31 Servers
如何利用map实现Nginx允许多个域名跨域
Mar 31 Servers
图文详解Nginx版本平滑升级方案
Sep 15 Servers
Nginx stream 配置代理(Nginx TCP/UDP 负载均衡)
Nov 17 Servers
阿里云日志过滤器配置日志服务
Apr 09 Servers
Windows Server 2019 配置远程控制以及管理方法
Apr 28 Servers
使用Nginx的访问日志统计PV与UV
May 06 Servers
Nginx 常用配置
May 15 Servers
ubuntu下常用apt命令介绍
Jun 05 Servers
服务器SVN搭建图文安装过程
Jun 21 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
海贼王:最美的悬赏令!
2020/03/02 日漫
利用js调用后台php进行数据处理原码
2006/10/09 PHP
解析PHP的session过期设置
2013/06/29 PHP
PHP 9 大缓存技术总结
2015/09/17 PHP
使用ThinkPHP生成缩略图及显示
2017/04/27 PHP
laravel-admin 实现给grid的列添加行数序号的方法
2019/10/08 PHP
laravel 中某一字段自增、自减的例子
2019/10/11 PHP
Javascript+XMLHttpRequest+asp.net无刷新读取数据库数据
2009/08/09 Javascript
基于jQuery的实现简单的分页控件
2010/10/10 Javascript
JQuery操作表格(隔行着色,高亮显示,筛选数据)
2012/02/23 Javascript
JavaScript创建一个欢迎cookie弹出窗实现代码
2013/03/15 Javascript
jQuery操作input值的各种方法总结
2013/11/21 Javascript
jQuery实现的图文高亮滚动切换特效实例
2015/08/10 Javascript
jQuery选择器特殊字符与属性空格问题
2017/08/14 jQuery
js精确的加减乘除实例
2017/11/14 Javascript
利用three.js画一个3D立体的正方体示例代码
2017/11/19 Javascript
js生成word中图片处理方法
2018/01/06 Javascript
vue 移动端适配方案详解
2018/11/15 Javascript
Echarts地图添加引导线效果(labelLine)
2019/09/30 Javascript
JS Html转义和反转义(html编码和解码)的实现与使用方法总结
2020/03/10 Javascript
pygame 精灵的行走及二段跳的实现方法(必看篇)
2017/07/10 Python
python方法生成txt标签文件的实例代码
2018/05/10 Python
解决python读取几千万行的大表内存问题
2018/06/26 Python
python数据类型之间怎么转换技巧分享
2019/08/20 Python
Python递归调用实现数字累加的代码
2020/02/25 Python
使用jupyter notebook将文件保存为Markdown,HTML等文件格式
2020/04/14 Python
如何基于python实现不邻接植花
2020/05/01 Python
CSS3使用transition实现的鼠标悬停淡入淡出
2015/01/09 HTML / CSS
Html5页面二次分享的实现
2018/07/30 HTML / CSS
计算机软件个人的自荐信范文
2013/12/01 职场文书
税务干部群众路线教育实践活动对照检查材料
2014/09/20 职场文书
父亲节活动总结
2015/02/12 职场文书
爱国电影观后感
2015/06/19 职场文书
2016年教育局“我们的节日——端午节”主题活动总结
2016/04/01 职场文书
springBoot基于webSocket实现扫码登录
2021/06/22 Java/Android
CDPR谈《巫师》新作用虚幻5原因 称不会为Epic独占
2022/04/06 其他游戏