Невозможно получить доступ к родительскому каталогу через обратный прокси на поддомене - PullRequest
0 голосов
/ 19 июня 2020

Это мой текущий 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.test - http://127.0.0.1:3000/subdomain/.

Проблема : работает правильно, но возвращает 404 для всего в пределах {tenant}.mysalon.test/_nuxt/, потому что /_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 голосов
/ 19 июня 2020

Я не могу сказать вам, почему ваш второй блок location нарушает рабочий процесс, я не видел никаких проблем с этой конфигурацией, но вы можете попробовать использовать один блок location и добавить префикс /subdomain к запрошенный URI внутри этого блока, если запрошенный URI не начинается с /_nuxt/:

    location / {
        expires $expires;

        rewrite                             ^(?!/_nuxt)(/.*) /subdomain$1 break;

        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;

    }
...