Nginx(엔진엑스)는 고성능 웹 서버 소프트웨어이자 리버스 프록시, 로드 밸런서, HTTP 캐시 등 다양한 역할을 수행할 수 있는 오픈 소스 솔루션이다.

- 높은 성능과 효율성:
Nginx는 이벤트 기반 아키텍처를 사용하여 다수의 동시 연결을 효율적으로 처리할 수 있습니다. 이를 통해 높은 트래픽 상황에서도 빠른 응답 속도를 유지할 수 있다. - 낮은 메모리 사용량:
동시 접속 수가 많아져도 메모리 사용량이 적어 서버 자원을 효율적으로 사용할 수 있다. - 리버스 프록시 및 로드 밸런싱:
웹 애플리케이션의 트래픽을 여러 서버로 분산시키거나, 클라이언트의 요청을 백엔드 서버로 전달하는 리버스 프록시 기능을 제공합니다. 이를 통해 부하 분산과 장애 조치(failover)를 구현할 수 있다. - 정적 파일 서빙:
정적 콘텐츠(HTML, CSS, JavaScript, 이미지 등)를 빠르게 제공하는 데 최적화되어 있어, 콘텐츠 전송 속도를 향상시킬 수 있다. - 모듈화 및 확장성:
다양한 모듈을 통해 기능을 확장할 수 있으며, 필요에 따라 커스텀 모듈을 추가할 수 있다.
사용 용도
- 웹 서버:
고성능 HTTP 서버로서 정적 및 동적 콘텐츠를 클라이언트에 제공하는 데 사용된다. - 리버스 프록시 서버:
클라이언트 요청을 내부 서버로 전달하여 보안 및 부하 분산을 담당한다. - 로드 밸런서:
다수의 서버 간에 트래픽을 분산시켜 시스템의 안정성과 확장성을 높인다. - HTTP 캐시 서버:
자주 요청되는 콘텐츠를 캐시하여 서버 부하를 줄이고 응답 속도를 향상시킨다.
Niginx는 왜 아직도 인기있는가?
- 높은 성능:
동시 접속 처리를 효율적으로 수행해 대규모 트래픽 처리에 적합하다. - 유연성:
다양한 역할(웹 서버, 리버스 프록시, 로드 밸런서 등)을 하나의 소프트웨어로 처리할 수 있어, 시스템 설계의 유연성을 제공한다. - 확장성:
서버 확장이 필요한 환경에서 간편하게 설정을 조정하고 추가할 수 있어, 대규모 서비스에 적합하다. - 오픈 소스:
커뮤니티가 활발하게 기여하며 지속적인 업데이트와 개선이 이루어지고 있어, 최신 웹 환경에 신속하게 대응할 수 있다.
Niginx 서버 띄우기(openresty 사용)
openresty는 nginx을 사용하기에 openresty 기준으로 nginx서버 띄우는걸 보여줄 것이다.
(필자는 docker를 사용하여 서버를 띄웠다.)
docker-compose.yml
services:
openresty:
image: openresty/openresty:latest
container_name: openresty
ports:
- "8080:80"
volumes:
- ./openresty/nginx.conf:/etc/nginx/nginx.conf:ro
restart: unless-stopped
nginx:
image: nginx:latest
container_name: nginx
ports:
- "8081:80"
volumes:
- ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro
- ./nginx/html:/usr/share/nginx/html:ro
restart: unless-stopped

nginx의 이미지에서 nginx.conf와 openrest이미지에서 lua파일을 생성하였다.

openresty 컨테이너에서 정상적으로 설치됨을 알려준다.

