Nginx配置多站点时访问第二个站点始终返回默认index.html如何解决
问题排查&解决步骤
1. 确认配置已正确加载无语法错误
- 若使用Debian/Ubuntu默认Nginx结构,配置需放在
/etc/nginx/sites-available/目录下,执行软链命令启用配置:
若使用CentOS/RHEL系,确认ln -s /etc/nginx/sites-available/knowinapp.conf /etc/nginx/sites-enabled/knowinapp.conf放在/etc/nginx/conf.d/目录下,且后缀为.conf。 - 执行命令检查配置语法:
确保返回结果为nginx -ttest is successful,如有报错先修正对应内容。 - 执行
nginx -T打印所有已加载的配置,确认输出中包含knowinapp.conf的内容,排除配置未加载问题。
2. 确认访问匹配域名规则
你当前的knowinapp.conf仅匹配knowinapp.com和www.knowinapp.com两个域名:
- 若直接用服务器IP访问,会命中默认的
default_server站点,显示/var/www/html下的内容,属于正常逻辑。 - 本地测试时需修改本地hosts文件添加映射:
再通过域名访问站点。你的服务器IP knowinapp.com www.knowinapp.com - 可通过curl指定Host头验证配置是否生效:
若返回内容为curl -H "Host: knowinapp.com" 你的服务器IP/var/www/knowinapp.com/index.html的内容,说明Nginx配置正常,问题出在访问侧的域名解析或缓存。
3. 确认目录权限&文件存在
- 检查站点目录权限,确保Nginx默认运行用户
www-data有读取权限:chown -R www-data:www-data /var/www/knowinapp.com chmod -R 755 /var/www/knowinapp.com - 确认
/var/www/knowinapp.com目录下存在index.html文件,且内容正确。 - 若使用CentOS/RHEL系系统,默认开启SELinux,需执行命令修正目录上下文:
chcon -R -t httpd_sys_content_t /var/www/knowinapp.com
4. 重载服务&清理缓存
- 修改配置后必须执行重载命令让配置生效:
systemctl reload nginx - 清理浏览器缓存或使用无痕模式访问,排除浏览器缓存旧页面的问题。
内容的提问来源于stack exchange,提问作者Cihat Şaman
相关产品推荐
相关产品推荐

