Понятно, спасибо! вт, 9 февр. 2021 г. в 17:12, Maxim Dounin <mdou...@mdounin.ru>: > > 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
-- WBR, Eugene Prokopiev _______________________________________________ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru