24.11.28 TIL NginX

신성훈·2024년 11월 28일

TIL

목록 보기
88/162

1. NginX란?

NginX는 고성능 HTTP 서버이자 리버스 프록시 서버로, 정적 콘텐츠 제공, 로드 밸런싱, 보안 강화 등의 역할을 수행합니다.
특히 비동기 이벤트 기반 아키텍처를 사용하여 높은 처리 성능과 효율을 나타냅니다.


2. NginX의 주요 특징

  • 높은 성능: 비동기 이벤트 기반 모델로 대규모 트래픽 처리 가능
  • 리버스 프록시: 클라이언트 요청을 다른 서버로 전달하여 요청 분산 및 보안을 강화
  • 로드 밸런싱: 여러 서버에 트래픽을 분산하여 안정성과 성능을 향상
  • 정적 파일 제공: HTML, CSS, JavaScript 같은 정적 파일을 빠르게 제공
  • 보안: HTTPS 설정, IP 필터링 등 다양한 보안 기능 지원

3. NginX의 주요 구성

3.1 HTTP 서버

  • 정적 콘텐츠(HMTL, 이미지 등)를 제공하거나 요청을 백엔드로 전달
  • 캐싱 기능을 통해 성능을 최적화

3.2 리버스 프록시 서버

  • 클라이언트 요청을 백엔드 서버에 전달하며, 서버 IP 주소를 숨기는 역할 수행
  • 보안과 로드 밸런싱의 핵심 역할

3.3 로드 밸런서

  • 클라이언트 요청을 여러 서버에 분배
  • 다양한 알고리즘 제공 (라운드 로빈, IP 해시, 최소 연결 등)

3.4 SSL/TLS 지원

  • HTTPS 설정 가능
  • SSL 인증서를 통한 보안 강화

4. NginX 주요 설정

4.1 NginX 설치

  1. Ubuntu에서 설치
    sudo apt update
     sudo apt install nginx
  2. 설치 확인
    sudo systemctl status nginx

4.2 기본 설정 파일 경로

  • /etc/nginx/nginx.conf: 주요 설정 파일
  • /etc/nginx/sites-available/: 가상 호스트 설정
  • /etc/nginx/sites-enabled/: 활성화된 사이트 설정

4.3 간단한 HTTP 서버 설정 예제

server {
    listen 80;
    server_name example.com;

    location / {
        root /var/www/html;
        index index.html;
    }
}

4.4 리버스 프록시 설정 예제

server {
    listen 80;
    server_name example.com;

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

5. 로드 밸런싱 설정 예제

5.1 라운드 로빈 방식

http {
    upstream backend {
        server backend1.example.com;
        server backend2.example.com;
    }

    server {
        listen 80;

        location / {
            proxy_pass http://backend;
        }
    }
}

5.2 최소 연결 방식

upstream backend {
    least_conn;
    server backend1.example.com;
    server backend2.example.com;
}

6. HTTPS 설정

6.1 SSL 인증서 적용 예제

server {
    listen 443 ssl;
    server_name example.com;

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

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

7. 마무리

최종 프로젝트 하면서 해당 내용 설정 적용 했던 SSL, HTTP 설정, 리버스 프록시, NginX 설치 기억을 다시 상기하며 공부 할 수 있었으며 해당 내용을 다시 한 번 알아 가게 되는 시간 이였습니다.

profile
조급해하지 말고, 흐름을 만들고, 기록하면서 쌓아가자.

0개의 댓글