>  기사  >  운영 및 유지보수  >  Nginx Proxy Manager와 WebSocket 간의 효율적인 통신 구현

Nginx Proxy Manager와 WebSocket 간의 효율적인 통신 구현

王林
王林원래의
2023-09-26 14:46:411536검색

Nginx Proxy Manager与WebSocket的高效通信实现

Nginx 프록시 관리자(이하 NPM)는 여러 역방향 프록시 서버를 관리하는 간단하고 강력한 방법을 제공하는 Nginx 기반 프록시 관리 도구입니다. 최근 NPM을 사용할 때 NPM과 WebSocket 간의 효율적인 통신을 달성하는 방법에 대한 문제가 발생했습니다. 이 기사에서는 이 목표를 달성하면서 얻은 경험과 교훈을 공유하고 구체적인 코드 예제를 제공하겠습니다.

시작하기 전에 WebSocket에 대해 간단히 살펴보겠습니다. WebSocket은 단일 TCP 연결을 통한 전이중 통신을 위한 프로토콜입니다. HTTP와 달리 WebSocket을 사용하면 클라이언트가 요청하지 않고도 서버가 클라이언트에 적극적으로 데이터를 보낼 수 있습니다. 낮은 대기 시간과 높은 효율성으로 인해 WebSocket은 채팅 애플리케이션, 실시간 데이터 전송 등과 같은 실시간 애플리케이션에서 매우 널리 사용됩니다.

NPM은 Nginx를 사용하여 HTTP 및 HTTPS 요청을 처리하고 역방향 프록시 기능을 제공합니다. WebSocket과의 효율적인 통신을 위해서는 WebSocket 요청을 전달하고 관련 헤더 정보를 올바르게 처리하도록 NPM을 구성해야 합니다. 다음은 간단한 Nginx 구성 예입니다.

server {
    listen 80;
    server_name example.com;
    
    location / {
        proxy_pass http://backend;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
    }
    
    location /ws/ {
        proxy_pass http://backend;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
    }
    
    location /api/ {
        ...
    }
    
    location /admin/ {
        ...
    }
    
    ...

    upstream backend {
        server backend.example.com;
    }
}

위 구성에서는 두 개의 위치 블록을 사용하여 WebSocket 요청을 처리했습니다. 첫 번째 위치 블록은 루트 경로 아래의 WebSocket 요청을 처리하는 데 사용되고, 두 번째 위치 블록은 /ws/로 시작하는 WebSocket 요청을 처리하는 데 사용됩니다. 이 두 위치 블록에서는 Proxy_pass 지시문을 사용하여 요청을 백엔드 서버로 전달하고 관련 HTTP 헤더 정보를 설정하여 WebSocket 요청이 백엔드 서버에 올바르게 전달될 수 있도록 합니다.

Nginx 구성 외에도 백엔드 서버에 WebSocket 관련 로직을 구현해야 합니다. 다음은 Node.js 및 WebSocket 라이브러리를 사용하여 구현된 간단한 예입니다.

const WebSocket = require('ws');

const wss = new WebSocket.Server({ port: 8080 });

wss.on('connection', (ws) => {
    console.log('Client connected');

    ws.on('message', (message) => {
        console.log(`Received: ${message}`);
    });

    ws.send('Hello, client!');
});

위 코드에서는 WebSocket 서버를 생성하고 연결 이벤트에서 새 연결을 처리합니다. 연결 이벤트 핸들러에서 클라이언트의 메시지를 처리하고 응답을 보낼 수 있습니다.

위의 Nginx 구성과 WebSocket 서버 코드를 사용하면 NPM과 WebSocket 간의 효율적인 통신을 달성할 수 있습니다. 예를 들어 NPM을 사용하여 HTTP 요청을 처리하고 특정 URL에 대한 WebSocket 요청을 백엔드 WebSocket 서버로 전달할 수 있습니다. 이렇게 하면 동일한 도메인 이름으로 HTTP와 WebSocket을 모두 사용할 수 있으며 WebSocket 요청은 다른 HTTP 요청처럼 NPM으로 관리할 수 있습니다.

요약하자면 NPM을 올바르게 구성하고 백엔드 WebSocket 서버의 코드를 구현하면 NPM과 WebSocket 간의 효율적인 통신을 달성할 수 있습니다. 이를 통해 NPM을 사용하는 동안 WebSocket 요청을 쉽게 처리하고 실시간 애플리케이션에 필요한 실시간 통신 기능을 구현할 수 있습니다. 이 기사의 코드 예제와 설명이 도움이 되기를 바랍니다.

위 내용은 Nginx Proxy Manager와 WebSocket 간의 효율적인 통신 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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