linuxw***
2021-06-16

간결한 예제를 따라 엔진엑스의 다양한 기능을 익힌다. 엔진엑스의 고성능 부하분산과 보안 기능, 서버를 배포하고 관리하는 방법에 초점을 맞춘다.
국내에 NGINX 책이 전무한테, 반갑게도 6월에 오라일리의 NGINX 쿡북(Cookbook)이 번역되어 출간되었습니다.
저는 5년전부터 오픈소스를 기반으로 전자상거래 솔루션을 개발하면서 Apache 대신에 NGINX를 사용하고 있지만, Apache와 비교해서 상대적으로 기술 문서나 커뮤니티가 부족해서 운영에 크고 작은 애로사항을 겪었습니다.
지금은 어느정도 자체 문서화(트러블 슈팅)하여 대응하고 있지만, 대규모 서비스를 지탱하기 위한 기술은 여전히 Apache나 다른 WAS와 비교해서 경험이 부족합니다.
다행히 이 책은 고성능 부하분산, 클라우드 환경에서의 서버 배포와 같이 중/대규모 서비스 운영에 참고할 만한 레시피(문제해결을 위한 상세한 테크닉)가 충분해서 인프라 개발자에게 상당한 도움이 될 것으로 기대됩니다.
특히 이 책에선 오픈 소스 NGINX 뿐만 아니라 상용버전인 NGINX PLUS의 기능까지 구분하여 다루고 있는 점도 장점입니다.
그리고 일반적인 쿡북처럼 네트워크나 서버에 대한 깊은 지식이 없어도 누구든지 문제해결을 위해 쉽게 따라할 수 있도록 문제, 해결, 논의, 참고라는 섹션으로 구분 지어 설명하고 있습니다.
저는 개인 PC에 VMWare Workstation에 CentOS 7와 NGINX 1.20.1를 설치하여 실습을 진행했습니다.
1장에서는 Linux OS별로 설치법에 대해서 설명합니다.
2장에서는 부하를 여러 대의 서버에 분산하는HTTP, TCP, UDP 등의 로드밸런싱에 대해 배웁니다. 라운드로빈~IP해시까지 6가지의 부하분산 알고리즘에 대한 설명을 참고할 수 있습니다.
3장에선 특정 조건의 사용자를 판단하여 트래픽을 분기/조절하는 기법에 대해 배웁니다.
GeoIP를 이용한 사용자의 위치 파악, 접근 제어, 요청빈도 제어, 전송 대여폭 제한은 트래픽 경로와 흐름을 제어하는데 활용할 수 있습니다.
4장에서는 콘텐츠 캐싱에 대해 배우는데 일반적인CDN 기능을 NGINX를 이용하여 구현이 가능합니다.
6장에선 간단한 HTTP 인증(HTTP Authentication) 구현법과 JSON 형태의 인증 토큰을 만들어 통신할 때 쓰는 JWT(JSON Web Token)에 대해 상세히 배웁니다.
7장은 실무에서 매우 중요한 보안 설정 및 제어에 관한 내용입니다. 우선 클라이언트 IP를 파악하여 리소스(주로 admin 디렉터리)를 보호하는 방법을 설명합니다. 크로스 오리진 리소스 공유법, SSL 인증서 설치법, https 자동 리다이렉션, 보안 링크를 이용한 Location 블록의 보호법 등 실무에서 자주 설정하는 내용들이 많습니다.
8장은 http/2에 관한 내용인데 NGINX는 서버설정에서 간단하게 HTTP/2를 활성화할 수 있습니다.
9장은 Wowza 같은 스트리밍 서버처럼 mp4 등의 동영상 파일을 스트리밍 서비스하는 법에 대한 설명입니다.
10장은 요즘 대세가 된 클라우드(AWS, 애저, GCP) 환경에서의 배포에 관한 설명입니다. 사실 여기서 설명하는 내용은 대충 이해만 하고, 관련 서적을 찾아 별도의 학습이 필요합니다.
11장은 도커와 쿠버네티스에 관한 내용이고 12~13장에서는 서버의 고가용성, 기본 모니터링을 위한 모듈 설정에 대해 배웁니다.
14장은 NGINX를 서버로 사용할 경우 맞주하게 될지도 모르는 에러에 대한 디버깅과 트러블슈팅에 대한 설명입니다.
15장은 성능 이슈에 대한 내용이고, 17장은 실전 운영팁이라고 소개되어 있는데 NGINX의 설정 파일을 include 지시자로 이해하기 쉽게 그룹화하고, 설정 파일의 오류로 NGINX가 오동작할 때 디버깅하는 방법에 대해 배웁니다.
이상으로 간단하게 NGINX 쿡북에 대한 리뷰를 적어 보았습니다.
이 책으로 NGINX가 제공하는 놀라운 기능들을 실무에 십분 활용하셨으면 좋겠습니다.
* "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."