无法通过子域上的反向代理访问父目录

时间:2020-06-19 12:08:58

标签: nginx nuxt.js nginx-reverse-proxy nginx-location

这是我当前的Nginx服务器块:

server {
    listen 80;
    server_name ~^(?<tenant>.+)\.mysalon\.test$;

    gzip            on;
    gzip_types      text/plain application/xml text/css application/javascript;
    gzip_min_length 1000;

    location / {
        expires $expires;

        proxy_redirect                      off;
        proxy_set_header Host               $host;
        proxy_set_header X-Real-IP          $remote_addr;
        proxy_set_header                     x-Tenant $tenant;
        proxy_set_header X-Forwarded-For    $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto  $scheme;

        proxy_read_timeout                  1m;
        proxy_connect_timeout               1m;

        proxy_pass                          http://127.0.0.1:3000/subdomain/;

    }
}

它是{tenant}.mysalon.testhttp://127.0.0.1:3000/subdomain/的反向代理。

问题: 它可以正常工作,但是它为{tenant}.mysalon.test/_nuxt/中的所有内容返回404,这是因为/_nuxt不在/subdomain/目录中,而在父http://127.0.0.1:3000/目录中。

所以我添加了以下内容:

location ^~ /_nuxt/ {
       proxy_pass    http://127.0.0.1:3000/_nuxt/;
}

这样,即使在子域上,它也可以访问/_nuxt

但是,由于某些原因,这个新的位置块使第一个位置块处于不活动状态。

访问{tenant}.mysalon.test时,它返回http://127.0.0.1:3000而不是http://127.0.0.1:3000/subdomain/

1 个答案:

答案 0 :(得分:0)

我无法告诉您您的第二个location块为什么会中断工作流程,我看不到此配置有任何问题,但是您可以尝试使用单个location块并附加{如果请求的URI并非以/subdomain开头,则{1}}将在此块内作为请求的URI的前缀:

/_nuxt/