502 Bad Gateway 是一种HTTP协议的服务器端错误状态代码,它表示作为网关或代理角色的服务器,从上游服务器(如tomcat、php-fpm)中接收到的响应是无效的。

Gateway (网关)在计算机网络体系中可以指代不同的设备,502 错误通常不是客户端能够修复的,而是需要由途径的Web服务器或者代理服务器对其进行修复。

总结:php-cgi进程数不够用、php执行时间长、或者是php-cgi进程死掉,都会出现502错误.

502系列错误代码

  • HTTP Error 502 Bad Gateway HTTP 错误 502 网关错误
  • HTTP 502
  • 502 Service Temporarily Overloaded 502 服务暂时超载
  • Temporary Error (502) 临时错误 (502)
  • 502 Server Error: The server encountered a temporary error and could not - - complete your request 502 服务器错误:服务器遇到临时错误,无法完成您的请求
  • 502 Bad Gateway Nginx 502 网关坏 Nginx

5XX系列错误代码

  • 500 Internal Server ErrorWeb 服务器遇到遇到阻止其无法完成其任务(即客户端请求)的条件时,将显示此错误
  • 501 Not Implemented 服务器无法支持或识别请求方法。 它缺少处理请求的功能,因此它会响应此错误
  • 502 Bad Gateway 服务器之间发生了错误,充当代理或网关时,您的服务器在尝试处理请求时未收到上游服务器的正确响应
  • 503 Service Unavailable 由于正在进行维护或服务器当前过载而导致服务器无法处理请求的临时情况
  • 504 Gateway Timeout 服务器再次充当代理或网关时,没有及时从另一个服务器(例如DNS)获得响应,因此它无法处理请求
  • 505 HTTP Version Not Supported 当您的Web服务器不能或将不支持源自请求的HTTP协议版本时,将发生他的错误。 该错误通常包含服务器为什么不合作的描述

Nginx 502 Bad Gateway 错误的原因及解决方法

多数是后端问题也就是PHP的问题, 简单的情况可以刷新(不是一般的刷新哦,Ctrl + F5 强制刷新)解决。在php服务当中,有两个参数非常的重要:max_requeststmax_children,具体的原因必须要查看日志才可以弄明白!

1、检查PHP基础设置
修改/www/server/php/80/etc/php-fpm.conf request_terminate_timeout = 100 ,把100改成5
php执行超时,修改/usr/local/php/etc/php.ini 将max_execution_time300

2、FastCGI进程是否已经启动

ps aux | grep php

查看是否启动了php-fpm服务;

3、FastCGI worker进程数是否不够
运行linux命令:

netstat -anpo | grep “php-cgi” | wc -l

判断是否接近FastCGI进程,接近配置文件中设置的数值,表明worker进程数设置太少;

4、FastCGI执行时间过长
PHP程序执行时间超过了Nginx等待时间,可以适当增加nginx.conf配置文件中FastCGItimeout时间,根据实际情况调高以下参数值:

fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;

5、FastCGI Buffer不够
nginx和apache一样,有前端缓冲限制,可以调整缓冲参数

fastcgi_buffer_size 32k;
fastcgi_buffers 8 32k;

6、FastCGI 缓冲区设置过小
首先查找nginx日志文件,目录/var/log/nginx,在日志中发现了如下错误:

[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;...
}

请根据服务器已经网站的情况自行增大上述两个配置项。

7、代理缓冲区设置过小(使用了nginx反向代理的情况)
如果header过大,超出了默认的1k,就会引发upstream sent too big header

server {listen       80;server_name  *.test.com;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;
............
}

8、默认php-cgi的进程数设置过少
在安装好使用过程中出现502问题,一般是因为默认php-cgi进程是5个,可能因为phpcgi进程不够用而造成502,需要修改/usr/local/php/etc/php-fpm.conf 将其中的max_children的值适当增加。也有可能是max_requests的值不够用。需要说明的是这连个配置项占用内存很大,请根据服务器配置进行设置。否则可能起到反效果。

9、其它原因
如果您上网时在您尝试访问的所有网站上都看这个问题,有两种可能
①你的ISP重大设备故障/过载
②有问题的内部互联网连接如您的防火墙无法正常运作。
在种情况下,只有您的ISP可以帮助您。在第二种情况下,你需要解决什么,那是阻止你进入互联网。
如果您只有在部分尝试访问的网站中出现此问题,那很可能是一个问题,即这些网站之一,其设备故障或超载。联系你网站的管理员。

本文持续更新补充…

