Nginx를 활용하여 자바스크립트 기반 웹 소켓 서버 구축하기

소개

웹 소켓은 실시간 양방향 통신을 가능하게 하는 프로토콜입니다. 이를 위해 자바스크립트를 기반으로한 웹 소켓 서버를 구축할 때, Nginx는 매우 효과적인 선택입니다. Nginx는 고성능 웹 서버로서 HTTP 및 웹 소켓 프로토콜의 프록시, 로드 밸런싱, SSL 암호화 등을 지원합니다.

이번 포스트에서는 Nginx를 활용하여 자바스크립트 기반 웹 소켓 서버를 구축하는 방법을 알아보겠습니다.

단계 1: Nginx 설치

먼저, Nginx를 설치해야 합니다. 아래 명령어를 사용하여 Nginx를 설치합니다.

sudo apt update
sudo apt install nginx

단계 2: 웹 소켓 애플리케이션 설정

자바스크립트로 작성된 웹 소켓 애플리케이션을 작성합니다. 예를 들어, Express.js와 socket.io를 사용하여 간단한 채팅 애플리케이션을 만들어보겠습니다. 필요한 각각의 패키지를 설치합니다.

npm install express socket.io

다음은 Express.js를 사용하여 서버를 설정하고 소켓 연결을 처리하는 코드입니다.

const express = require('express');
const http = require('http');
const socketIO = require('socket.io');

const app = express();
const server = http.createServer(app);
const io = socketIO(server);

io.on('connection', (socket) => {
    console.log('A user connected');

    socket.on('disconnect', () => {
        console.log('A user disconnected');
    });

    socket.on('chat message', (msg) => {
        io.emit('chat message', msg);
    });
});

server.listen(3000, () => {
    console.log('Server is running on port 3000');
});

단계 3: Nginx 설정

Nginx의 설정 파일인 nginx.conf를 엽니다.

sudo nano /etc/nginx/nginx.conf

다음과 같이 웹 소켓에 대한 프록시 설정을 추가합니다.

http {
    ...

    upstream websocket {
        server localhost:3000;
    }

    server {
        ...

        location / {
            proxy_pass http://websocket;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
        }
    }

    ...
}

설정을 저장하고 Nginx를 재시작합니다.

sudo service nginx restart

단계 4: 웹 소켓 서버 테스트

이제 웹 브라우저를 열고 http://your-domain.com으로 접속합니다. 자바스크립트 기반의 채팅 애플리케이션이 작동하는 것을 확인할 수 있습니다.

마무리

이렇게 Nginx를 활용하여 자바스크립트 기반의 웹 소켓 서버를 구축하는 방법을 알아보았습니다. Nginx의 프록시 기능을 통해 안정적이고 고성능의 웹 소켓 서버를 구축할 수 있습니다. 추가적으로 SSL 암호화를 적용하거나 로드 밸런싱을 구성할 수도 있습니다.