Appearance
问题现象
通过域名访问系统首页、后台或 API 接口时,页面显示 502 Bad Gateway。
根本原因
502 Bad Gateway 是 Web 服务器(Nginx)返回的标准 HTTP 状态码,表示作为反向代理网关的 Nginx 尝试连接后端上游服务器(Swoole 服务监听的 127.0.0.1:20697)时连接被拒绝或超时。
最常见的原因包括:
- Swoole 服务未启动或崩溃退出。
- Swoole 监听端口与 Nginx 反向代理配置的端口不一致。
- Swoole 进程遭遇致命错误后陷入反复重启(Crash Loop)。
解决与排查流程
第一步:检查 Swoole 服务是否正在运行
在终端中执行以下命令查看是否有 Swoole 进程存在:
bash
ps -ef | grep "php think swoole"- 若无相关进程:说明 Swoole 服务未启动。进入 Supervisor 管理器启动守护进程,或在命令行执行
php think swoole。 - 若 Supervisor 状态显示 FATAL / BACKOFF:请以前台命令运行
php think swoole查看启动崩溃的具体报错(常见原因为缺少扩展、proc_open未解禁或数据库/Redis 无法连接)。
第二步:检查端口配置是否一致
- 查看 Swoole 实际配置端口:打开
config/swoole.php或.env,确认server.port(如20697)。 - 查看 Nginx 反向代理配置端口:打开站点 Nginx 配置,检查
proxy_pass指向的端口:nginxproxy_pass http://127.0.0.1:20697; - 确保两者端口号完全一致。
第三步:检查端口监听状态
在终端中检查该端口是否处于监听状态:
bash
netstat -tlpn | grep 20697
lsof -i :20697若端口处于 LISTEN 状态,再次刷新浏览器即可正常访问。