nginx修改index后仍显示“welcome to nginx!”,说明配置未生效或未命中目标server块:需确认是否访问域名而非ip、检查default_server冲突、验证root路径与index文件存在性及权限、执行nginx -t校验并sudo nginx -s reload重载,同时排除浏览器缓存干扰。

修改 index 指令后仍看到 “Welcome to nginx!”,说明 Nginx 实际加载的不是你期望的首页文件,而是默认 server 块返回的内置欢迎页。核心问题通常不是 index 写错了,而是配置未被真正生效或未命中目标 server 块。
确认当前生效的是哪个 server 块
Nginx 会按匹配优先级选择一个 server 块处理请求。如果你访问的是 IP 地址(如 http://192.168.1.100),Nginx 默认会使用未指定 server_name 或标记为 default_server 的块——这往往就是带欢迎页的那个。
- 检查所有配置文件中是否含有
listen 80 default_server;的 server 块(尤其在/etc/nginx/sites-enabled/default或nginx.conf里) - 确保你自定义的 server 块明确写了
server_name,且浏览器访问时用了该域名(而非 IP);若用 IP 访问,需删掉或注释掉 default_server 块 - 运行
nginx -T(大写 T)可输出全部已加载的生效配置,直接搜索server_name和root确认实际生效路径
检查 root 路径与 index 文件是否真实存在
index 指令只是告诉 Nginx “尝试找哪些文件名”,但前提是这些文件必须存在于 root(或 alias)指定的物理路径下,且 Nginx 进程有读取权限。
- 确认
root路径是绝对路径(如/var/www/my-site),不是相对路径;若写root html;,它实际指向 Nginx 安装目录下的html/子目录(如/usr/local/nginx/html) - 在终端执行
ls -l /你的/root/路径/index.html,验证文件存在且非空 - 检查文件属主和权限:
nginx工作进程(通常是www-data或nginx用户)必须对整个路径有执行(x)权限,对文件有读取(r)权限。常见修复:sudo chown -R www-data:www-data /var/www/my-site+sudo chmod -R 755 /var/www/my-site
验证配置语法并重载服务
即使改了配置,没校验、没重载,改动就等于没做。
- 每次修改后先执行
nginx -t:提示success才代表语法正确 - 用
sudo nginx -s reload重载(不是 restart),确保 worker 进程更新配置 - 若提示
open() "/run/nginx.pid" failed,说明主进程未正常启动,可尝试sudo nginx -c /etc/nginx/nginx.conf显式指定配置再 reload - 检查
ps aux | grep nginx,确认只有一个 master 进程和若干 worker 进程,避免残留旧进程干扰
排除浏览器缓存干扰
浏览器可能缓存了 304 响应或旧页面,导致你以为配置没变。
- 访问时加参数强制刷新,例如
http://your-domain.com/?v=1 - 用无痕模式打开,或直接 curl 测试:
curl -I http://localhost查看响应头中的Content-Type和状态码 - 查看 Nginx
access.log,确认最新请求是否真的打到了你预期的 server 块(日志中会有对应server_name或路径)











