🤖

본 콘텐츠의 이미지 및 내용은 AI로 생성되었습니다.

⚠️

본 콘텐츠의 이미지 및 내용을 무단으로 복제, 배포, 수정하여 사용할 경우 저작권법에 의해 법적 제재를 받을 수 있습니다.

이미지 로딩 중...

Nginx 핵심 개념 완벽 정리 - 슬라이드 1/13
A

AI Generated

2025. 11. 1. · 13 Views

Nginx 핵심 개념 완벽 정리

웹 서버와 리버스 프록시로 널리 사용되는 Nginx의 핵심 개념을 초급 개발자도 쉽게 이해할 수 있도록 정리했습니다. 기본 설정부터 실무에서 자주 사용하는 패턴까지 다룹니다.


카테고리:TypeScript
언어:TypeScript
메인 태그:#Nginx
서브 태그:
#ReverseProxy#LoadBalancing#Configuration#WebServer

들어가며

이 글에서는 Nginx 핵심 개념 완벽 정리에 대해 상세히 알아보겠습니다. 총 12가지 주요 개념을 다루며, 각각의 개념에 대한 설명과 실제 코드 예제를 함께 제공합니다.

목차

  1. 기본_서버_블록_설정
  2. 리버스_프록시_설정
  3. 정적_파일_캐싱
  4. 로드_밸런싱_설정
  5. HTTPS_SSL_설정
  6. HTTP를_HTTPS로_리다이렉트
  7. CORS_헤더_설정
  8. Rate_Limiting_요청_제한
  9. Gzip_압축_설정
  10. 커스텀_에러_페이지
  11. 위치별_접근_제어
  12. WebSocket_프록시_설정

1. 기본 서버 블록 설정

개요

Nginx의 가장 기본이 되는 서버 블록 설정입니다. 포트와 서버 이름, 루트 디렉토리를 지정하여 정적 파일을 서빙합니다.

코드 예제

server {
    listen 80;
    server_name example.com;
    root /var/www/html;

    location / {
        try_files $uri $uri/ =404;
    }
}

설명

80번 포트로 들어오는 요청을 받아 /var/www/html 디렉토리의 파일을 제공합니다. 파일이 없으면 404 에러를 반환합니다.


2. 리버스 프록시 설정

개요

Nginx를 리버스 프록시로 사용하여 백엔드 애플리케이션으로 요청을 전달합니다. Node.js, Python 등의 앱 서버 앞단에 배치됩니다.

코드 예제

