> 운영 및 유지보수 > 엔진스 > Nginx를 사용하여 WebSocket 프로토콜 지원을 구현하는 방법

Nginx를 사용하여 WebSocket 프로토콜 지원을 구현하는 방법

王林
풀어 주다: 2023-08-03 18:21:23
원래의
2351명이 탐색했습니다.

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 지시문은 요청 헤더 정보를 설정하는 데 사용되며, 이 중 UpgradeConnection이 필요하며 서버에 프로토콜 업그레이드를 알리는 데 사용됩니다. . /ws/路径,用于处理WebSocket的连接请求。WebSocket的请求将会被代理到http://backend地址上。proxy_pass指令用于设置代理的后端服务器地址,proxy_http_version指令用于设置代理的HTTP协议版本。proxy_set_header指令用于设置请求头信息,其中UpgradeConnection是必需的,用于告知服务器进行协议升级。

需要注意的是,上述配置中的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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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