Nginx перезаписывает на proxy_pass server / path

Можно ли использовать Nginx proxy_pass для перезаписи URL-адреса, как показано ниже:

location /foo {
    proxy_pass http://external-server-IP:8080/some/path/;
}

person Raj kumar    schedule 27.10.2016    source источник
comment
Если вы хотите переписать, это не выход. Использование proxy_pass передает запрос (обычно) на интерфейс шлюза (CGI, WSGI и т. Д.). См. документы.   -  person Keenan Lawrence    schedule 27.10.2016
comment
См. proxy_pass документацию, но исходный и целевой URI должны оканчиваться на /, или ни один из них не заканчивается на /. В противном случае используйте rewrite ... break.   -  person Richard Smith    schedule 27.10.2016


Ответы (1)


На всякий случай, если кому-то это еще нужно, простой способ сделать это:

    location ~ ^/foo/.* {
        rewrite ^/foo(.*) /$1 break;
        proxy_pass https://external-server:8080/remote-path/;
    }

    rewrite ^/foo$ /foo/ redirect;

Это означает, что он отправляет запрос на внешний сервер, маскируя его под вашим собственным доменом.

rewrite ^/foo(.*) /$1 break; Первое изменение заключается в том, чтобы просто удалить добавленный путь URL-адреса (удаленный сервер этого не ожидает.

rewrite ^/foo$ /foo/ redirect; И вторая перезапись на тот случай, если вы захотите использовать индексную страницу, чтобы она также перешла на удаленную индексную страницу.

person Iván Gabriel Campaña Naranjo    schedule 18.03.2021