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
Windows下使用Nginx+Tomcat做负载均衡的完整步骤
Mar 31 Servers
详解Nginx启动失败的几种错误处理
Apr 01 Servers
Nginx stream 配置代理(Nginx TCP/UDP 负载均衡)
Nov 17 Servers
Apache Hudi集成Spark SQL操作hide表
Mar 31 Servers
Tomcat用户管理的优化配置详解
Mar 31 Servers
iSCSI服务器CHAP双向认证配置
Apr 01 Servers
Kubernetes部署实例并配置Deployment、网络映射、副本集
Apr 01 Servers
Linux、ubuntu系统下查看显卡型号、显卡信息详解
Apr 07 Servers
Windows Server 2022 超融合部署(图文教程)
Jun 25 Servers
SpringBoot前端后端分离之Nginx服务器下载安装过程
Aug 14 Servers
源码安装apache脚本部署过程详解
Sep 23 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模板页面中分页代码的解析
2009/02/06 PHP
PHP中构造函数和析构函数解析
2014/10/10 PHP
ThinkPHP通过AJAX返回JSON的两种实现方法
2014/12/18 PHP
解读PHP中上传文件的处理问题
2016/05/29 PHP
PHP receiveMail实现收邮件功能
2018/04/25 PHP
一个很简单的办法实现TD的加亮效果.
2006/06/29 Javascript
jQuery toggleClass应用实例(附效果图)
2014/04/06 Javascript
jQuery事件用法详解
2016/10/06 Javascript
原生js代码实现图片放大境效果
2016/10/30 Javascript
JS正则截取两个字符串之间及字符串前后内容的方法
2017/01/06 Javascript
Node连接mysql数据库方法介绍
2017/02/07 Javascript
解决JQuery全选/反选第二次失效的问题
2017/10/11 jQuery
微信小程序模板template简单用法示例
2018/12/04 Javascript
利用JavaScript模拟京东按键输入功能
2020/12/01 Javascript
[59:36]2018DOTA2亚洲邀请赛 4.3 突围赛 Secret vs VG 第二场
2018/04/04 DOTA
[01:11:21]DOTA2-DPC中国联赛 正赛 VG vs Elephant BO3 第一场 3月6日
2021/03/11 DOTA
python中关于时间和日期函数的常用计算总结(time和datatime)
2013/03/08 Python
paramiko模块安装和使用(远程登录服务器)
2014/01/27 Python
Python操作使用MySQL数据库的实例代码
2017/05/25 Python
Python 查看文件的读写权限方法
2018/01/23 Python
实例分析python3实现并发访问水平切分表
2018/09/29 Python
网易2016研发工程师编程题 奖学金(python)
2019/06/19 Python
Numpy 多维数据数组的实现
2020/06/18 Python
Python连接mysql方法及常用参数
2020/09/01 Python
Mamas & Papas沙特阿拉伯:英国最受欢迎的婴儿品牌
2017/11/20 全球购物
澳大利亚首屈一指的鞋类品牌:Tony Bianco
2018/03/13 全球购物
Groupon比利时官方网站:特卖和网上购物高达-70%
2019/08/09 全球购物
小米官方旗舰店:Xiaomi
2020/08/07 全球购物
应届生服务员求职信
2013/10/31 职场文书
公务员政审个人鉴定
2014/02/25 职场文书
车间机修工岗位职责
2014/02/28 职场文书
商业计划书范文
2019/04/24 职场文书
《学会生存》读后感3篇
2019/12/09 职场文书
Html5页面播放M4a音频文件
2021/03/30 HTML / CSS
Redis安装启动及常见数据类型
2021/04/14 Redis
MySQL中CURRENT_TIMESTAMP的使用方式
2021/11/27 MySQL