Рейтинг:0

Как установить proxy_pass условно на основе значения $host?

флаг ve

я пытаюсь установить proxy_pass на основе значения $ host я попробовал это:

местоположение /api/v1/ {
    если ($host = .*\.npreprod.company.com)
    {
            proxy_pass https://frontend-api.preprod.company.com/api/v1/;
    }
}

однако я получил ошибку

nginx: [emerg] «proxy_pass» не может иметь часть URI в местоположении, указанном регулярным выражением, или внутри именованного местоположения, или внутри оператора «if», или внутри блока «limit_except» в /etc/nginx/sites-enabled/nuxtjs.conf :45

Итак, каков правильный способ добиться этого?

флаг jp
Отвечает ли это на ваш вопрос? [Регулярное выражение местоположения Nginx не работает с прокси-проходом] (https://serverfault.com/questions/649151/nginx-location-regex-doesnt-work-with-proxy-pass)
флаг in
Я не думаю, что это правильный дубликат. Я почти уверен, что у нас уже есть один или несколько вопросов, касающихся [проблемы if is evil](https://www.nginx.com/resources/wiki/start/topics/depth/ifisevil/), но я не могу найти один прямо сейчас.
simo avatar
флаг ve
@AlexD Я не уверен, как бы я применил ответ на этот вопрос в моем случае.
флаг jp
@GeraldSchneider этот описывает, как лучше сопоставить имя хоста https://serverfault.com/questions/286828/nginx-matching-server-host-name-in-location-directive
Richard Smith avatar
флаг jp
Вместо того, чтобы проверять значение `$host` внутри блока `server`, вы можете создать отдельный блок `server`. См. [этот документ](http://nginx.org/en/docs/http/server_names.html).
simo avatar
флаг ve
Спасибо @AlexD, да, это то, что я сделал, это сработало хорошо.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.