Местоположение nginx для обслуживания нескольких конечных точек

мне нужен этот блок местоположения для маршрутизации к двум разным конечным точкам серверной части

location ~* /zones/

, он должен иметь логику, позволяющую выполнять эти перезаписи успешно:

/zones/appinfo.axd >>> /zones/appinfo.axd
/zones/api/v2/zones >>> /api/v2/zones

вот что у меня сейчас:

location ~* /zones/ {
    proxy_set_header Host $http_host;
    proxy_set_header Connection "";
    rewrite ^ /api/v2/zones break;
    proxy_pass http://zone_api;
}

, но он работает только для второй перезаписи

0
задан 21 October 2017 в 02:47
2 ответа

Я предполагаю, что вам нужно что-то вроде этого:

location ~ ^/zones(/api.+)$ {
    proxy_set_header Host $http_host;
    proxy_set_header Connection "";
    proxy_pass http://zone_api$1;
}

location /zones {
    proxy_set_header Host $http_host;
    proxy_set_header Connection "";
    proxy_pass http://zone_api;
}

Первое местоположение использует регулярное выражение для захвата строки после / Zone часть информации о переменной, а затем эта переменная используется для proxy_pass назначения.

Второе местоположение - это простое совпадение префикса, которое передает пути URL как есть proxy_pass .

0
ответ дан 24 November 2019 в 03:42

Используйте местоположение и псевдоним для каждого отдельного URL.

location /zones/appinfo.axd {
  alias /zones/appinfo.axd;
}
location /zones/api/v2/zones {
  alias /api/v2/zones;
}

Обратите внимание, что это для точных URL, которые вы указали. Вы не указали подстановочные знаки или требования к вложенным папкам, только эти точные URL-адреса.

0
ответ дан 24 November 2019 в 03:42

Теги

Похожие вопросы