Надеюсь, вы поможете мне с небольшой, но сложной проблемой nginx:
Я хочу настроить динамический блок местоположения следующим образом:
location /test1/* {
proxy_pass destination.com/api/*;
proxy_buffering off;
}
Если URL-адрес ... / test1 / folder1
запрос должен быть передан в пункт назначения.
Сам сайт «/ test1 /» НЕ должен перенаправляться - только часть после «/ test1 /». Как это возможно?
ОБНОВЛЕНИЕ 11.02.2016: Все еще нет решения: (
Спасибо за вашу помощь / ответы!
Я нашел простое решение. 3 блока местоположения:
location = / test1 / -> оставаться на месте
proxy_pass локальный восходящий поток $ request_uri;
перезаписать ^ (. *) localdomain;location = / test1 -> оставаться локальным
proxy_pass локальный восходящий поток $ request_uri;
перезаписать ^ (. *) localdomain;location / test1 / {
proxy_pass destination.com/api/;
}
Восходящий поток определяется в основном файле конфигурации:
восходящий локальный-восходящий поток {
IP-адрес сервера;
}
Вот и все.
Вам не нужно *
в месте
. И у вас должен быть протокол в proxy_pass
.
Это должно сработать:
location /test1/ {
proxy_pass http://destination.com/api/;
proxy_buffering off;
}
Вы можете переписать URI перед передачей его на сервер следующим образом:
location /test1/ {
proxy_set_header Host destination.com;
proxy_redirect http://destination.com/api/ http://$http_host/test1/;
rewrite ^/test1/(.*)$ /api/$1 break;
proxy_pass destination.com;
}
Надеюсь, это поможет.
Обновление: Добавить proxy_set_header, чтобы изменить Host для исправления доменного имени. Также при необходимости добавьте proxy_redirect для исправления Location в заголовке ответа.