问题现象
使用1Panel面板管理服务器时,执行重启Nginx操作后,部分或全部站点无法访问,浏览器返回连接失败、502 Bad Gateway或404 Not Found等错误。
常见原因
- 配置文件语法错误:修改站点配置后未执行语法检查,重启时Nginx加载失败。
- 端口被占用:Nginx默认端口(80/443)被其他服务占用,导致启动失败。
- 站点目录或文件权限异常:Nginx进程用户(如
www-data)对站点根目录、日志文件无读取/写入权限。 - PHP-FPM或反向代理服务未启动:动态站点依赖的PHP-FPM或后端服务挂掉,Nginx返回502错误。
- 防火墙或安全组规则:服务器防火墙或云平台安全组未放行相关端口。
排查步骤
1. 检查Nginx运行状态
登录1Panel,进入“Nginx”模块,确认状态是否显示为“运行中”。若为“停止”,手动点击启动并观察日志。
2. 分析Nginx错误日志
在1Panel Nginx设置中查看错误日志,或SSH登录服务器查看 /var/log/nginx/error.log。常见错误提示包括:
[emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) → 端口冲突[emerg] invalid number of arguments in "..." → 配置语法错误connect() failed (111: Connection refused) while connecting to upstream → 后端服务未启动
3. 测试配置文件语法
执行命令 nginx -t(需SSH权限),检查是否有语法错误。如有报错,根据提示修正配置。
4. 检查端口占用情况
使用 netstat -tlnp | grep 80 或 lsof -i:80 查看端口占用。若被Apache或其他进程占用,停止冲突服务或修改Nginx监听端口。
5. 检查PHP-FPM状态
进入1Panel“PHP”模块,确认对应版本PHP-FPM是否运行。若停止,启动并确保配置中的 listen 参数与Nginx一致。
6. 重载防火墙规则
在1Panel“安全”模块中检查防火墙是否添加了HTTP/HTTPS规则。云服务器还需检查安全组入方向策略。
解决方案
- 配置文件错误:根据错误日志修正语法,保存后执行“重载配置”或重启Nginx。
- 端口冲突:停止冲突服务(如
systemctl stop apache2),或修改Nginx配置文件中的监听端口并重启。 - 权限问题:使用
chown -R www-data:www-data /path/to/site 调整目录所有者,或赋予755/644合适权限。 - 后端服务:启动PHP-FPM:
systemctl start php-fpm;若为反向代理,检查上游服务是否正常。 - 防火墙:在1Panel或云控制台放行80、443端口。
预防建议
- 修改站点配置后,先执行
nginx -t 再重载。 - 定期查看Nginx及PHP-FPM运行状态。
- 使用1Panel自动备份功能,确保出错时可快速恢复。