http와 동일한 컨텍스트에서 websocket에 대한 Apache 역방향 프록시

http와 동일한 컨텍스트에서 websocket에 대한 Apache 역방향 프록시

일부 응용 프로그램의 역방향 프록시로 작동하는 Apache/2.4.6 설치가 있습니다. 이제 다른 것을 구성해야 합니다. HTTP 프록시는 훌륭하게 작동하지만 웹 페이지의 일부 섹션에서 클라이언트가 웹 소켓 연결을 시작하려고 시도합니다.

문제는 URL이 부분적으로 공유된다는 것입니다.

HTTP 요청:http://domain/context/[whatever]

WS 요청:ws://domain/context/specific-text?param1&param2

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 규칙은 구성 순서대로 확인됩니다. 일치하는 첫 번째 규칙이 승리합니다.

관련 정보