
Apache 역방향 프록시가 SSL 요청을 종료하는 인프라 설정을 구성했습니다. 그런 다음 요청은 다른 프런트엔드 Apache 웹 서버로 프록시되고 다시 이 서버는 mod_jk/AJP를 통해 tomcat에 연결됩니다. 한 가지 예외 없이 설정이 원활하게 진행되는 것 같습니다. Tomcat은 WSDL 웹 서비스를 제공하며 이러한 XML 파일에서 하나의 태그에는 요청된 URL과 동일해야 하는 호스트 위치가 포함됩니다.
현재 설정으로 인해 호스트 위치는 요청된 외부 URL이 아닌 (ajp 연결된) 프런트엔드 웹 서버의 내부 URL을 나타냅니다. 이 문제를 해결하기 위한 첫 번째 시도는 외부 URL을 tomcats server.xml 내의 프록시 URL로 배치하는 것이었지만 이 방법은 HTTP 또는 HTTPS 요청을 인식하지 못합니다. 하나를 결정해야 해요.
또한 현재 완전히 다른 URL을 사용하여 다른 프런트엔드 서버를 통해 서비스에 액세스할 수도 있습니다(역방향 프록시가 없는 보다 간단한 설정).
내 문제를 이해할 수 있도록 설명했으면 좋겠습니다. Tomcat이 요청한 URL을 인식하도록 하려면 어떻게 해야 할까요? 아니면 요청한 URL을 프런트엔드 아파치에 전달해야 할까요? 지금은 조금 막혔어요.
미리 감사드립니다.
/편집하다
요청 순서에 대한 간략한 개요:
**customerX** -- REQUEST HTTP|HTTPS -- **host.external/customerX** -- PASS HTTP -- **customerX.internal** -- AJP -- **tomcat**
ProxyPreserve호스트 켜기프론트엔드 아파치에 host.external을 전달하고 이 가상 호스트와 일치하는 가상 호스트가 없기 때문에 트릭을 수행하지 않습니다. 이는 404 오류로 이어집니다. 즉, 설명이 필요합니다.
구성은 전혀 특별하지 않습니다. 외부에서 액세스 가능한 역방향 프록시에는 2개의 가상 호스트(HTTP|HTTPS)가 있습니다. 두 가상 호스트 모두 /customerX, /customerY 등의 컨텍스트를 통해 서비스를 제공하는 각 고객을 인식합니다. 예를 들어 HTTP 가상 호스트:
<VirtualHost *:80>
ServerName host.external
ProxyPass /customerX http://customerX.internal
ProxyPassReverse /customerX http://customerX.internal
ProxyPass /customerY http://customerY.internal
ProxyPassReverse /customerY http://customerY.internal
...
</VirtualHost>
두 번째 줄은 암시적입니다.
두 번째 Apache에는 해당 서버 이름과 tomcats 웹앱에 필요한 JkMounts가 있는 각 고객에 대해 하나의 가상 호스트(HTTP만 해당)가 있습니다.
<VirtualHost *:80>
ServerName customerX.internal
JkMount ...
</VirtualHost>