2000년대 중반, 한 러시아 엔지니어가 "동시 접속 1만 개를 한 서버에서 감당하기"라는 문제(이른바 C10K 문제)를 풀기 위해 새 웹 서버를 만들었다. 그것이 Nginx다. 요청마다 프로세스를 띄우던 Apache의 전통적 방식과 달리, Nginx는 적은 수의 워커가 이벤트 루프로 수많은 연결을 비동기 처리한다. 이 설계 덕분에 Nginx는 정적 파일 서빙과 리버스 프록시에서 압도적 효율을 보였고, 오늘날 세계 웹 서버 시장의 한 축을 차지한다. 오늘은 nginx.conf의 구조(http/server/location 블록), 리버스 프록시 설정, 로그와 튜닝, 그리고 Apache와의 본질적 차이를 정밀하게 익힌다.
핵심 통찰: Nginx 설정은 바깥에서 안으로 좁혀지는 블록의 중첩이다. http(전역) → server(가상 호스트) → location(URL 경로)으로 범위가 좁아지며, 각 블록은 상위의 설정을 물려받고 필요한 부분만 덮어쓴다. 이 상속 구조만 이해하면 nginx.conf가 한눈에 읽힌다.
# 설치
yum install nginx
# 데몬 제어
systemctl start nginx
systemctl enable nginx
# 설정 문법 검사 (재시작 전 필수!)
nginx -t
# 설정 무중단 재적용 (연결 끊김 없이 reload)
nginx -s reload
systemctl reload nginx