PvP Server Kiralama & Oyun Sunucuları
0 Giriş Yap Kayıt Ol

Linux服务器出现502 Bad Gateway和504 Gateway Timeout错误的解决方法

Yazdır

Linux服务器出现502 Bad Gateway和504 Gateway Timeout错误的解决方法

解决 Nginx、Apache、PHP-FPM 和服务超时问题的分步指南。

在网站上看到的 502 网关错误504 网关超时 发生错误通常是因为 Web 服务器没有从后端服务获得正确的响应。该服务可以是 PHP-FPM、Apache 后端、Node.js 应用程序、游戏面板 API 服务或代理背后的其他应用程序。

这些错误在主机、游戏面板、WHMCS、Pterodactyl、自定义管理面板和基于 Web 的启动器系统中尤其常见。

简单解释: Nginx就像门口的服务员。如果里面的PHP或者应用程序没有响应,就会向用户显示502或者504错误。

1. 502和504错误的区别

  • 502 错误网关: Web 服务器无法连接到后端服务或收到乱码响应。
  • 504 网关超时: 后端服务看似有响应,但响应没有及时返回。

所以502更多的是连接/服务崩溃,而504则是缓慢或超时问题。

2. 检查服务状态

首先,检查Web服务器和PHP服务是否正在运行。

systemctl status nginx
systemctl status apache2
systemctl status php-fpm

在 CentOS、AlmaLinux 或 Rocky Linux 系统上,PHP-FPM 服务可能被命名为:

systemctl status php-fpm
systemctl status httpd

如果服务已停止,请重新启动它:

systemctl restart nginx
systemctl restart php-fpm

3. 查看日志文件

对 502 和 504 错误进行猜测是不正确的。日志文件显示了错误的真正原因。

tail -n 100 /var/log/nginx/error.log
tail -n 100 /var/log/apache2/error.log

在基于 CentOS 的系统上:

tail -n 100 /var/log/httpd/error_log

日志中可以看到如下语句:

  • 连接()失败: 无法连接到后端服务。
  • 上游超时: 后端服务响应较晚。
  • 连接被拒绝: 服务已关闭或转发到错误的端口。
  • 权限被拒绝: 存在套接字或文件权限问题。

4. PHP-FPM套接字或端口控制

Nginx 通过套接字或端口连接到 PHP-FPM。 Nginx配置文件中的PHP-FPM路径和实际的PHP-FPM监听值必须相同。

grep -R "fastcgi_pass" /etc/nginx/sites-enabled/
grep -R "listen =" /etc/php/*/fpm/pool.d/www.conf

例如,如果 Nginx 使用:

fastcgi_pass unix:/run/php/php8.2-fpm.sock;

应在 PHP-FPM 端监听相同的套接字:

listen = /run/php/php8.2-fpm.sock
重要: 如果 PHP 版本已更改,Nginx 可能仍在查看旧的 PHP-FPM 套接字路径。这是 502 错误的最常见原因之一。

5.增加超时设置

大型处理面板、游戏市场、API 或运行缓慢的 PHP 脚本中可能会收到 504 错误。 Nginx 超时值可以增加。

nano /etc/nginx/nginx.conf

可以将以下值添加到 http 块或相关服务器块:

proxy_connect_timeout 300;
proxy_send_timeout 300;
proxy_read_timeout 300;
fastcgi_read_timeout 300;

测试设置并重新启动 Nginx:

nginx -t
systemctl restart nginx

6. 检查 PHP-FPM 进程限制

当流量增加时,PHP-FPM交易限额可能会不够。在这种情况下,请求将排队并发生超时。

nano /etc/php/8.2/fpm/pool.d/www.conf

设置示例:

pm = dynamic
pm.max_children = 30
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 10

这些值应根据服务器的 RAM 量进行调整。设置太高的值会增加 RAM 消耗。

常见错误

  • 更改设置而不查看日志文件
  • 即使 PHP 版本已更改,也不更新 Nginx 套接字路径
  • 没有通过增加超时来修复实际的慢查询
  • 在不计算 RAM 的情况下增加 PHP-FPM 限制
  • 重新启动服务而不测试 Nginx 配置

常见问题解答

502错误总是由Nginx引起的吗?
不。Nginx 只是显示错误的一个。真正的问题可能出在 PHP-FPM、Apache 后端、Node.js 应用程序或其他服务中。

增加超时是解决 504 错误的最终解决方案吗?
并非总是如此。增加超时可以暂时缓解这种情况。真正的解决方案是找到慢查询、繁重处理或性能问题。

重新启动 PHP-FPM 是否安全?
一般情况下是安全的,但活跃请求可能会在短时间内受到影响。在繁忙的系统中,应优先选择低流量时段。

性能建议

  • 定期检查 PHP-FPM 版本和套接字路径。
  • 检查 Web 面板和 API 服务中的慢查询日志。
  • 如果RAM不足,不要无意识地增大PHP-FPM max_children值。
  • 通过使用缓存系统减少后端负载。
  • 使用 logrotate 在错误日志增长之前对其进行管理。

本文是专门为PvPServer准备的。

Bu cevap yeterince yardımcı oldu mu?

Oyla

overlay spinner