一般在访问某些网站或者我们在做本地测试的时候,服务器突然返回502 Bad Gateway Nginx,这种问题相信大家也遇到不少了,下面这篇文章主要给大家介绍了关于Nginx 502 bad gateway错误解决的九种方案及原因,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
前言
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_requestst
和max_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_time
为300
;
2、FastCGI进程是否已经启动
1
|
ps aux | grep php |
查看是否启动了php-fpm
服务;
3、FastCGI worker进程数是否不够
运行linux命令:
1
|
netstat -anpo | grep “php-cgi” | wc -l |
判断是否接近FastCGI进程,接近配置文件中设置的数值,表明worker进程数设置太少;
4、FastCGI执行时间过长
PHP程序执行时间超过了Nginx等待时间,可以适当增加nginx.conf
配置文件中FastCGI
的timeout
时间,根据实际情况调高以下参数值:
1
2
3
|
fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300; |
5、FastCGI Buffer不够
nginx和apache一样,有前端缓冲限制,可以调整缓冲参数
1
2
|
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,方法如下:
1
2
3
4
5
6
|
http { ... fastcgi_buffers 8 16k; fastcgi_buffer_size 32k; ... } |
请根据服务器已经网站的情况自行增大上述两个配置项。
7、代理缓冲区设置过小(使用了nginx反向代理的情况)
如果header过大,超出了默认的1k,就会引发upstream sent too big header
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
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可以帮助您。在第二种情况下,你需要解决什么,那是阻止你进入互联网。
如果您只有在部分尝试访问的网站中出现此问题,那很可能是一个问题,即这些网站之一,其设备故障或超载。联系你网站的管理员。
总结
到此这篇关于Nginx 502 bad gateway错误解决的九种方案及原因的文章就介绍到这了,更多相关Nginx 502 bad gateway错误内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持资源e网!
1、本站提供的源码不保证资源的完整性以及安全性,不附带任何技术服务!
2、本站提供的模板、软件工具等其他资源,均不包含技术服务,请大家谅解!
3、本站提供的资源仅供下载者参考学习,请勿用于任何商业用途,请24小时内删除!
4、如需商用,请购买正版,由于未及时购买正版发生的侵权行为,与本站无关。
5、本站部分资源存放于百度网盘或其他网盘中,请提前注册好百度网盘账号,下载安装百度网盘客户端或其他网盘客户端进行下载;
6、本站部分资源文件是经压缩后的,请下载后安装解压软件,推荐使用WinRAR和7-Zip解压软件。
7、如果本站提供的资源侵犯到了您的权益,请邮件联系: 11210980@qq.com 进行处理!
本文地址:https://www.zycang.com/89740.html
文章转载或复制请以超链接形式并注明来源出处。 本文最后更新于:2022-10-29 18:23:50
声明:某些文章或资源具有时效性,若有 错误 或 所需下载资源 已失效,请联系客服QQ:11210980
请登录后发表评论
注册