Nginx за место / пропуск перезаписывать uri для proxy_pass

Какое самое быстрое и чистое решение, если вы хотите прокси URL-адрес запрашивать два разных бэкэнда через proxypass на основе местоположения.

location /app1/ { alias /var/www/ruby/public; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; try_files $uri $uri/ @ruby; } location @ruby { proxy_pass http://127.0.0.1:3000; } location /app2/ { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; try_files $uri $uri/ @other; } location @other { proxy_pass http://127.0.0.1:8080; } 

С помощью этого config nginx pass «/ app1» или «/ app2» для прокси и бэкэнд не распознает url / команду.

например, хотел бы перейти только к http://127.0.0.1:3000 /messages при доступе к http:///app1/messages но в конфигурации выше также передать /app1/ as http://127.0.0.1:3000/app1/messages . То же самое касается /app2

Попробуйте поместить «/» в конец имени восходящего streamа, например

 proxy_pass http://127.0.0.1:8080/; 

См. Это сообщение: Как сохранить URL запроса с nginx proxy_pass