Route by request method

Gena Makhomed gmm на csdoc.com
Пн Фев 8 22:48:55 UTC 2021


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?

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