解决502 bad gateway的九种方案及原因相关推荐

  1. [转] js前端解决跨域问题的8种方案(最新最全)

    [转] js前端解决跨域问题的8种方案(最新最全) 参考文章: (1)[转] js前端解决跨域问题的8种方案(最新最全) (2)https://www.cnblogs.com/chris-oil/p/ ...

  2. 九种 OOM 常见原因及解决方案(IT枫斗者)

    九种 OOM 常见原因及解决方案(IT枫斗者) 什么是OOM? OOM,全称"Out Of Memory",翻译成中文就是"内存用完了",来源于java.lan ...

  3. nginx+php-fpm配置后页面显示空白的解决方法以及用nginx和php-fpm解决“502 Bad Gateway”问题...

    For reference, I am attaching my location block for catching files with the .php extension: location ...

  4. php 502 bad gatway,Nginx php如何解决502 Bad Gateway错误

    在Web服务器中有很多先进的技术,Nginx php就是其中的一个,接下来我们就看看在Nginx 中的相关问题解决,希望大家有所收获.Nginx php中配置php fastcgi组解决莫名其妙的50 ...

  5. 前端解决跨域问题的8种方案(最新最全)

    .同源策略如下: URL 说明 是否允许通信 http://www.a.com/a.js http://www.a.com/b.js 同一域名下 允许 http://www.a.com/lab/a.j ...

  6. Spring Boot 解决跨域问题的 3 种方案!

    以下文章来源方志朋的博客,回复"666"获面试宝典 作者:telami 来源:www.telami.cn/2019/springboot-resolve-cors/ 前后端分离大势 ...

  7. Spring Boot 解决跨域问题的 3 种方案

    来源 | r6d.cn/XTrB 前后端分离大势所趋,跨域问题更是老生常谈,随便用标题去google或百度一下,能搜出一大片解决方案,那么为啥又要写一遍呢,不急往下看. 问题背景: Same Orig ...

  8. 不停应用重启oracle数据库,此类情况下解决Oracle数据库重启的四种方案

    原题:Oracle数据库重启(内存参数numperm_global相关) 故障描述 Oracle数据库发生重启. 系统环境 AIX 6100-07-05-1228 Oracle 11g 故障分析 首先 ...

  9. 前端解决跨域问题的8种方案

    2019独角兽企业重金招聘Python工程师标准>>> 1.同源策略如下: URL 说明 是否允许通信 http://www.a.com/a.js http://www.a.com/ ...

  10. html表格内容溢出隐藏,溢出隐藏:最全的利用css解决内容溢出问题的几种方案...

    在p布局中,有的文字内容多了会超过溢出我们限制的高度,有的图片会撑破DIV,让网页错位变乱.内容溢出了容器,超出了容器所限定的宽度和高度应该怎么办呢?可以将文本溢出部分进行隐藏或者用省略号代替,那具体 ...

最新文章

  1. arm板telnetd为什么运行不了_Win10 ARM 迎来原生 PS,微软玩 ARM 能赢过苹果吗
  2. activiti根据当前节点获取下一个UseTask节点
  3. c语言异或实现交换原理,使用异或运算符实现两个数交换原理
  4. GitHub Actions,卧槽!牛批!
  5. 基于C语言的函数指针应用-消息命令处理框架
  6. C++中的指针与引用(转)
  7. win7中能对窗口的排列方法是_win7系统窗口排列方式怎么修改?修改窗口排列方式方法...
  8. system函数阻塞_简单的Java阻塞队列
  9. Linux设备驱动:DMA 接口API
  10. Express框架简介(详细)
  11. 对比了6家交易所的下币规则,我们发现……
  12. python安装方法3.8.2_Python 3.8.2详细图文安装教程(附安装包)
  13. python aiml开发文档,带有Python的AIML文件
  14. IT自动化运维平台建设解决方案
  15. 数据库表历史数据备份(定时任务)
  16. lwip协议栈在linux运行,一种轻量级的TCP_IP协议栈LwIP在嵌入式系统中的应用
  17. 如何从macOS Catalina向iPhone添加自定义铃声
  18. Docker目录映射
  19. Mac下Tesseract-OCR文字识别新手使用入门
  20. 软件设计-项目重构技巧

热门文章

  1. 移动警务整体解决方案_辅助或替代人类的技术无法解决警务问题
  2. 方向导数,偏导数,梯度
  3. 利用Photos 框架搭建美图秀秀相册选择器
  4. mysql连接失败问题
  5. 在c语言中的变量分为三种类型,在C语言中的实型变量分为两种类型
  6. 中文顿号怎么输入_顿号如何在键盘中打出来 保准你一看即会
  7. OP-TEE内核学习笔记(一)(安全存储)—— 安全文件基础操作(创建、读、写)
  8. cad安装日志文件发生错误_CAD安装问题,CAD安装时为什么显示内部发生错误急?...
  9. Joiner.on和stream().map联合使用技巧
  10. 任性与自制力差--拖延症(行为训练)