You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nginx本地开发配置异常:子域名加载主站index.php

搞定Nginx子域名加载主站index.php的问题

嘿,我来帮你排查这个头疼的问题!这种子域名都跳主站的情况,大多是Nginx配置里的几个小疏漏,咱们一步步来揪出问题:

1. 先查主站的默认服务器配置

首先得确认你的主站(mylocalhost.com)配置是不是把自己设成了默认服务器。如果主站的listen指令加了default_server,而子域名的配置没被正确匹配,Nginx就会把所有没匹配上的请求都丢给主站处理。

比如主站要是这么写就容易出问题:

server {
    listen 80 default_server;
    server_name mylocalhost.com;
    # ... 其他主站配置
}

解决办法:要么确保子域名的配置文件被Nginx正确加载(比如放在/etc/nginx/sites-enabled/目录下),要么如果主站不是默认要处理所有请求的话,把default_server去掉,或者把默认服务器指向常用的子域名配置。

2. 补全子域名配置里的关键项

从你给的nowingnews.mylocalhost.com配置片段来看,你没写完root(根目录)和index的设置——这大概率是核心问题!如果子域名的server块没指定自己的根目录,Nginx会用全局的根目录配置,而全局配置可能刚好指向主站的目录,自然就加载主站的index.php了。

给你补全一个正确的子域名配置模板,你照着改:

server {
    listen 80;
    server_name nowingnews.mylocalhost.com;

    # 日志最好分开,方便排查问题
    access_log /var/log/nginx/nowingnews_access.log;
    error_log /var/log/nginx/nowingnews_error.log;

    # 重点!指定这个子域名对应的项目根目录
    root /var/www/nowingnews; # 换成你实际的项目路径
    index index.php index.html index.htm;

    # 如果是PHP项目,必须有这段PHP处理配置
    location ~ \.php$ {
        fastcgi_pass unix:/run/php/php7.4-fpm.sock; # 换成你自己的PHP-FPM套接字路径,比如php8.2-fpm.sock
        fastcgi_index index.php;
        # 这里一定要用$document_root,不能硬编码主站路径!
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

特别注意SCRIPT_FILENAME这一行,要是写成固定的主站路径,哪怕根目录对了,PHP还是会加载主站的文件。

3. 让配置生效,别忘测试!

改完配置后,先别急着重启,先测试配置有没有语法错误:

sudo nginx -t

如果提示test is successful,再重新加载Nginx(不中断服务):

sudo systemctl reload nginx

要是测试报错,先把语法问题修好,比如括号没关、路径不存在这些小问题。

4. 确认本地DNS解析没错

你得确保本地的hosts文件里已经加了子域名的解析,不然浏览器找不到你的本地服务器:

  • Windows:C:\Windows\System32\drivers\etc\hosts
  • Linux/macOS:/etc/hosts

在文件里加这几行:

127.0.0.1 mylocalhost.com
127.0.0.1 nowingnews.mylocalhost.com
127.0.0.1 wasob.mylocalhost.com

保存后,刷新DNS缓存(Windows用ipconfig /flushdns,Linux/macOS用sudo dscacheutil -flushcache)。

5. 清掉浏览器缓存再测试

有时候浏览器会缓存旧的页面或者DNS记录,你改了配置还是看到主站。试试用Ctrl+Shift+R(Windows/Linux)或者Cmd+Shift+R(macOS)强制刷新,或者直接清空浏览器的缓存和Cookie。

6. 看日志找线索

如果还是不行,去看子域名的access日志(比如/var/log/nginx/nowingnews_access.log),看看请求的Host头是不是nowingnews.mylocalhost.com,还有请求的文件路径是不是指向了主站的目录。这能帮你快速判断是Nginx没匹配到正确的server块,还是路径配置错了。


内容的提问来源于stack exchange,提问作者user3681312

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:48:22