Route by request method

Eugene Prokopiev enp на itx.ru
Вт Фев 9 13:40:02 UTC 2021


Спасибо!

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

вт, 9 февр. 2021 г. в 15:52, Oleg A. Mamontov <oleg на mamontov.net>:
>
> On Tue, Feb 09, 2021 at 03:36:49PM +0300, Eugene Prokopiev wrote:
> >Всем спасибо!
> >
> >А нет ли чего-то среднего: передать запрос с помощью rewrite (это
> >выглядит чище использования фиктивного статуса, хотя явный goto был бы
> >еще чище) в именованный @location вместо internal (тогда переменная
> >request_filename будет содержать правильное значение)?
>
> Если вам хочется возвращать $uri в исходное значение, то это также
> достигается посредством rewrite, заодно тогда и trailing slash не нужен:
> ---
> location / {
>      if ($request_method != 'GET') {
>          rewrite ^/(.*) /proxy/$1 last;
>      }
>      root /data;
> }
> location /proxy/ {
>      internal;
>      rewrite ^/proxy/(.*) /$1 break;
>      proxy_pass http://127.0.0.1:8080;
> }
> ---
>
> >вт, 9 февр. 2021 г. в 11:20, Илья Шипицин <chipitsine на gmail.com>:
> >>
> >> можно на limit_except разрешить только GET. остальное попадет в запрет и навешать на него кастомную страницу ошибки
> >>
> >> вт, 9 февр. 2021 г. в 13:17, Oleg A. Mamontov <oleg на mamontov.net>:
> >>>
> >>> On Tue, Feb 09, 2021 at 12:48:55AM +0200, Gena Makhomed wrote:
> >>> >On 08.02.2021 23:24, Oleg A. Mamontov wrote:
> >>> >
> >>> >>"Традиционный" подход - сделать по требуемому условию rewrite, уводящий
> >>> >>обработку запроса в другой location. Обратите внимание - trailing slash
> >>> >>в proxy_pass в данном случае имеет значение.
> >>> >>---
> >>> >>location / {
> >>> >>     if ($request_method != 'GET') {
> >>> >>         rewrite ^/(.*) /proxy/$1 last;
> >>> >>     }
> >>> >>     root /data;
> >>> >>}
> >>> >>location /proxy/ {
> >>> >>     internal;
> >>> >>     proxy_pass http://127.0.0.1:8080/;
> >>> >>}
> >>> >
> >>> >Возможно переход в именованный location с помощью директив
> >>> >"error_page 418 = @location; return 418;" будет лучше
> >>> >с точки зрения читабельности, чем rewrite директивы,
> >>> >делающие конфиг nginx похожим на конфиг sendmail?
> >>>
> >>> Я не вижу аналогии с sendmail.cf равно как и не вижу, чем подход
> >>> с error_page лучше для решения поставленной задачи.
> >>>
> >>> Что вижу: нецелевое использование директивы / фиктивного статуса,
> >>> появление лишней строки в конфиге и необходимость включать
> >>> recursive_error_pages при использовании реальной обработки последующих
> >>> ошибок проксирования.
> >>>
> >>> Но согласен - так делать тоже можно, TMTOWTDI
> >>>
> >>> >location / {
> >>> >    if ($request_method != 'GET') {
> >>> >        error_page 418 = @proxy;
> >>> >        return 418;
> >>> >    }
> >>> >    root /data;
> >>> >}
> >>> >location @proxy {
> >>> >    proxy_pass http://127.0.0.1:8080;
> >>> >}
> >>> >
> >>> >По-сути вот этот набор из двух директив:
> >>> >"error_page 418 = @location; return 418;"
> >>> >означает простое действие "goto @location;"
> >>> >
> >>> >--
> >>> >Best regards,
> >>> > Gena
> >>> >
> >>> >_______________________________________________
> >>> >nginx-ru mailing list
> >>> >nginx-ru на nginx.org
> >>> >http://mailman.nginx.org/mailman/listinfo/nginx-ru
> >>>
> >>> --
> >>> Cheers,
> >>> Oleg A. Mamontov
> >>>
> >>> mailto: oleg на mamontov.net
> >>>
> >>> skype:  lonerr11
> >>> cell:   +7 (903) 798-1352
> >>> _______________________________________________
> >>> nginx-ru mailing list
> >>> nginx-ru на nginx.org
> >>> http://mailman.nginx.org/mailman/listinfo/nginx-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
>
> --
> Cheers,
> Oleg A. Mamontov
>
> mailto: oleg на mamontov.net
>
> skype:  lonerr11
> cell:   +7 (903) 798-1352
> _______________________________________________
> nginx-ru mailing list
> nginx-ru на nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru



-- 
WBR,
Eugene Prokopiev


Подробная информация о списке рассылки nginx-ru