WebSocket은 지속적인 연결을 지원하고 실시간 커뮤니케이션, 온라인 채팅, 라이브 브로드 캐스트 푸시 및 기타 시나리오에 널리 사용되는 TCP 기반 양방향 통신 프로토콜입니다. 일반적으로 프록시 서버를 통해 프론트 엔드와 백엔드 사이에 데이터 흐름을 전송해야하며 고성능 리버스 프록시 서버로서 Nginx는 WebSocket의 요청 전달 작업을 잘 완료 할 수 있습니다.
구성을 시작하기 전에 NGINX가 시스템에 설치되어 있는지 확인해야합니다. 설치되지 않은 경우 사용 된 운영 체제에 따라 패키지 관리자 또는 소스 코드를 통해 설치할 수 있습니다.
일반적으로 /etc/nginx/nginx.conf 에 위치한 nginx의 기본 구성 파일을 열고 다음 컨텐츠를 http 블록에 추가하십시오.
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
upstream backend {
server 127.0.0.1:8080;
}
MAP 지침은 WebSocket의 연결 요구 사항에 적응하기 위해 업그레이드 헤더의 정보를 처리하는 데 사용됩니다. 업스트림 구성은 백엔드 응용 프로그램 서버의 주소를 정의합니다.
그런 다음 서버 블록에서 WebSocket 요청을 처리하려면 구성을 추가하십시오.
location /websocket {
proxy_pass http://backend;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
이 구성 블록의 목적은 /WebSocket 경로에서 백엔드 서비스로 요청을 전달하는 동시에 필요한 WebSocket 필드가 HTTP 요청 헤더에 유지되는지 확인하는 것입니다.
수정 구성이 완료되면 NGINX 서비스를 다시로드 또는 다시 시작해야합니다. 다음 명령을 실행합니다.
<span class="fun">Sudo Service Nginx 재시작</span>
구성이 성공적으로 효과적이되기 전에 구문 오류 또는 포트 점유가 없는지 확인하십시오.
서버 측 구성을 완료 한 후 간단한 프론트 엔드 예제를 사용하여 WebSocket 연결이 성공적으로 설정되어 있는지 테스트 할 수 있습니다. JavaScript 코드 예는 다음과 같습니다.
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");
};
위의 코드를 HTML 파일에 포함시킵니다. 브라우저에서 페이지를 열면 콘솔이 "WebSocket에 연결된"이면 연결이 성공적이라는 의미입니다.
이 기사의 구성 단계를 통해 Nginx 프록시 서버는 WebSocket 프로토콜을 지원하여 효율적인 양방향 통신 기능을 달성 할 수 있습니다. 이 아키텍처는 온라인 게임, 실시간 데이터 대시 보드, 채팅 시스템 등과 같은 실시간 상호 작용이 필요한 시나리오에 특히 적합합니다. Nginx는 중간 프록시로만 존재하며 실제 WebSocket 서비스는 여전히 백엔드 응용 프로그램에 의해 처리됩니다.