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

Nginx多子域名多location配置中/viewer路由不生效问题咨询

问题排查及修复方案

问题根源

  • 路径拼接逻辑错误:root指令会把匹配到的URI完整拼接到根目录后,你访问sub.domain.com/viewer时,Nginx实际查找的文件路径是/opt/viewer/viewer/index.html,而你的静态文件大概率直接存放在/opt/viewer/根目录下,找不到对应文件就触发回退逻辑返回了根路径的页面。
  • try_files回退路径错误:你配置的try_files $uri /index.html里的/index.html是站点根路径的绝对路径,匹配失败后会直接走location /的规则返回对应页面。
  • 额外注意:当前配置的server_name是www.sub.domain.com subdomain.com,和你预期的sub.domain.com不匹配,访问sub.domain.com时不会命中这个server块。

修复后的配置

events {
}
http {
    server {
            listen 80;
            listen [::]:80;
            # 补全你需要的子域名
            server_name www.sub.domain.com sub.domain.com subdomain.com;

            location /viewer {
                    # 把root换成alias,去掉前缀拼接逻辑
                    alias /opt/viewer/;
                    try_files $uri $uri/ /viewer/index.html;
                    index index.html;
            }

            location / {
                    root /opt/client-bo/;
                    try_files $uri /index.html;
                    index index.html;
            }

            location /api {
                    proxy_pass http://localhost:3001;
            }
    }
    server {
            listen 80;
            server_name www.sub2.domain.com sub2.domain.com;
            listen [::]:80;
            location / {
                    proxy_pass http://localhost:3000;
            }
    }
}

生效操作

配置修改完成后执行以下命令验证配置正确性,再重载Nginx即可:

# 验证配置语法
nginx -t
# 重载Nginx配置
systemctl reload nginx

如果重载后仍然无法访问,检查/opt/viewer目录的权限是否为Nginx运行用户(通常是nginx)可读,可执行以下命令修复权限:

chmod -R 755 /opt/viewer
chown -R nginx:nginx /opt/viewer

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 09:15:02