Route by request method

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


Всем спасибо!

А нет ли чего-то среднего: передать запрос с помощью 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


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