Apache ProxyPass가 원격 호스트의 콘텐츠를 프록시 처리하지 않는 것 같습니다.

Apache ProxyPass가 원격 호스트의 콘텐츠를 프록시 처리하지 않는 것 같습니다.

내 "마스터" 사이트의 URL에서 원격 사이트인 "east"에 대한 프록시를 생성하려고 하는데 리디렉션 루프에 갇혔습니다. 이것은 내가 기대했던 동작이 아닙니다. ProxyPass가 콘텐츠를 URL에 다시 쓴다는 것을 이해했지만 마치 "마스터" 호스트로 리디렉션되는 것처럼 작동하는 것 같습니다.

적용된 구성 파일은 매우 간단합니다.

user@master:/etc/apache2/conf-enabled# cat multisite_proxy.conf
<Location /prod_east>
        ProxyPass http://east.domain.com/prod_east
        ProxyPassReverse http://east.domain.com/prod_east
</Location>

cURL을 사용하면 내 출력은 다음과 같습니다.

user@master:~# curl -IL https://master.domain.com/prod_east/
HTTP/1.1 302 Found
Date: Thu, 17 Dec 2020 22:58:41 GMT
Server: Apache/2.4.38 (Debian)
Location: https://master.domain.com//prod_east/
Content-Type: text/html; charset=iso-8859-1

...

curl: (47) Maximum (50) redirects followed

east의 Apache 로그에는 cURL의 요청이 표시됩니다.

탐색하면 http://east.domain.com/prod_east응용 프로그램의 로그인 페이지로 리디렉션됩니다(예상대로). cURL을 사용하여 이를 조사하면 다음과 같습니다.

user@master:~# curl -IL http://east.domain.com/prod_east
HTTP/1.1 302 Found
Date: Thu, 17 Dec 2020 23:17:38 GMT
Server: Apache/2.4.38 (Debian)
Location: https://east.domain.com//prod_east
Content-Type: text/html; charset=iso-8859-1

HTTP/1.1 302 Found
Date: Thu, 17 Dec 2020 23:17:38 GMT
Server: Apache
Location: https://east.domain.com/prod_east/subpath/
Content-Type: text/html; charset=iso-8859-1

HTTP/1.1 302 FOUND
Date: Thu, 17 Dec 2020 23:17:38 GMT
Server: Apache
Vary: Cookie
Cache-Control: no-cache
**Location: /prod_east/subpath/login.py?_origtarget=index.py**
Content-Type: text/html; charset=UTF-8

마지막 Location: 항목에서 궁금합니다. 클라이언트에게 로 리디렉션하라고 지시하고 있지만 ProxyPass 규칙 때문에 /prod_east/에서 요청될 것으로 예상됩니다 .east.domain.com

다시 쓰기 모듈과 마찬가지로 프록시 모듈이 활성화됩니다.

도움이 필요하세요? 나는 분명히 여기서 뭔가를 이해하지 못하고 있습니다 ...

미리 감사드립니다.

답변1

여기서 문제는 "east" 사이트가 강제로 HTTPS로 리디렉션되었고 Apache가 TLS 콘텐츠를 프록시하도록 구성되지 않았다는 것입니다. "마스터"에서 SSLProxy를 활성화하고 multisite_proxy.confhttps를 참조하도록 업데이트한 후(따라서 HTTP->HTTPS 리디렉션을 건너뛰고) 이제 작동합니다.

관련 정보