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

Ответить