IMG-LOGO
공지사항 :

Nginx

lmkfox - 2025-02-27 07:21:31 16 Views 0 Comment

Nginx 완벽 가이드

1. Nginx란?

Nginx는 웹 서버, 리버스 프록시, 로드 밸런서, 캐시 서버 역할을 수행하는 오픈소스 소프트웨어다. 높은 성능과 낮은 리소스 사용량으로 인해 대규모 트래픽을 처리하는 데 최적화되어 있으며, 특히 Apache보다 가벼운 구조를 가지고 있어 많은 웹 서비스에서 사용된다.

주요 특징

• 비동기 이벤트 기반 아키텍처

• 높은 동시 연결 처리 성능

• 리버스 프록시 기능 제공

• 로드 밸런싱 기능 지원

• 정적 콘텐츠(HTML, CSS, JS) 처리 최적화

• HTTP/2, gRPC, WebSocket 지원

• TLS/SSL을 통한 보안 강화

2. Nginx의 주요 기능

2.1 웹 서버

정적 콘텐츠(HTML, CSS, 이미지, JS)를 빠르게 제공하며, Apache보다 가벼운 리소스 사용으로 더 많은 요청을 처리할 수 있다.

설치 및 기본 설정 예제:

sudo apt update
sudo apt install nginx -y
server {
    listen 80;
    server_name example.com;
    root /var/www/html;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}
sudo systemctl restart nginx

2.2 리버스 프록시

클라이언트의 요청을 백엔드 서버로 전달하고 응답을 반환하는 역할을 한다.

리버스 프록시 설정 예제:

server {
    listen 80;
    server_name mydomain.com;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

2.3 로드 밸런싱

트래픽을 여러 서버로 분산하여 성능을 향상시키는 기능을 제공한다.

라운드 로빈 방식 예제:

upstream backend_servers {
    server 192.168.1.101;
    server 192.168.1.102;
    server 192.168.1.103;
}

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://backend_servers;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

로드 밸런싱 알고리즘 종류:

Round Robin: 기본값, 서버를 순차적으로 분배

Least Connections: 연결 수가 적은 서버에 우선 배분

IP Hash: 특정 클라이언트가 항상 같은 서버로 연결되도록 함

2.4 SSL/TLS 설정 (HTTPS 적용)

보안을 강화하기 위해 SSL/TLS를 설정할 수 있다.

Let’s Encrypt 무료 SSL 인증서 적용:

sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d example.com -d www.example.com

수동으로 SSL 적용:

server {
    listen 443 ssl;
    server_name example.com;

    ssl_certificate /etc/ssl/certs/example.crt;
    ssl_certificate_key /etc/ssl/private/example.key;

    location / {
        proxy_pass http://127.0.0.1:3000;
    }
}

2.5 캐시 서버

정적 파일을 캐시하여 서버 성능을 향상시킬 수 있다.

브라우저 캐싱 활성화:

location /static/ {
    expires 30d;
    add_header Cache-Control "public, max-age=2592000";
}

프록시 캐시 활성화:

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m;
server {
    location / {
        proxy_cache my_cache;
        proxy_pass http://127.0.0.1:3000;
    }
}

3. Nginx vs Apache 비교

비교 항목

Nginx

Apache

아키텍처

비동기 이벤트 기반

멀티 스레드 기반

성능

높은 동시 처리 성능

연결 수 증가 시 성능 저하

리소스 사용량

적음

많음

정적 콘텐츠 처리

빠름

느림

동적 콘텐츠 처리

외부 프로세스 필요

자체 모듈 지원

확장성

우수

보통

로드 밸런싱

기본 지원

별도 설정 필요

Nginx는 정적 콘텐츠 및 고성능이 필요한 웹 서비스에 적합하며, Apache는 기존 시스템과의 호환성이 중요할 때 유용하다.

4. 주요 명령어

# Nginx 설치
sudo apt install nginx -y

# Nginx 실행, 중지, 재시작
sudo systemctl start nginx
sudo systemctl stop nginx
sudo systemctl restart nginx

# 설정 파일 문법 체크
sudo nginx -t

# 실시간 로그 확인
sudo tail -f /var/log/nginx/access.log
sudo tail -f /var/log/nginx/error.log

5. Nginx를 사용하는 이유

1. 고성능 웹 서버

• 빠른 정적 콘텐츠 제공

• 높은 동시 연결 처리 능력

2. 리버스 프록시 기능

• 백엔드 서버 보호 및 트래픽 관리

3. 로드 밸런서 기능

• 여러 서버로 부하를 분산하여 안정적인 서비스 제공

4. 보안 강화

• SSL/TLS 적용을 통해 HTTPS 지원

5. 적은 리소스 사용

• 메모리와 CPU 사용량이 낮아 가벼운 서버 운영 가능

Nginx는 성능, 확장성, 리소스 효율성 면에서 강력한 웹 서버이며, 대규모 트래픽을 처리해야 하는 서비스에서 널리 사용된다.


댓글