Welcome! Log In Create A New Profile

Advanced

Re: Route by request method

Maxim Dounin
February 09, 2021 09:14AM
Hello!

On Tue, Feb 09, 2021 at 04:40:02PM +0300, Eugene Prokopiev wrote:

> Но я вот задумался: а нельзя ли прямо внутри if использовать
> pass_proxy? Тут -
> https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass
> указан
> сontext: if in location - значит можно? Я попробовал - не работает. Почему?

Теоретически - можно. На практике - это чревато проблемами.
Подробный ответ на вопрос "почему" есть в статье "if is evil", она
ещё сохранилась в остатках wiki:

https://www.nginx.com/resources/wiki/start/topics/depth/ifisevil/

Скажем, вот такая конфигурация работает без проблем:

location / {
if ($request_method != GET) {
proxy_pass http://127.0.0.1:8081;
}

# static
}

Но уже вот такая сделает совсем не то, что хотелось бы:

location / {
if ($request_method != GET) {
proxy_pass http://127.0.0.1:8081;
}

set $true 1;
if ($true) {
# nothing
}

# static
}

Конкретно для исходной задачи наиболее простым и органичным
решением будет, IMHO, использование limit_except, как-то так:

location / {
limit_except GET {
proxy_pass http://127.0.0.1:8081;
}

# static
}

Но и тут есть свои нюансы: скажем, если в location'е есть
директивы модуля rewrite, в часности - те же if'ы, то они просто
не будут работать для запросов, попавших в блок limit_except.

Ну а наиболее универсальное решение из всех возможных уже привёл
Олег - сделать rewrite по нужному условию в другой location и там
уже делать что угодно.

--
Maxim Dounin
http://mdounin.ru/
_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

Route by request method

Eugene Prokopiev February 08, 2021 11:12AM

Re: Route by request method

fox February 08, 2021 11:22AM

Re: Route by request method

Oleg A. Mamontov February 08, 2021 04:26PM

Re: Route by request method

Gena Makhomed February 08, 2021 05:50PM

Re: Route by request method

Oleg A. Mamontov February 09, 2021 03:18AM

Re: Route by request method

Илья Шипицин February 09, 2021 03:22AM

Re: Route by request method

Eugene Prokopiev February 09, 2021 07:34AM

Re: Route by request method

Eugene Prokopiev February 09, 2021 07:44AM

Re: Route by request method

Oleg A. Mamontov February 09, 2021 07:54AM

Re: Route by request method

Eugene Prokopiev February 09, 2021 08:38AM

Re: Route by request method

Maxim Dounin February 09, 2021 09:14AM

Re: Route by request method

Eugene Prokopiev February 09, 2021 10:04AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 237
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready