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@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

--
Cheers,
Oleg A. Mamontov
_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Ответить