电脑计算机论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 160|回复: 0

如何排除Nginx上的502坏网关错误

[复制链接]
Dylan 发表于 2023-6-30 16:26:44 | 显示全部楼层 |阅读模式
在使用Nginx时遇到的最令人沮丧的错误之一是502错误。伴随这个错误的文本是“坏网关”,不幸的是,它并没有说明什么地方可能出错了。相比之下,其他错误清楚地表明没有找到资源或页面,或者您没有查看特定资源的权限。
在本文中,我们将更详细地研究Nginx中的502坏网关错误,并提出一些经过时间考验的故障排除方法。
502坏网关错误是什么?
当服务器响应一个HTTP请求时,响应代码的类别说明了很多。例如,像4xx这样的响应与坏请求有关;同样,5xx系列是为服务器错误保留的。这意味着如果你得到500或502的回应,这不是你的错——服务器出了问题。
在502错误中,服务器试图告诉你的是,它未能通过一个连接的“网关”连接到一个重要的服务如果这听起来太笼统,没有帮助,那只是野兽的本性;根据您正在运行的堆栈以及Nginx是如何设置服务请求的,这个错误将意味着不同的事情。
在最常见的情况下,例如,当您的新WordPress安装抛出这个错误时,这意味着Nginx无法与PHP(或PHP-FPM)服务正确通信。接下来,让我们看一个例子,说明如何在PHP中解决这个错误。
Nginx和PHP中502坏网关错误的解决
要解决502坏网关错误,您需要系统地检查几个步骤。
FPM不在场
在第一种情况下,也许您提供给Nginx的配置文件说它必须通过PHP-FPM连接,而该服务实际上并没有安装在您的服务器上。这在新服务器安装中非常常见。
要解决这个问题,你需要做的就是(假设你在Ubuntu 16.04上):
$ sudo apt install php-fpm
$ sudo service php-fpm restart
$ sudo service nginx restart
之后,再尝试访问URL,很可能错误就没了。
FPM不能连接到端口或插座
另一个典型的情况是,当您有Nginx配置文件要求它监听一个套接字时,而实际上那个套接字甚至不存在。另一种可能性是,配置文件告诉Nginx通过端口9000连接(这是一个非常常见的设置),而FPM进程被配置为通过套接字文件发送输出。
要查看是否存在这种不匹配,请打开PHP-FPM配置文件。对于Ubuntu 16.04上的PHP 7.1,位置是/etc/PHP/7.1/fpm/pool . d/www . conf,查找下面一行:
listen =/run/PHP/PHP 7.1-fpm . sock

现在,检查文件/run/php/php7.1-fpm.sock是否确实存在。如果没有,只需创建它并设置相关权限:
# touch /run/php/php7.1-fpm.sock
# chown:www-data/run/PHP/PHP 7 . 1-fpm . sock
# chmod 775/run/PHP/PHP 7.1-fpm . sock

一旦这样做了,尝试重新启动FPM和Nginx,事情应该会有所进展。
有时替代性PHP缓存(APC)是一个非常糟糕的想法,最好避免。这通常是502坏网关错误的原因。如果您正在运行APC,请禁用它,并替换为更健壮的缓存方案(Memcache是一个很好的替代方案)。
根据您的环境,您需要做类似的检测工作来查看Nginx连接出了什么问题。最好的开始总是Nginx错误日志。

您需要登录后才可以回帖 登录 | 注册

本版积分规则


QQ|手机版|小黑屋|电脑计算机论坛 ( 京ICP备2022023538号-1 )

GMT+8, 2024-11-23 17:02 , Processed in 0.305948 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表