域名解析改完,备案也过了,用浏览器打开却是一页白底黑字的 Welcome to nginx!。客户截图过来问是不是没部署,其实代码早就传上去了。

这页是谁返回的

这是 nginx 装好后的默认欢迎页,文件在 /usr/share/nginx/html/index.html。请求进来后没匹配到任何 server 块,nginx 就交给 default_server,它的 root 指向默认目录,于是返回这一页。说明 nginx 在跑、80 端口通,只是没找到你的站点配置。

先确认请求打到了哪台机器

用 curl -I 带上域名看返回头,Server 是 nginx 说明请求到了 nginx。再翻 access.log 里有没有这条记录,没有就是 DNS 或 CDN 的问题。域名解析到旧服务器、CDN 回源配错,都会让你误以为配置没生效,白白重装一遍环境。

server_name 没写对

  • 漏了 www:只写了主域名,访问带 www 的地址就落到默认站点。
  • 配置没引入:站点文件放在 sites-available 却没在 sites-enabled 里做软链。
  • 默认站点抢占:另一个配置文件里写了 default_server,优先级更高。
  • 只监听特定地址:listen 写成了具体 IP,用别的地址访问就不匹配。

三条命令定位

nginx -T | grep -n server_name
ls -l /etc/nginx/sites-enabled/
curl -I -H Host:example.com http://127.0.0.1

nginx -T 会把最终生效的配置全打出来,看你的 server_name 在不在里面。用 Host 头直接打本机,能排除 DNS 干扰。

改完还不生效

先 nginx -t 检查语法,再 nginx -s reload。改了配置忘记 reload 是最常见的原因。站点目录里确实没有 index.html 或 index.php,匹配上了也会 403 或 404,记得把入口文件放对位置。确认无误后可以把默认站点删掉或改名,省得以后再被它误导。