Назад | Перейти на главную страницу

Nginx proxy_pass в подпапку папки приложения работает только с завершающей косой чертой

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