Nginx: как proxy_pass подкаталог в другой подкаталог
Пожалуйста, помогите, я пытаюсь прокси передать мой domain.com/travel к приложению узла, содержимое которого работает здесь 255.255.255.255:1234/travel... Как мне это сделать?
В настоящее время у меня есть это:
location /travel/ {
rewrite ^/travel(/.*)$ $1 break;
proxy_pass http://255.255.255.255:1234/travel;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
Это частично работает, но вместо этого идет в корень приложения в http://255.255.255.255:1234/. Я смог сделать это в Apache с этим
ProxyPreserveHost On
ProxyPass /travel/ http://255.255.255.255:1234/travel/
ProxyPassReverse /travel/ http://255.255.255.255:1234/travel/
ProxyPass /travel http://255.255.255.255:1234/travel/
ProxyPassReverse /travel http://255.255.255.255:1234/travel/
но после перехода на Nginx я не могу повторить это. Помогите?
1 ответ
Вы должны быть в состоянии использовать это:
location /travel(/.*)$ {
rewrite ^ $1 break;
proxy_pass http://example.com:1234/travel$1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
Я переместил захват регулярных выражений в location
директива, хотя это не имеет большого значения. Затем я добавил $1
до конца proxy_pass
, таким образом proxy_pass
целевой URL получает результаты захвата регулярных выражений, добавленные в конец URL.