우분투 서버 하나에서 여러 node js 프로젝트 실행시키는 법
(nginx 설정 파일)
여러개의 Node.js 프로젝트를 하나의 우분투 서버에서 운영하려면 Nginx를 리버스 프록시로 사용하면 됩니다. 각 도메인에 대해 별도의 Nginx 서버 블록 설정을 만들어주면 됩니다.
다음은 설정 방법입니다:
1. 먼저 각 Node.js 애플리케이션에 대해 포트를 다르게 설정합니다. 예를 들어, 프로젝트1은 3000번 포트, 프로젝트2는 3001번 포트에서 실행되도록 설정할 수 있습니다.
2. Nginx 설정 파일을 열어서, 각 도메인에 대한 서버 블록을 생성합니다. 설정 파일은 보통 /etc/nginx/sites-available/default에 위치해 있습니다.
프로젝트1에 대한 설정은 다음과 같습니다:
server {
listen 80;
server_name http://www.project1.com;
location / {
proxy_pass http://localhost:3000; # Node.js 앱이 실행중인 주소
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
프로젝트2에 대한 설정은 다음과 같습니다:
server {
listen 80;
server_name http://www.project2.com;
location / {
proxy_pass http://localhost:3001; # Node.js 앱이 실행중인 주소
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
3. 설정을 마친 후에는 Nginx를 재시작해야 합니다. 이는 sudo service nginx restart 명령어를 통해 할 수 있습니다.
이렇게 하면, 각각의 도메인에 대해 별도의 Node.js 애플리케이션이 우분투 서버에서 동작하게 됩니다.
Nginx와 Node.js를 함께 사용할때의 장점
1. 효율적인 로드 밸런싱: Nginx는 로드 밸런서로서의 역할을 수행하여 여러 Node.js 인스턴스 간에 트래픽을 분산시킬 수 있습니다. 이는 시스템의 가용성을 높이고 병목 현상을 줄입니다.
2. 정적 파일 처리: Node.js는 동적 콘텐츠를 처리하는 데 유용하지만, 정적 파일(이미지, CSS, JavaScript 파일 등)을 서비스하는 데에는 비효율적일 수 있습니다. Nginx는 정적 콘텐츠를 효율적으로 제공하므로, 이를 Node.js 앞에 두면 이런 부분을 보완할 수 있습니다.
3. SSL/TLS 처리: SSL/TLS 인증서를 설정하고 관리하는 것은 복잡한 작업일 수 있습니다. Nginx를 사용하면 이러한 작업을 간소화하고, 보안 연결을 효율적으로 처리할 수 있습니다.
4. 캐싱과 압축: Nginx는 웹 페이지의 캐싱 및 압축을 처리하여 페이지의 로딩 시간을 줄이고, 전송해야 할 데이터의 양을 줄일 수 있습니다.
5. 역방향 프록시: Nginx는 역방향 프록시로서 동작하여, 클라이언트와 서버 사이에서 트래픽을 중계합니다. 이는 서버의 보안을 강화하고, 서버의 실제 IP 주소를 숨길 수 있습니다.
따라서 Nginx와 Node.js를 함께 사용하면, 각각의 장점을 살릴 수 있어 효율적인 웹 서비스 운영이 가능합니다.
SSL/TLS 설정하는법
SSL/TLS 설정은 웹 애플리케이션의 보안을 강화하는 중요한 단계입니다. SSL/TLS 인증서는 사용자와 서버 사이의 통신을 암호화하여 정보를 안전하게 보호합니다.
Nginx에서 SSL/TLS 설정을 하려면, 먼저 SSL/TLS 인증서를 구해야 합니다. 인증서는 유료로 제공하는 곳도 있지만, Let's Encrypt와 같은 무료 인증서 발급 기관을 이용할 수도 있습니다.
아래는 Nginx에서 SSL/TLS 설정을 하는 기본적인 방법입니다:
1. 인증서 및 개인키 설치: SSL/TLS 인증서(server.crt)와 개인키(server.key)를 서버에 설치합니다. 일반적으로 이 파일들은 /etc/nginx/ssl/ 디렉토리에 저장합니다.
2. Nginx 설정 업데이트: Nginx 설정 파일을 열어서 SSL/TLS 설정을 추가합니다. 설정 파일은 보통 /etc/nginx/sites-available/default에 위치해 있습니다.
아래는 SSL/TLS 설정을 추가한 Nginx 설정 예시입니다:
server {
listen 80;
server_name domain.com;
return 301 https://$host$request_uri; # 모든 http 요청을 https로 리다이렉트
}
server {
listen 443 ssl;
server_name domain.com;
ssl_certificate /etc/nginx/ssl/server.crt; # 인증서 경로
ssl_certificate_key /etc/nginx/ssl/server.key; # 개인키 경로
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
3. Nginx 재시작: 설정을 마친 후에는 Nginx를 재시작해야 합니다. 이는 sudo service nginx restart 명령어를 통해 할 수 있습니다.
이렇게 설정하면, 사용자는 https://를 통해 안전하게 웹 애플리케이션에 접근할 수 있습니다.
하나의 서버에 여러 프로젝트에 ssl 적용시키는 법
먼저 각 프로젝트에 대해 서로 다른 도메인 또는 서브 도메인을 사용하고, 각각에 대해 별도의 SSL/TLS 인증서를 구해야 합니다.
Nginx 설정은 각 도메인에 대해 별도의 서버 블록을 생성하면 됩니다. 아래는 프로젝트1과 프로젝트2에 대한 설정 예시입니다:
server {
listen 80;
server_name http://www.project1.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name http://www.project1.com;
ssl_certificate /etc/nginx/ssl/project1.crt; # 프로젝트1 인증서 경로
ssl_certificate_key /etc/nginx/ssl/project1.key; # 프로젝트1 개인키 경로
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
server {
listen 80;
server_name http://www.project2.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name http://www.project2.com;
ssl_certificate /etc/nginx/ssl/project2.crt; # 프로젝트2 인증서 경로
ssl_certificate_key /etc/nginx/ssl/project2.key; # 프로젝트2 개인키 경로
location / {
proxy_pass http://localhost:3001;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
위와 같이 설정하면, 각 프로젝트는 서로 다른 SSL/TLS 인증서를 사용합니다. 이렇게 하면 하나의 서버에서 여러 개의 Node.js 프로젝트를 안전하게 운영할 수 있습니다.
'리눅스&서버 > 우분투' 카테고리의 다른 글
nginx rtmp를 이용해서 실시간 스트리밍 구현 예제(HLS 프로토콜 추가) (2) | 2022.09.16 |
---|---|
NGINX에서 RTMP와 FFmpeg 라이브러리를 이용한 HLS 송신 예제 (17) | 2022.09.15 |
우분투 MQTT 서버구축과 기본 개념 (1) | 2022.09.14 |
웹,데이터베이스 서버 트러블슈팅을 위한 쉘 스크립트 [4] (0) | 2022.05.07 |
웹서버 및 mysql DB 백업 쉘스크립트 [3] (0) | 2022.03.23 |