Nginx 최종 수정일 2026-06-19 02:05 조회수 14
대시보드

Nginx

기본 정보

  • 이름: Nginx
  • 발음: 엔진엑스
  • 분류: 웹 서버(Web Server), 리버스 프록시(Reverse Proxy), 로드 밸런서
  • 개발자: 이고르 시소예프(Igor Sysoev)
  • 최초 공개: 2004년
  • 라이선스: BSD License (오픈소스)
  • 주요 용도: 웹 서비스, API 서버, 리버스 프록시, SSL 처리
  • 관련 주제: #Nginx #웹서버 #ReverseProxy #LoadBalancer #HTTP

개요

Nginx는 고성능 웹 서버 및 리버스 프록시 서버이다.

이벤트 기반(Event-Driven) 비동기 구조를 사용하여 적은 메모리로 많은 동시 접속을 처리할 수 있으며, 대규모 웹 서비스와 API 서버에서 널리 사용된다.

정적 파일 서비스, SSL 종료(SSL Termination), 로드 밸런싱, 캐싱 등 다양한 기능을 제공하며, PHP-FPM과 함께 PHP 서비스를 운영하는 경우가 많다.


주요 특징

  • 이벤트 기반(Event-Driven)
  • 비동기(Asynchronous) 처리
  • 높은 동시 접속 처리 성능
  • 리버스 프록시 지원
  • 로드 밸런싱 지원
  • HTTP/2 및 HTTP/3 지원
  • SSL/TLS 지원
  • FastCGI 지원
  • 캐시 기능 제공

동작 구조

브라우저

↓

HTTP / HTTPS

↓

Nginx

├── 정적 파일

├── Reverse Proxy

├── Load Balancer

├── SSL

├── Cache

└── FastCGI

↓

PHP-FPM / Node.js / Spring Boot

↓

Database

주요 역할

  • 정적 파일 제공
  • Reverse Proxy
  • SSL 인증서 처리
  • API Gateway
  • Load Balancing
  • 캐시 서버
  • 압축(Gzip/Brotli)
  • URL Rewrite

설치 경로(Linux)

/

/etc/nginx/

/etc/nginx/nginx.conf

/etc/nginx/sites-available/

/etc/nginx/sites-enabled/

/var/www/

/var/log/nginx/

배포 환경에 따라 경로는 달라질 수 있다.


주요 설정 파일

nginx.conf

default.conf

site.conf

mime.types

기본 서버 설정

server {

    listen 80;

    server_name example.com;

    root /var/www/html;

    index index.php index.html;

}

Location

location / {

    try_files

    $uri

    $uri/

    /index.php?$query_string;

}

URL 요청을 처리하는 핵심 설정이다.


PHP-FPM 연동

location ~ \.php$ {

    fastcgi_pass unix:/run/php/php-fpm.sock;

    include fastcgi_params;

}

PHP 요청을 PHP-FPM으로 전달한다.


Reverse Proxy

location / {

    proxy_pass

    http://127.0.0.1:3000;

}

Node.js, Spring Boot 등 백엔드 서버 앞단에서 사용된다.


Load Balancer

upstream backend {

    server 192.168.0.10;

    server 192.168.0.11;

}
proxy_pass

http://backend;

여러 서버에 요청을 분산한다.


HTTPS

server {

    listen 443 ssl;

    ssl_certificate cert.pem;

    ssl_certificate_key key.pem;

}

SSL/TLS를 적용하여 HTTPS 서비스를 제공한다.


Redirect

return 301

https://example.com;

HTTP → HTTPS 리디렉션 등에 사용된다.


Gzip

gzip on;

gzip_types

text/css

application/javascript;

응답 데이터를 압축하여 전송 속도를 향상시킨다.


Cache

proxy_cache mycache;

API 및 정적 파일의 응답 속도를 높이는 데 활용된다.


로그

Access Log

access.log

Error Log

error.log

운영 중 장애 분석과 트래픽 확인에 사용된다.


주요 활용 분야

  • 웹 서버
  • API Gateway
  • Reverse Proxy
  • Load Balancer
  • CDN Origin
  • Docker Gateway
  • Kubernetes Ingress
  • SSL Gateway

성능 최적화

대표 방법

  • Worker Process 조정
  • Worker Connections 조정
  • Keepalive 활성화
  • Gzip/Brotli 압축
  • HTTP/2 활성화
  • Cache 활용
  • FastCGI Cache 사용
  • 정적 파일 캐싱

보안 설정

권장 사항

  • HTTPS 기본 적용
  • TLS 최신 버전 사용
  • Server Token 숨김
  • Rate Limit 적용
  • IP 접근 제한
  • Security Header 추가
  • 최신 버전 유지
  • 불필요한 모듈 제거

Apache와 비교

NginxApache
이벤트 기반프로세스/스레드 기반
동시 접속 처리 우수설정 유연성 높음
Reverse Proxy 강점.htaccess 지원
메모리 사용량 적음모듈 생태계 풍부
대규모 서비스 적합PHP 단독 운영에 적합

대표 활용 사례

  • Netflix
  • GitHub
  • WordPress 호스팅
  • API 서버
  • Kubernetes Ingress Controller
  • Docker 기반 서비스

장점

  • 매우 높은 성능
  • 낮은 메모리 사용량
  • 동시 접속 처리 우수
  • Reverse Proxy 기능 강력
  • 설정이 구조적
  • Docker 및 Kubernetes와 잘 어울림

단점

  • .htaccess 미지원
  • 초기 설정이 Apache보다 어려울 수 있음
  • 복잡한 Rewrite 규칙 작성 시 학습 필요

실무 메모

실무에서는 다음과 같은 방식이 권장된다.

  • HTTPS 기본 적용
  • HTTP/2 활성화
  • PHP는 PHP-FPM 사용
  • Reverse Proxy 구조 적용
  • Gzip 또는 Brotli 압축 활성화
  • Cache 적극 활용
  • Access/Error Log 분리 관리
  • Worker Process 자동 설정
  • Docker와 함께 운영
  • Let's Encrypt 인증서 자동 갱신 적용

Nginx와 함께 사용하는 기술


대표 명령어

설정 검사

nginx -t

재시작

systemctl restart nginx

시작

systemctl start nginx

중지

systemctl stop nginx

리로드

systemctl reload nginx

관련 문서


출처

  • Nginx 공식 홈페이지
  • Nginx 공식 문서
  • Nginx Admin Guide