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

Nginx子域名配置异常:访问子域名跳转至主域名根目录

问题分析与解决方案

你配置了子域名panel.example.com,但访问时显示主域名example.com的/var/www/wordpress目录内容,而非预期的/var/www/panel,核心问题可能出在DNS解析、Nginx配置重载或HTTPS匹配上,以下是具体修复步骤:

1. 修正Cloudflare DNS记录

你提到在Cloudflare添加的是名称为Blog的A记录,但子域名是panel.example.com,这会导致DNS无法正确解析panel.example.com到你的服务器。需要在Cloudflare后台添加:

  • 类型:A
  • 名称:panel
  • 内容:你的服务器IP
    添加后等待DNS生效(通常几分钟到几小时)。

2. 重载Nginx配置

修改Nginx配置文件后,必须让服务加载新配置,执行以下命令:

sudo nginx -t && sudo systemctl reload nginx

nginx -t会先检查配置语法是否正确,避免重载后服务崩溃。

3. 处理HTTPS访问场景

如果你用https://panel.example.com访问,当前子域名仅配置了80端口(HTTP),Nginx找不到对应的443(HTTPS)server块时,会匹配到主域名的443配置(因为是第一个加载的HTTPS server),导致显示主域名内容。需要给子域名添加HTTPS配置:

方法1:添加443 server块

server {
    listen 443 ssl;
    listen [::]:443 ssl;

    server_name panel.example.com www.panel.example.com;

    # 替换为你的SSL证书和密钥路径,可通过Certbot免费申请
    ssl_certificate /etc/ssl/panel.example.com.pem;
    ssl_certificate_key /etc/ssl/panel.example.com.key;

    root /var/www/panel;
    index index.php index.html index.nginx-debian.html;

    location / {
        try_files $uri $uri/ /index.php$is_args$args;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
    }
}

方法2:强制HTTP跳转至HTTPS(可选)

在子域名的80端口server块末尾添加跳转规则:

return 301 https://$server_name$request_uri;

4. 验证Nginx配置加载情况

执行nginx -T查看所有已加载的Nginx配置,确认panel.example.com的server块存在且无语法错误。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 05:17:13