> 백엔드 개발 > Golang > 내 mod_proxy_wstunnel 및 Go-websocket 설정이 실패하는 이유는 무엇이며 어떻게 해결할 수 있습니까?

내 mod_proxy_wstunnel 및 Go-websocket 설정이 실패하는 이유는 무엇이며 어떻게 해결할 수 있습니까?

DDD
풀어 주다: 2025-01-01 06:58:10
원래의
549명이 탐색했습니다.

Why Does My mod_proxy_wstunnel and Go-websocket Setup Fail, and How Can I Fix It?

Mod_proxy_wstunnel 및 Go-websocket: 문제 및 해결 방법

go-websocket 구현에 Apache의 mod_proxy_wstunnel을 사용하려는 시도에서 사용자는 장애물에 부딪힐 수도 있습니다. 한 사용자가 필요한 설정을 구성하는 데 도움을 요청했습니다.

문제에 대한 자세한 설명이 제공되었습니다. 역방향 프록시가 성공적으로 설정되었지만 웹소켓 연결을 시작하지 못했습니다. 사용자 구성은 다음을 반영합니다.

<VirtualHost *:80>
    DocumentRoot /var/www/foobar
    ServerName foobar.com
    ProxyPass / http://localhost:8080/
    ProxyPassReverse / http://localhost:8080/
    ProxyPass /ws/ ws://localhost:8080/ws/
    ProxyPassReverse /ws/ ws://localhost:8080/ws/
    ErrorLog logs/error_log-foobar
    CustomLog logs/access_log-foobar common
    LogLevel debug
</VirtualHost>
로그인 후 복사

처음에 사용자는 원본 확인 문제를 암시하는 "403 Forbidden" 응답을 받았습니다. 원본 확인을 비활성화한 후 오류는 서버가 업그레이드 요청을 수신하지 않았음을 나타내는 "400 잘못된 요청"으로 전환되었습니다.

수많은 소스에서 권장 사항을 수집한 후 사용자는 다음과 같은 해결책에 도달했습니다.

  1. 후행 슬래시: Aralo가 지적했듯이 WebSocket 경로에 후행 슬래시를 추가합니다. ("/ws/")가 매우 중요했습니다. Apache는 WebSocket 처리를 위해 유효한 GET 요청을 요구하는 것으로 보입니다.
  2. ProxyPass 순서: James Henstridge는 ProxyPass 지시문의 순서가 중요하다는 점을 정확하게 지적했습니다. "/ws/"에 대한 ProxyPass는 일반 "/" 앞에 와야 합니다.
  3. 원본 확인 제거: go-websocket 예제 코드에는 ServeWs() 함수에 원본 확인이 포함되어 있습니다. 제거되었습니다.

이러한 변경 사항을 구현하면 문제가 해결되었으며 사용자는 뒤에 있는 웹 소켓 연결을 성공적으로 설정할 수 있었습니다. Apache의 mod_proxy_wstunnel.

위 내용은 내 mod_proxy_wstunnel 및 Go-websocket 설정이 실패하는 이유는 무엇이며 어떻게 해결할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