мне нужен этот блок местоположения для маршрутизации к двум разным конечным точкам серверной части
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;
}
, но он работает только для второй перезаписи
Я предполагаю, что вам нужно что-то вроде этого:
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
.
Используйте местоположение и псевдоним для каждого отдельного URL.
location /zones/appinfo.axd {
alias /zones/appinfo.axd;
}
location /zones/api/v2/zones {
alias /api/v2/zones;
}
Обратите внимание, что это для точных URL, которые вы указали. Вы не указали подстановочные знаки или требования к вложенным папкам, только эти точные URL-адреса.