server {
    listen 80;
    server_name api.example.com;

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

설명

모든 요청을 localhost:3000으로 실행 중인 백엔드 서버로 전달하며, 원본 호스트와 클라이언트 IP 정보를 헤더에 포함시킵니다.


3. 정적 파일 캐싱

개요

이미지, CSS, JS 파일 등 정적 리소스에 대한 브라우저 캐싱을 설정하여 성능을 향상시킵니다.

코드 예제

location ~* \.(jpg|jpeg|png|gif|css|js)$ {
    expires 30d;
    add_header Cache-Control "public, immutable";
    access_log off;
}

설명

이미지와 CSS/JS 파일에 30일간의 캐시 유효기간을 설정하고, 불필요한 액세스 로그를 비활성화하여 성능을 최적화합니다.


4. 로드 밸런싱 설정

개요

여러 백엔드 서버로 트래픽을 분산시켜 가용성과 성능을 향상시킵니다. 라운드 로빈 방식으로 요청을 분배합니다.

코드 예제

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

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

설명

3개의 백엔드 서버를 정의하고 순차적으로 요청을 분배합니다. 한 서버가 다운되어도 다른 서버로 자동 전환됩니다.


5. HTTPS SSL 설정

개요

SSL 인증서를 적용하여 HTTPS 보안 통신을 활성화합니다. Let's Encrypt 등의 인증서를 사용할 수 있습니다.

코드 예제

server {
    listen 443 ssl;
    server_name example.com;

    ssl_certificate /etc/ssl/cert.pem;
    ssl_certificate_key /etc/ssl/key.pem;
    ssl_protocols TLSv1.2 TLSv1.3;
}

설명

443 포트로 SSL/TLS 암호화 통신을 제공하며, 최신 보안 프로토콜만 사용하도록 설정합니다.


6. HTTP를 HTTPS로 리다이렉트

개요

HTTP로 들어온 모든 요청을 자동으로 HTTPS로 리다이렉트하여 보안을 강제합니다.

코드 예제

server {
    listen 80;
    server_name example.com;

    return 301 https://$server_name$request_uri;
}

설명

80번 포트로 들어온 요청을 301 영구 리다이렉트로 HTTPS 주소로 자동 전환합니다.


7. CORS 헤더 설정

개요

Cross-Origin Resource Sharing을 허용하여 다른 도메인에서의 API 호출을 가능하게 합니다.

코드 예제

location /api {
    add_header Access-Control-Allow-Origin *;
    add_header Access-Control-Allow-Methods "GET, POST, PUT, DELETE";
    add_header Access-Control-Allow-Headers "Content-Type";
    proxy_pass http://localhost:3000;
}

설명

API 엔드포인트에 CORS 헤더를 추가하여 모든 도메인에서의 요청을 허용하고, 허용할 HTTP 메서드를 지정합니다.


8. Rate Limiting 요청 제한

개요

특정 IP에서 과도한 요청을 보내는 것을 방지하여 서버를 보호합니다. DDoS 공격 방어에 유용합니다.

코드 예제

limit_req_zone $binary_remote_addr zone=mylimit:10m rate=10r/s;

server {
    location /api {
        limit_req zone=mylimit burst=20;
        proxy_pass http://localhost:3000;
    }
}

설명

IP당 초당 10개의 요청만 허용하며, 순간적으로 최대 20개까지 버스트를 허용합니다. 초과 요청은 503 에러를 반환합니다.


9. Gzip 압축 설정

개요

텍스트 기반 리소스를 압축하여 전송하면 네트워크 대역폭을 절약하고 로딩 속도를 향상시킵니다.

코드 예제

gzip on;
gzip_types text/plain text/css application/json application/javascript;
gzip_min_length 1000;
gzip_comp_level 6;

설명

1KB 이상의 텍스트, CSS, JSON, JavaScript 파일을 레벨 6로 압축하여 클라이언트에 전송합니다.


10. 커스텀 에러 페이지

개요

에러 발생 시 사용자에게 친숙한 커스텀 에러 페이지를 보여줍니다. 사용자 경험을 개선합니다.

코드 예제

server {
    error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;

    location = /404.html {
        root /var/www/errors;
    }
}

설명

404 에러와 5xx 서버 에러 발생 시 각각 지정된 커스텀 HTML 페이지를 표시합니다.


11. 위치별 접근 제어

개요

특정 URL이나 디렉토리에 대한 접근을 IP 주소 기반으로 제한합니다. 관리자 페이지 보호에 유용합니다.

코드 예제

location /admin {
    allow 192.168.1.0/24;
    allow 10.0.0.1;
    deny all;

    proxy_pass http://localhost:3000;
}

설명

/admin 경로는 특정 IP 대역과 주소에서만 접근 가능하고, 나머지는 모두 차단됩니다.


12. WebSocket 프록시 설정

개요

WebSocket 연결을 위한 특별한 헤더 설정입니다. 실시간 채팅이나 알림 기능에 필수적입니다.

코드 예제

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

설명

WebSocket 프로토콜 업그레이드를 위한 헤더를 설정하여 양방향 실시간 통신을 가능하게 합니다.


마치며

이번 글에서는 Nginx 핵심 개념 완벽 정리에 대해 알아보았습니다. 총 12가지 개념을 다루었으며, 각각의 사용법과 예제를 살펴보았습니다.

관련 태그

#Nginx #ReverseProxy #LoadBalancing #Configuration #WebServer

#Nginx#ReverseProxy#LoadBalancing#Configuration#WebServer#TypeScript

댓글 (0)

댓글을 작성하려면 로그인이 필요합니다.
이전4/4
다음