Как мне сделать ProxyPassReverse переписать относительные перенаправления? - PullRequest
0 голосов
/ 09 апреля 2019

У меня проблемы с получением относительных перенаправлений, работающих с Apache и ProxyPassReverse.Если я на внутреннем сервере использую абсолютные перенаправления т.е.Location: http://fake.frontend.com/cat, все прокси, как и предполагалось, однако, если я на внутреннем сервере использую относительные перенаправления, т.е.Location: /cat это не работает.

Я использую Apache 2.4.25 в Debian.

У меня есть следующая конфигурация на прокси-сервере:

<Location /test/>
    ProxyPass http://fake.backend.local/
    ProxyPreserveHost Off
    ProxyPassReverse http://fake.backend.local/
    SetOutputFilter INFLATE;proxy-html;DEFLATE
    ProxyHTMLURLMap / /cat/
    ProxyHTMLURLMap fake.backend.local/ /cat/
    ProxyHTMLDocType "<!DOCTYPE html>"
</Location>

КогдаЯ получаю доступ к прокси-серверу на http://fake.frontend.com/cat/, внутренний сервер перенаправляется в зависимости от того, вошли в систему или нет.Если я не вошел в систему, я перенаправлен (302) на /Signin.Если я вошел в систему, я перенаправлен (302) на /dashboard.Если внутреннее приложение использует абсолютные пути в заголовке местоположения, например: http://fake.backend.local/Signin I, браузер загружает http://fake.frontend.com/cat/Signin, как и предполагалось.Однако, если пользователи бэкэнда используют относительные пути в заголовке местоположения, то есть: /Signin браузер загружает http://fake.frontend.com/Signin (обратите внимание на отсутствующего кота).

Я хочу использовать относительные пути на бэкенде и все равно получаюперенаправлен на http://fake.frontend.com/cat/Signin.Как настроить прокси для работы с относительными заголовками местоположений?

1 Ответ

0 голосов
/ 09 апреля 2019

Я нашел и статья на askapache.com , в которой был пример, где нужно установить ProxyPassReverse на /.

. Переход к следующей конфигурации решил мою проблему:

<Location /test/>
    ProxyPass http://fake.backend.local/
    ProxyPreserveHost Off
    ProxyPassReverse /
    SetOutputFilter INFLATE;proxy-html;DEFLATE
    ProxyHTMLURLMap / /cat/
    ProxyHTMLURLMap fake.backend.local/ /cat/
    ProxyHTMLDocType "<!DOCTYPE html>"
</Location>
...