Ответ 1
Попробуйте положить "/" в конец имени восходящего потока например
proxy_pass http://127.0.0.1:8080/;
Пожалуйста, смотрите это сообщение: Как сохранить URL-адрес запроса с помощью nginx 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://<nginx>/app1/messages
, но в приведенной выше конфигурации также передать /app1/
как http://127.0.0.1:3000/app1/messages
. То же самое касается /app2
Попробуйте положить "/" в конец имени восходящего потока например
proxy_pass http://127.0.0.1:8080/;
Пожалуйста, смотрите это сообщение: Как сохранить URL-адрес запроса с помощью nginx proxy_pass