일부 응용 프로그램의 역방향 프록시로 작동하는 Apache/2.4.6 설치가 있습니다. 이제 다른 것을 구성해야 합니다. HTTP 프록시는 훌륭하게 작동하지만 웹 페이지의 일부 섹션에서 클라이언트가 웹 소켓 연결을 시작하려고 시도합니다.
문제는 URL이 부분적으로 공유된다는 것입니다.
HTTP 요청:http://domain/context/[whatever]
WS 요청:ws://domain/context/specific-text?param1¶m2
ProxyPass는 내부로 들어갈 수 없으므로 사용할 수 없습니다 If
(프로토콜 확인) <If>
.
시도한 설정:
<Location /context/specific-text>
ProxyPass ws://internal.domain/context/specific-text
전에
<Location /context/>
ProxyPass http://internal.domain/context/
그러나 (존재하지 않는) 후행 슬래시 때문에 작동하지 않습니다.
더 많은 데이터:
- 소켓은 "200" 코드가 마음에 들지 않는다고 불평하고 있으며 Apache는 ws 연결을 반환하지 않지만 어느 시점에서는 프록시가 만들어지고 있습니다.
- 유무에 관계없이 시도
<Location>
specific-text
다시 작성 하려고 생각했지만specific-text/
관리하지 않는 것을 조작하는 것을 좋아하지 않습니다. 이 애플리케이션은 유료 제품이므로 어떤 해를 끼치는지 물어볼 수 없습니다. 글쎄요, 그럴 수도 있겠네요. 어떤 대답도 기대하지 않을 뿐입니다.
답변1
나에게 효과적인 것은 다음 ProxyPass 구성 조각입니다.
ProxyPass /specific wss://0.0.0.0:4000/specific
ProxyPassReverse /specific wss://0.0.0.0:4000/specific
ProxyPass / https://0.0.0.0:4000/
ProxyPassReverse / https://0.0.0.0:4000/
그만큼문서에 따르면:
ProxyPass 지시문 주문
구성된 ProxyPass 및 ProxyPassMatch 규칙은 구성 순서대로 확인됩니다. 일치하는 첫 번째 규칙이 승리합니다.