Оказывается, это известный (и неудовлетворенный) фичреквест - http://mailman.nginx.org/pipermail/nginx-ru/2011-October/043596.html
вт, 9 февр. 2021 г. в 15:36, Eugene Prokopiev <e...@itx.ru>: > > Всем спасибо! > > А нет ли чего-то среднего: передать запрос с помощью rewrite (это > выглядит чище использования фиктивного статуса, хотя явный goto был бы > еще чище) в именованный @location вместо internal (тогда переменная > request_filename будет содержать правильное значение)? > > вт, 9 февр. 2021 г. в 11:20, Илья Шипицин <chipits...@gmail.com>: > > > > можно на limit_except разрешить только GET. остальное попадет в запрет и > > навешать на него кастомную страницу ошибки > > > > вт, 9 февр. 2021 г. в 13:17, Oleg A. Mamontov <o...@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: o...@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 mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru