Requests to the new URL

Maxim Dounin mdounin на mdounin.ru
Пн Июл 4 18:30:20 UTC 2022


Hello!

On Mon, Jul 04, 2022 at 02:45:05PM +0800, Alexander Titaev wrote:

> Здравствуйте, Rasin.
> 
> Вы писали 29 июня 2022 г., 22:33:30:
> 
> > Добрый день.
> > Подскажите пожалуйста, есть софт, в докере поднятый.
> > Работает только с location / {
> > proxy_pass              http://127.0.0.1:3333;
> > ...
> > }
> > Хочу сделать чтобы открывался location /soft {
> > proxy_pass              http://127.0.0.1:3333;
> > ...
> > }
> > Но с последним выдаёт, что не может найти скрипты и прочее.
> > Я так понимаю он посылает заголовок, который непонятен софту.
> > Что необходимо сделать, куда копнуть, подскажите пожалуйста.
> 
> в последнем случае проксируемый url будет содержать /soft, вот его и надо реврайтить в /

Цитата из документации (http://nginx.org/r/proxy_pass/ru):

: Если директива proxy_pass указана с URI, то при передаче запроса 
: серверу часть нормализованного URI запроса, соответствующая 
: location, заменяется на URI, указанный в директиве:
: 
: location /name/ {
:     proxy_pass http://127.0.0.1/remote/;
: }

То есть надо написать:

location /soft/ {
    proxy_pass http://127.0.0.1:3333/;
    ...
}

Обращаю внимание на "/" в конце префикса location и в конце 
параметра proxy_pass.

Стоит, однако, помнить, что в общем случае это может не работать, 
так как если внутри запрашиваемых страниц есть ссылки на другие 
ресурсы, оно могут быть не относительными, и соответственно просто 
так не заработают.  Если софт умеет относительные ссылки и/или 
даёт возможность задать префикс для загружаемых дополнительных 
ресурсов - то хорошо.  Если же нет, то увы (можно пытаться 
переписывать ссылки в nginx'е с помощью sub_filter, но в общем 
случае это не решение).

-- 
Maxim Dounin
http://mdounin.ru/



Подробная информация о списке рассылки nginx-ru