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.

Другие вопросы по тегам