Route by request method

Eugene Prokopiev enp на itx.ru
Вт Фев 9 12:46:47 UTC 2021


Оказывается, это известный (и неудовлетворенный) фичреквест -
http://mailman.nginx.org/pipermail/nginx-ru/2011-October/043596.html

вт, 9 февр. 2021 г. в 15:36, Eugene Prokopiev <enp на itx.ru>:
>
> Всем спасибо!
>
> А нет ли чего-то среднего: передать запрос с помощью rewrite (это
> выглядит чище использования фиктивного статуса, хотя явный goto был бы
> еще чище) в именованный @location вместо internal (тогда переменная
> request_filename будет содержать правильное значение)?
>
> вт, 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



-- 
WBR,
Eugene Prokopiev


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