Czy dyrektywy Proxypass wymagają dyrektywy ProxyPassReverse?

20

Czy wszystkie dyrektywy ProxyPass wymagają dyrektywy ProxyPassReverse?

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

Widziałem ten fragment i rozumiem, że cały przychodzący ruch foo.example.comjest zbliżony do foo.example.com:8080. Co robi druga linia?

theTuxRacer
źródło

Odpowiedzi:

15

Ta dyrektywa pozwala Apache dostosować adres URL w nagłówkach Location, Content-Location i URI w odpowiedziach na przekierowanie HTTP .

Załóżmy na przykład, że lokalny serwer ma adres http://example.com/ ; następnie

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

spowoduje nie tylko przekształcenie żądania lokalnego w http://example.com/mirror/foo/bar w wewnętrzną konwersję w żądanie proxy do http://backend.example.com/bar (tutaj funkcjonalność ProxyPass). Zajmuje się także przekierowaniami, które serwer backend.example.com wysyła: gdy http://backend.example.com/bar jest przekierowywany przez niego na http://backend.example.com/quux Apache dostosowuje to do http: / /example.com/mirror/foo/quux przed przekazaniem odpowiedzi przekierowania HTTP do klienta. Należy zauważyć, że nazwa hosta użyta do zbudowania adresu URL jest wybrana w odniesieniu do ustawienia dyrektywy UseCanonicalName.

alvosu
źródło