Route by request method
Oleg A. Mamontov
oleg на mamontov.net
Пн Фев 8 21:24:02 UTC 2021
On Mon, Feb 08, 2021 at 07:15:43PM +0300, Eugene Prokopiev wrote:
>Здравствуйте!
>
>Требуется по GET /data.txt отдавать самый файл как есть, а по
>POST/PUT/DELETE /data.txt передавать запрос в какой-то бакенд через
>proxy_pass - по идее не самый редкий кейс, но никакого пример
>нагуглить не могу. Попробовал сделать так:
>
>location / {
> if ($request_method = 'GET') {
> root /data;
> }
> proxy_pass http://127.0.0.1:8080;
>}
>
>Но в if ничего не попадает. Я что-то делаю не неправильно? Или это
>вообще принято делать иначе?
"Традиционный" подход - сделать по требуемому условию 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/;
}
---
>--
>WBR,
>Eugene Prokopiev
>_______________________________________________
>nginx-ru mailing list
>nginx-ru at nginx.org
>http://mailman.nginx.org/mailman/listinfo/nginx-ru
--
Cheers,
Oleg A. Mamontov
Подробная информация о списке рассылки nginx-ru