Node.js 애플리케이션을 확장하고 최적화할 때 NGINX는 높은 트래픽을 처리하고 정적 파일을 효율적으로 제공하며 로드 밸런서 역할을 하는 데 중요한 역할을 합니다. 고성능 웹 서버인 NGINX는 역방향 프록시로도 작동하여 여러 서버에 요청을 분산시킬 수 있습니다. 이 글에서는 NGINX가 무엇인지, Node.js와 함께 사용해야 하는 이유, 역방향 프록시, 로드 밸런싱, 정적 콘텐츠 제공을 포함한 다양한 작업을 위해 NGINX를 구성하는 방법을 다룹니다.
NGINX("엔진 X"로 발음)는 고성능으로 많은 수의 동시 연결을 처리하도록 설계된 강력한 웹 서버 및 역방향 프록시입니다. 처음에는 웹 서버로 생성된 NGINX의 다용성으로 인해 로드 밸런싱, 역방향 프록시 및 정적 파일 제공으로 확장되었습니다.
Nginx를 Node.js와 함께 사용하는 이유는 무엇인가요?
Node.js용 NGINX를 구성하려면 다음 단계를 따르세요.
먼저 서버에 NGINX를 설치해야 합니다. 운영 체제에 따라 다음 명령을 사용하십시오.
Ubuntu/Debian의 경우:
sudo apt update sudo apt install nginx
CentOS/RHEL의 경우:
sudo yum install nginx
설치 후 다음 명령을 사용하여 NGINX를 시작할 수 있습니다.
sudo systemctl start nginx
브라우저에서 서버의 IP 주소를 방문하여 NGINX가 실행 중인지 확인할 수 있습니다. NGINX가 작동하는 경우 기본 NGINX 시작 페이지가 표시됩니다.
NGINX를 역방향 프록시로 활성화하여 클라이언트 요청을 Node.js 애플리케이션으로 전달할 수 있도록 하려면 그에 따라 NGINX를 구성해야 합니다.
다음은 localhost:3000에서 실행되는 Node.js 애플리케이션에 대한 NGINX 구성의 예입니다.
cd /etc/nginx/sites-available/
sudo nano nodeapp.conf
server { listen 80; server_name your_domain_or_IP; 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; } }
sudo ln -s /etc/nginx/sites-available/nodeapp.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
이 설정은 포트 80에서 들어오는 모든 트래픽을 포트 3000에서 실행되는 Node.js 애플리케이션으로 라우팅합니다.
Node.js 애플리케이션이 성장하면 단일 인스턴스로는 트래픽을 처리하기에 충분하지 않을 수 있습니다. NGINX는 로드 밸런서로 구성되어 여러 Node.js 인스턴스에 트래픽을 분산시킬 수 있습니다.
로드 밸런싱을 위해 NGINX를 구성하는 방법은 다음과 같습니다.
sudo nano /etc/nginx/sites-available/nodeapp.conf
upstream node_backend { server localhost:3000; server localhost:3001; server localhost:3002; } server { listen 80; server_name your_domain_or_IP; location / { proxy_pass http://node_backend; 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; } }
sudo nginx -t sudo systemctl restart nginx
설명:
이 설정은 여러 Node.js 인스턴스에 로드를 균등하게 분산하여 확장성과 내결함성을 향상시킵니다.
이미지, CSS, JavaScript와 같은 정적 파일을 제공하면 Node.js 애플리케이션에 부담을 줄 수 있습니다. NGINX는 이러한 책임을 덜어내고 정적 자산을 직접 제공하여 성능을 향상시킬 수 있습니다.
sudo mkdir -p /var/www/html/static
정적 파일(CSS, 이미지, JS)을 이 디렉터리로 이동하세요.
정적 파일을 제공하도록 NGINX 구성(nodeapp.conf)을 업데이트하세요.
server { listen 80; server_name your_domain_or_IP; location /static/ { root /var/www/html; } 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; } }
sudo nginx -t sudo systemctl restart nginx
설명:
클라이언트와 서버 간의 보안 통신은 매우 중요하며 SSL(Secure Sockets Layer)이 해당 암호화를 제공합니다. NGINX는 SSL 종료를 처리할 수 있습니다. 즉, HTTPS 요청을 Node.js 애플리케이션에 전달하기 전에 암호화 및 암호 해독을 처리합니다.
NGINX로 SSL을 구성하는 방법은 다음과 같습니다.
SSL 인증서를 받으세요. Let's Encrypt에서 무료 SSL 인증서를 얻거나 다른 인증 기관을 사용할 수 있습니다.
SSL을 활성화하려면 NGINX 구성을 수정하세요.
server { listen 443 ssl; server_name your_domain_or_IP; ssl_certificate /etc/ssl/certs/your_domain.crt; ssl_certificate_key /etc/ssl/private/your_domain.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; } } server { listen 80; server_name your_domain_or_IP; # Redirect all HTTP requests to HTTPS return 301 https://$host$request_uri; }
sudo nginx -t sudo systemctl restart nginx
설명:
NGINX는 Node.js 애플리케이션의 성능, 확장성 및 보안을 향상시키는 강력한 도구입니다. 로드 밸런싱부터 정적 파일 제공 및 SSL 종료 처리에 이르기까지 NGINX는 Node.js에서 많은 작업을 오프로드하여 애플리케이션이 가장 잘 수행하는 작업, 즉 비즈니스 로직 처리에 집중할 수 있도록 합니다. 이 문서에 제공된 구성을 사용하면 NGINX를 설정하여 Node.js 애플리케이션의 효율성과 안정성을 향상시킬 수 있습니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3