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实现反向代理
Sep 20 Servers
nginx网站服务如何配置防盗链(推荐)
Mar 31 Servers
nginx location中多个if里面proxy_pass的方法
Mar 31 Servers
Nginx搭建rtmp直播服务器实现代码
Mar 31 Servers
Nginx代理同域名前后端分离项目的完整步骤
Mar 31 Servers
Nginx 路由转发和反向代理location配置实现
Nov 11 Servers
Nginx的基本概念和原理
Mar 21 Servers
Nginx设置HTTPS的方法步骤 443证书配置方法
Mar 21 Servers
Windows server 2012 配置Telnet以及用法详解
Apr 28 Servers
CentOS7安装MySQL8的超级详细教程(无坑!)
Jun 10 Servers
vscode内网访问服务器的方法
Jun 28 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下实现农历日历的代码
2007/03/07 PHP
php将mysql数据库整库导出生成sql文件的具体实现
2014/01/08 PHP
php命令行使用方法和命令行参数说明
2014/04/08 PHP
PHP SPL标准库之接口(Interface)详解
2015/05/11 PHP
PHP的Yii框架的基本使用示例
2015/08/21 PHP
PHP简单留言本功能实现代码
2017/06/09 PHP
Javascript 汉字字节判断
2009/08/01 Javascript
JavaScript ECMA-262-3 深入解析.第三章.this
2011/09/28 Javascript
jQuery实现的一个自定义Placeholder属性插件
2014/08/11 Javascript
AngularJS学习笔记之依赖注入详解
2016/05/16 Javascript
jquery无法为动态生成的元素添加点击事件的解决方法(推荐)
2016/12/26 Javascript
vue.js的提示组件
2017/03/02 Javascript
vue中SPA单页面应用程序详解
2017/11/07 Javascript
react实现菜单权限控制的方法
2017/12/11 Javascript
Javascript实现异步编程的过程
2018/06/18 Javascript
微信小程序3种位置API的使用方法详解
2019/08/05 Javascript
小程序调用微信支付的方法
2019/09/26 Javascript
jQuery实现高度灵活的表单验证功能示例【无UI】
2020/04/30 jQuery
如何利用JavaScript编写更好的条件语句详解
2020/08/10 Javascript
[05:31]干嘛呢兄弟!DOTA2 TI9语音轮盘部分出处
2019/05/14 DOTA
python thread 并发且顺序运行示例
2009/04/09 Python
Python输入二维数组方法
2018/04/13 Python
python实现的批量分析xml标签中各个类别个数功能示例
2019/12/30 Python
flask框架url与重定向操作实例详解
2020/01/25 Python
Windows 下python3.8环境安装教程图文详解
2020/03/11 Python
Keras设置以及获取权重的实现
2020/06/19 Python
使用css创建三角形 使用CSS3创建3d四面体原理及代码(html5实践)
2013/01/06 HTML / CSS
新闻编辑自荐信
2013/11/03 职场文书
幼儿园教师考核制度
2014/02/01 职场文书
《春到梅花山》教学反思
2014/04/16 职场文书
2014年学校体育工作总结
2014/12/08 职场文书
保证书格式
2015/01/16 职场文书
教师个人教学总结
2015/02/11 职场文书
培训简讯范文
2015/07/20 职场文书
《青山不老》教学反思
2016/02/22 职场文书
Django实现聊天机器人
2021/05/31 Python