打开网站看到“Welcome to nginx!”或者“403 Forbidden”“502 Bad Gateway”,很多人第一反应是网站被黑。这几种页面含义完全不同,处理方法也不一样。

Welcome to nginx!

这是安装后的默认欢迎页,说明 Nginx 正常,但请求没落到你的站点配置上。常见原因:

  • 域名解析到了这台服务器,但没配置对应的 server_name;
  • 站点配置文件没被 include,或者改完没 reload;
  • 多个配置监听同一域名,默认匹配到了别的。

排查:

nginx -T | findstr server_name
nginx -t
nginx -s reload

nginx -T 会把所有生效配置拼接输出,搜域名就能看出有没有命中。宝塔面板用户还要确认站点是否绑定该域名、运行状态是否正常。

403 Forbidden

Nginx 自己返回的,表示目录没权限读,或者目录下没有 index 文件。检查 root 指向的目录是否存在、Nginx 运行用户有没有读权限、SELinux 是否拦截。

502 Bad Gateway

请求转给后端(PHP-FPM、Node、Java)时后端没响应。可能是后端挂了、端口不一致、fastcgi_pass 写错、php-fpm 进程打满。先看进程:

ps -ef | grep php-fpm
netstat -lntp | grep 9000

504 Gateway Timeout

后端处理超时。调大超时参数只是缓解,根因还要查程序里的慢查询和外部接口调用。

域名未备案被拦

国内服务器上出现拦截提示,可能是没备案被运营商拦。判断方法很简单:看 Nginx 访问日志里有没有这条请求,没有记录说明请求根本没到服务器。

通用排查顺序

  1. 用 IP 直接访问,排除解析问题;
  2. 看 error.log,一般在 /var/log/nginx/;
  3. 确认站点配置被正确加载;
  4. 确认后端服务在运行;
  5. 检查防火墙和安全组是否放行 80、443。