Nginx(엔진엑스)는 고성능 HTTP 및 리버스 프록시 서버, 메일 프록시 서버, TCP/UDP 로드 밸런서로 사용되는 오픈 소스 소프트웨어이다. 원래 높은 연결을 처리하기 위해 설계되었으며, 현재는 웹 서버 및 애플리케이션 서버의 앞단에서 로드 밸런싱, 캐싱, 보안 강화 등의 역할을 수행하는 데 널리 사용된다.
| 비교 항목 | Nginx | Apache |
|---|---|---|
| 아키텍처 | 비동기 이벤트 기반 | 멀티스레드 기반 |
| 동시 연결 처리 | 매우 효율적 | 스레드/프로세스 증가 시 리소스 사용 증가 |
| 정적 파일 처리 속도 | 빠름 | 상대적으로 느림 |
| 리버스 프록시 및 로드 밸런싱 | 기본 제공 | 모듈 추가 필요 |
| 설정 파일 형식 | 단순하고 직관적 | 복잡한 설정 가능 |
server {
listen 80;
server_name example.com;
location / {
root /usr/share/nginx/html;
index index.html;
}
}
example.com 도메인으로 들어온 요청을 /usr/share/nginx/html/index.html에서 처리.server {
listen 80;
server_name api.example.com;
location / {
proxy_pass http://localhost:8080; # 백엔드 서버로 요청 전달
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
api.example.com에 요청을 보내면, 내부 8080 포트에서 동작하는 백엔드 서버로 요청을 전달.upstream backend_servers {
server backend1.example.com;
server backend2.example.com;
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend_servers;
}
}
backend1.example.com, backend2.example.com으로 요청을 분산하여 로드 밸런싱.Nginx는 가볍고 빠른 웹 서버로서 고성능과 확장성이 필요한 환경에서 많이 사용된다. 리버스 프록시, 로드 밸런싱, 보안 강화 등 다양한 기능을 제공하므로 대규모 트래픽을 처리하는 웹 서비스에 필수적이다.