最近申请了阿里云免费的SSL证书,让网站实现https://的方式访问,按照阿里云的教程设置后,网站出现了502 Bad Gateway nginx/1.8.1,导致网站无法访问。

环境:

[wm_red]云服务器镜像 Linux CentOS 7.6

已经安装并成功配置 SSL 的 nginx 1.8.1

遇到的问题: 在服务器没有报错的情况下, 向服务器发送 HTTPS 请求时出现 502 Bad Gateway[/wm_red]

经过Google搜索后,我通过增加http块内的缓冲区和超时,在Nginx配置文件/etc/nginx/nginx.conf中添加几行代码解决了该问题。

下面了解一下如何修复Nginx 502 Bad Gateway 的错误。

很多时候,我们可以浏览网络,并在Nginx上发现502 bad gateway错误。您会在网络服务器日志中找到此消息的原因有多种,这里将教您如何修复它。

不同的网站可能会有不同的502 bad gateway错误消息。以下是最常见的502错误消息:

502 Bad Gateway
502 Bad Gateway NGINX
502 Service Temporarily Overloaded
502 Proxy Error
Error 502
HTTP Error 502 – Bad Gateway
HTTP 502

什么时候会发生502 Bad Gateway错误

Nginx作为Apache Web服务器的代理运行。
Nginx与PHP-FPM守护程序一起运行。
Nginx与其他服务一起运行作为网关。
缓冲/超时配置错误。

在深入研究所有这些选项之前,您必须了解502 Bad Gateway错误消息的含义。因此,该错误是HTTP状态代码错误,它发生在网关上。到底是什么网关?简而言之,网关就像一个访问点,是一个服务与另一个服务进行通信的桥梁,在这种情况下,网关可以是正在工作并从Nginx Web服务器接收请求的服务/应用程序。

现在,让我们探究每种原因,以了解502 Bad Gateway错误消息

Nginx作为Apache的代理:在这种情况下,网关是Apache。当您使用Nginx作为Apache的代理时,如果apache死了或配置不正确,则可能导致此502 Bad Gateway错误。如何解决?在大多数情况下,重新启动apache Web服务器将消除这种情况,但是您必须检查日志文件以了解到底是什么原因造成的。
带有PHP-FPM的Nginx:与Apache示例相同,假设您的php守护程序停止工作,或者由于请求而过载,它将无法正常工作,并且无法满足nginx的所有php请求,因此,出现502 Bad Gateway错误会出现。如何解决?重新启动php-fpm守护程序并检查日志。
Nginx与其他服务/应用程序:尝试重新启动nginx背后的其他服务,并浏览日志以查找发生该事件的原因。

502 Bad Gateway错误的其他快速解决方案:

1)增加http块内的缓冲区和超时:

http {
...
fastcgi_buffers 8 16k;
fastcgi_buffer_size 32k;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
...
}

2)确保您的php-fpm服务正在根据您在nginx中配置的内容进行监听,这可以是以下两个选项之一:

编辑www.conf文件(在CentOS中,它位于/etc/php-fpm.d/www.conf并尝试使用以下两个选项之一:

listen = /var/run/php5-fpm.sock

要么

listen = 127.0.0.1:9000

之后,只需重新启动php-fpm服务即可。

3)如果使用Apc Cache,则禁用它,而改用Xcache,在特定环境下apc会引起此类问题,从而导致分段错误。