Eсть частично связанный вопрос здесь но мне это не помогает.
Для site.com
у меня есть
location /sub/ {
proxy_set_header Accept-Encoding "";
proxy_pass http://192.168.1.1/ ;
}
IP 192.168.1.1 имеет виртуальную машину с сервером Apache на ней.
Теперь, когда я иду либо site.com/sub
или site.com/sub/
, он работает нормально, как и ожидалось.
Но когда я иду в site.com/sub/sub1
, он перенаправляется на 192.168.1.1/sub1/
в то время как site.com/sub/sub1/
(с завершающей косой чертой) работает должным образом.
Используя proxy_redirect
похоже, не имеет значения. Я также пробовал использовать с регулярным выражением, но безрезультатно.
location ~/sub/?(.*)$ {
proxy_set_header Accept-Encoding "";
proxy_pass http://192.168.1.1/$1 ;
}
Установка заголовка Host
просто перенаправляет на site.com/sub1/
.
Журналы Nginx показывают перенаправление 301.
Я могу легко решить проблему, просто создав новый блок местоположения для / sub / sub1 /, но мне бы очень хотелось иметь возможность обрабатывать его в том же блоке.
Так как site.com/sub/sub1/
с конечной косой чертой уже работает нормально, как мне получить site.com/sub/sub1
работать правильно вместо перенаправления на 192.168.1.1/sub1
? Что мне здесь не хватает?
Я считаю, что решил проблему, используя proxy_redirect
. То, что я попробовал сначала (при публикации вопроса), было перенаправлением прокси для
proxy_redirect https://example.com/ https://example.com/sub
Что сработало, было
proxy_redirect http://example.com/ http://example.com/sub
Я получил ответ, внимательно изучив логи nginx и вывод curl -I