Nginx 프록시 서버를 사용하여 WebSocket 프로토콜 지원을 구현하는 방법은 무엇입니까?
WebSocket은 TCP 기반의 전이중 통신 프로토콜로, 양측이 장기간 연결을 유지할 수 있는 통신 채널을 구축하여 서버와 클라이언트가 실시간으로 양방향 통신을 수행할 수 있도록 하는 데 적합합니다. 실시간 커뮤니케이션, 인스턴트 채팅, 실시간 데이터 푸시 등의 시나리오. WebSocket을 사용할 때 WebSocket 요청과 응답을 전달하도록 프록시 서버를 구성해야 하는 경우가 많습니다. 이 기사에서는 Nginx 프록시 서버를 사용하여 WebSocket 프로토콜에 대한 지원을 구현하는 방법을 소개합니다.
1단계: Nginx 설치
먼저 Nginx가 프록시 서버에 설치되어 있는지 확인해야 합니다. 설치되어 있지 않은 경우 운영 체제에 따라 적절한 설치 방법을 선택하십시오.
2단계: Nginx 구성 파일 수정
다음으로 Nginx 구성 파일을 수정해야 합니다. Nginx 구성 파일을 열고 http
블록에 다음 코드를 추가합니다. http
块中添加以下代码:
map $http_upgrade $connection_upgrade { default upgrade; '' close; } upstream backend { server 127.0.0.1:8080; }
上述代码中,map
指令用于将请求头中的Upgrade
字段的值映射为$connection_upgrade
变量的值。upstream
指令用于定义后端服务器的地址,这里使用的是本地地址127.0.0.1:8080
,你可以根据实际情况进行修改。
在server
块中添加以下代码:
location /websocket { proxy_pass http://backend; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; }
上述代码中,location
指令用于匹配WebSocket请求的路径。proxy_pass
指令用于将请求转发给后端服务器。proxy_http_version
指令用于指定代理协议的版本。proxy_set_header
指令用于设置请求头,将Upgrade
和Connection
sudo service nginx restart
map
지시문은 Upgrade<를 변경하는 데 사용됩니다. / 요청 헤더의 code> 필드 값은 <code>$connection_upgrade
변수 값에 매핑됩니다. upstream
지시문은 백엔드 서버의 주소를 정의하는 데 사용됩니다. 여기서는 로컬 주소 127.0.0.1:8080
을 사용하여 실제 상황에 따라 수정할 수 있습니다. server
블록에 다음 코드를 추가하세요. var ws = new WebSocket("ws://your_domain/websocket"); ws.onopen = function() { console.log("Connected to WebSocket"); }; ws.onmessage = function(event) { console.log("Received message: " + event.data); }; ws.onclose = function() { console.log("Disconnected from WebSocket"); };
location
지시문은 WebSocket 요청의 경로를 일치시키는 데 사용됩니다. proxy_pass
지시문은 요청을 백엔드 서버로 전달하는 데 사용됩니다. proxy_http_version
지시어는 프록시 프로토콜의 버전을 지정하는 데 사용됩니다. proxy_set_header
지시문은 요청 헤더를 설정하고 Upgrade
및 Connection
필드를 그대로 백엔드 서버에 전달하는 데 사용됩니다. 3단계: Nginx 서비스 다시 시작구성 파일 수정을 완료한 후 파일을 저장하고 닫습니다. 그런 다음 구성을 적용하려면 Nginx 서비스를 다시 시작하세요. 명령줄에 다음 명령을 입력하세요. rrreee
4단계: WebSocket 연결 테스트이제 Nginx 구성이 완료되었습니다. 다음으로 WebSocket 클라이언트 도구를 사용하거나 간단한 웹 애플리케이션을 작성하여 WebSocket 연결을 테스트할 수 있습니다. 다음은 간단한 샘플 코드입니다. 🎜rrreee🎜 위 코드를 HTML 파일로 저장하고 브라우저에서 파일을 엽니다. 브라우저의 개발자 도구에 "Connected to WebSocket" 출력이 표시되면 WebSocket 연결이 성공한 것입니다. 🎜🎜요약: 위 단계를 통해 Nginx 프록시 서버를 사용하여 WebSocket 프로토콜에 대한 지원을 구현하는 데 성공했습니다. 이러한 방식으로 Nginx의 강력한 성능과 유연한 구성을 사용하여 보다 효율적이고 안정적인 WebSocket 통신을 달성할 수 있습니다. 그러나 Nginx 자체는 WebSocket 서버가 아니며 처리를 위해 WebSocket 연결을 백엔드 서버로 전달하는 프록시 서버로만 사용됩니다. 완전한 WebSocket 서버를 배포해야 하는 경우 다른 전용 WebSocket 서버 소프트웨어 사용을 고려할 수 있습니다. 🎜위 내용은 Nginx 프록시 서버를 사용하여 WebSocket 프로토콜 지원을 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!