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

20

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

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

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

theTuxRacer
источник

Ответы:

15

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

alvosu
источник