Нужны ли директивам Proxypass директива ProxyPassReverse?

Все ли директивы ProxyPass нуждаются в директиве ProxyPassReverse?

ProxyPass / http://foo.example.com:8080/  
ProxyPassReverse / http://www.example.com/

Я видел этот фрагмент и понимаю, что весь трафик foo.example.com проксируется на foo.example.com:8080. Что делает вторая строка?

1 ответ

Решение

Эта директива позволяет Apache настраивать URL-адреса в заголовках Location, Content-Location и URI в ответах HTTP-перенаправления.

Например, предположим, что локальный сервер имеет адрес http://example.com/; затем

ProxyPass /mirror/foo/ http://backend.example.com/
ProxyPassReverse /mirror/foo/ http://backend.example.com/
ProxyPassReverseCookieDomain backend.example.com public.example.com
ProxyPassReverseCookiePath / /mirror/foo/

не только приведет к тому, что локальный запрос для http://example.com/mirror/foo/bar будет внутренне преобразован в запрос прокси на http://backend.example.com/bar (функциональность, которую Proxy Pass предоставляет здесь). Он также заботится о перенаправлениях, отправляемых сервером backend.example.com: когда он перенаправляет http://backend.example.com/quux на http://backend.example.com/quux Apache настраивает это на http://example.com/mirror/foo/quux перед пересылкой ответа перенаправления HTTP клиенту. Обратите внимание, что имя хоста, используемое для создания URL-адреса, выбирается в соответствии с настройкой директивы UseCanonicalName.

Другие вопросы по тегам