nginx 具有多个位置指令和子域

nginx with multiple locations directives with subdomains

我正在尝试在 nginx conf 中实现类似的东西:

子域

子域 2

唯一不起作用的路由是 viewer,我从“location /”得到 html。所有其他配置都运行良好。

我试过将查看器移到底部,然后移到顶部和中间,不管怎样都行不通。

我用的是CentOS7。这是服务器中当前的配置:

events {
}
http {
    server {
            listen 80;
            listen [::]:80;
            server_name www.sub.domain.com subdomain.com;

            location /viewer {
                    root /opt/viewer/;
                    try_files $uri /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";
            }
    }
}

谢谢!

如果您的查看器应用程序位于 /opt/viewer 目录中并且您希望它在 /viewer URI 前缀下可用,您应该使用 root /opt; 作为 location /viewer { ... } .检查 root and alias 指令之间的区别。

接下来,try_files 指令的最后一个参数被视为要重新评估的新 URI,因此您 /index.html 被视为将与 location / { ... }。您应该将该指令更改为

try_files $uri /viewer/index.html;