Nginx를 사용하여 WebSocket 프로토콜 지원을 구현하는 방법
WebSocket 프로토콜은 웹 애플리케이션에서 양방향 통신을 구현하는 프로토콜입니다. 이를 통해 클라이언트가 먼저 요청을 시작하지 않고도 서버가 클라이언트에 적극적으로 데이터를 보낼 수 있습니다. 기존 HTTP 프로토콜과 비교하여 WebSocket 프로토콜은 대기 시간이 짧고 효율성이 높으며 실시간 요구 사항이 높은 애플리케이션 시나리오에 적합합니다. 이 기사에서는 Nginx를 역방향 프록시로 사용하여 WebSocket 프로토콜을 지원하는 방법을 소개합니다.
Nginx는 로드 밸런싱, 역방향 프록시, 정적 파일 캐싱 및 기타 시나리오에 사용할 수 있는 고성능 오픈 소스 역방향 프록시 서버입니다. Nginx는 WebSocket 프로토콜을 지원하기 위한 일부 모듈과 지시문도 제공합니다. 다음은 간단한 구성 예입니다.
http { # 其他的http配置 map $http_upgrade $connection_upgrade { default upgrade; '' close; } server { listen 80; location /ws/ { proxy_pass http://backend; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; } } }
위 구성에서는 WebSocket 연결 요청을 처리하기 위해 /ws/
경로를 정의했습니다. WebSocket 요청은 http://backend
주소로 프록시됩니다. proxy_pass
지시문은 프록시의 백엔드 서버 주소를 설정하는 데 사용되며 proxy_http_version
지시문은 프록시의 HTTP 프로토콜 버전을 설정하는 데 사용됩니다. proxy_set_header
지시문은 요청 헤더 정보를 설정하는 데 사용되며, 이 중 Upgrade
및 Connection
이 필요하며 서버에 프로토콜 업그레이드를 알리는 데 사용됩니다. . /ws/
路径,用于处理WebSocket的连接请求。WebSocket的请求将会被代理到http://backend
地址上。proxy_pass
指令用于设置代理的后端服务器地址,proxy_http_version
指令用于设置代理的HTTP协议版本。proxy_set_header
指令用于设置请求头信息,其中Upgrade
和Connection
是必需的,用于告知服务器进行协议升级。
需要注意的是,上述配置中的map
指令用于将客户端请求头中的Upgrade
字段映射为$http_upgrade
变量,并根据其值来动态设置$connection_upgrade
变量。这样可以实现在请求中发现Upgrade
字段时,将Upgrade
字段的值设置为$connection_upgrade
字段的值,否则将关闭连接。
在配置完成后,我们只需要将Nginx启动即可:
sudo service nginx start
现在,我们已经完成了使用Nginx作为反向代理来支持WebSocket协议的配置。我们可以使用以下代码片段来测试WebSocket的连接:
var socket = new WebSocket("ws://yourdomain.com/ws/"); socket.onopen = function () { console.log("Connection established."); }; socket.onmessage = function (event) { console.log("Received message: ", event.data); }; socket.onclose = function () { console.log("Connection closed."); };
将ws://yourdomain.com/ws/
map
지시문은 클라이언트 요청 헤더의 Upgrade
필드를 $http_upgrade
에 매핑하는 데 사용됩니다. > 변수를 선택하고 해당 값에 따라 $connection_upgrade
변수를 동적으로 설정합니다. 이런 방식으로 요청에서 Upgrade
필드가 발견되면 Upgrade
필드의 값이 $connection_upgrade
의 값으로 설정됩니다. 필드를 입력하지 않으면 연결이 닫힙니다. 구성이 완료되면 Nginx만 시작하면 됩니다. 🎜rrreee🎜이제 WebSocket 프로토콜을 지원하기 위해 Nginx를 역방향 프록시로 사용하는 구성이 완료되었습니다. 다음 코드 조각을 사용하여 WebSocket 연결을 테스트할 수 있습니다. 🎜rrreee🎜ws://yourdomain.com/ws/
를 실제 WebSocket 주소로 바꾸고 브라우저의 개발자 도구를 열어 제어 스테이션을 봅니다. 산출. 정상적으로 연결되어 메시지를 받을 수 있다면 Nginx에서 WebSocket 프로토콜을 성공적으로 지원했다는 의미입니다. 🎜🎜요약하자면, 위의 구성과 코드 예제를 통해 Nginx를 사용하여 쉽게 WebSocket 프로토콜을 지원하여 높은 실시간 요구 사항으로 양방향 통신을 달성할 수 있습니다. 🎜위 내용은 Nginx를 사용하여 WebSocket 프로토콜 지원을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!