Кажется, что-то есть по этому вопросу.
Есть переменная $request_method, по ней можно выполнять балансировку. Пробую такую конфигурацию:
upstream master {
server unix:/tmp/flask.sock;
}
upstream read_api {
server api.service.ru;
}
map $request_method $upstream_location {
GET read_api;
default master;
}
server {
listen 80;
server_name service.ru;
root /home/web/service;
include uwsgi_params;
include proxy_params;
location / {
if ($http_referer !~* ^($|http://) ){
return 403;
}
uwsgi_pass unix:/tmp/flask.sock;
}
location /restapi/v1/ {
if ($upstream_location = "master") {
uwsgi_pass unix:/tmp/flask.sock;
}
if ($upstream_location != "master") {
proxy_pass https://$upstream_location;
}
}
}
Работает. Возможно, есть другой путь. Если кто-то подскажет - буду признателен.