>  기사  >  백엔드 개발  >  Nginx 프록시 서버를 사용하여 WebSocket 프로토콜 지원을 구현하는 방법은 무엇입니까?

Nginx 프록시 서버를 사용하여 WebSocket 프로토콜 지원을 구현하는 방법은 무엇입니까?

WBOY
WBOY원래의
2023-09-05 08:06:161512검색

Nginx 프록시 서버를 사용하여 WebSocket 프로토콜 지원을 구현하는 방법은 무엇입니까?

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指令用于设置请求头,将UpgradeConnection

sudo service nginx restart

위 코드에서 map 지시문은 Upgrade 필드 값은 <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 지시문은 요청 헤더를 설정하고 UpgradeConnection 필드를 그대로 백엔드 서버에 전달하는 데 사용됩니다.

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.