메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

NGINX 쿡북(2판)

115가지 레시피로 배우는 고성능 부하분산, 보안, 서버 배포와 관리

한빛미디어

번역서

판매중

  • 저자 : 데릭 디용기
  • 번역 : 노승헌
  • 출간 : 2022-12-20
  • 페이지 : 244 쪽
  • ISBN : 9791169210614
  • 물류코드 :11061
  • 구판정보 :이 도서는 <NGINX 쿡북>의 개정판입니다. 구판 정보 보기
  • 초급 초중급 중급 중고급 고급
4.5점 (11명)
좋아요 : 5

애플리케이션의 성능, 신뢰성, 보안을 책임지는

만능 웹 서버 소프트웨어 엔진엑스 제대로 활용하기

 

엔진엑스 설치 및 사용법부터 다양한 모듈과 실전 운영 팁까지 다룬다. 엔진엑스라는 애플리케이션 전송 플랫폼을 최대한으로 활용할 수 있도록 오픈 소스 엔진엑스뿐 아니라 엔진엑스 플러스, 컨트롤러 등 상용 버전의 폭넓은 기능을 풍부하게 담았다. 실무에서 엔진엑스를 사용하고 있다면 그동안 몰랐던 기능을 발견하는 재미도 느낄 것이다. 2판에서는 엔진엑스 인스턴스 매니저를 셋업하고 활용하는 방법도 다룬다. 다양한 기능을 필요에 따라 적용해 빠르고 안전한 애플리케이션을 만들어보자.

 

 

상세페이지700_NGINX 쿡북(2판).jpg

데릭 디용기 저자

데릭 디용기

평생 기술에 대한 열정을 가져온 리눅스/유닉스 기반 시스템 및 웹 애플리케이션 전문가. 웹 개발, 시스템 관리 및 네트워킹 경험을 통해 현대 웹 아키텍처에 대한 포괄적인 지식을 쌓았다. 사이트 안정성 및 클라우드 솔루션 엔지니어 팀의 리더로서 수많은 애플리케이션의 자가 치유 및 자동 확장 인프라를 생산한다. 고가용성 애플리케이션을 설계, 구축, 유지 관리하며 클라우드를 막 도입하는 대규모 기업을 컨설팅하기도 한다. 데릭과 그의 팀은 기술 파도의 최전선에서 매일 클라우드 모범 사례를 엔지니어링한다. 탄력적인 클라우드 아키텍처에 대한 입증된 실적을 바탕으로 고객에게 가장 이익이 되는 보안 및 유지 관리를 위한 클라우드 배포를 개척하고 있다.

 

노승헌 역자

노승헌

눈물 없이 볼 수 없는 한 편의 뮤직비디오 같은 인생을 만드느라 바쁜 센티멘털리스트. 삼성네트웍스, SK텔레콤, 아카마이 코리아를 거치면서 개발자, 프로젝트 매니저, 제품 오너, 솔루션 아키텍트 등 다양한 영역에서 자신을 시험해보고 있습니다. 현재는 라인플러스에서 사용자가 서비스를 더 쾌적하게 사용할 수 있도록 글로벌 트래픽에 관한 업무를 수행합니다. 집필한 도서로는 『나는 LINE 개발자입니다』(한빛미디어, 2019), 『슬랙으로 협업하기』(위키북스, 2017), 『소셜 네트워크로 세상을 바꾼 사람들』(길벗, 2013) 등이 있습니다.

 

chapter 1 엔진엑스 기초

_1.0 소개

_1.1 데비안/우분투 리눅스 배포판에 설치하기

_1.2 레드햇/센트OS 리눅스 배포판에 설치하기

_1.3 엔진엑스 플러스 설치하기

_1.4 설치 상태 점검하기

_1.5 주요 설정 파일, 디렉터리, 명령어

_1.6 정적 콘텐츠 서비스하기

_1.7 무중단으로 설정 리로드하기

 

chapter 2 고성능 부하분산

_2.0 소개

_2.1 HTTP 부하분산

_2.2 TCP 부하분산

_2.3 UDP 부하분산

_2.4 부하분산 알고리즘

_2.5 스티키 쿠키(엔진엑스 플러스)

_2.6 스티키 런(엔진엑스 플러스)

_2.7 스티키 라우팅(엔진엑스 플러스)

_2.8 커넥션 드레이닝(엔진엑스 플러스)

_2.9 수동적인 헬스 체크

_2.10 능동적인 헬스 체크(엔진엑스 플러스)

_2.11 슬로 스타트(엔진엑스 플러스)

 

chapter 3 트래픽 관리

_3.0 소개

_3.1 A/B 테스트

_3.2 GeoIP 모듈과 데이터베이스 활용하기

_3.3 국가 단위 접근 차단하기

_3.4 실제 사용자 IP 찾기

_3.5 연결 제한하기

_3.6 요청 빈도 제한하기

_3.7 전송 대역폭 제한하기

 

chapter 4 대규모 확장 가능한 콘텐츠 캐싱

_4.0 소개

_4.1 캐시 영역

_4.2 캐시 락

_4.3 해시 키 값 캐시

_4.4 캐시 우회

_4.5 캐시 성능

_4.6 캐시 퍼지(엔진엑스 플러스)

_4.7 캐시 분할

 

chapter 5 프로그래머빌리티와 자동화

_5.0 소개

_5.1 엔진엑스 플러스 API

_5.2 키-값 저장소 사용하기(엔진엑스 플러스)

_5.3 NJS 모듈로 엔진엑스 자바스크립트 기능 활용하기

_5.4 상용 프로그래밍 언어로 엔진엑스 확장하기

_5.5 셰프로 엔진엑스 설치하기

_5.6 앤서블로 엔진엑스 설치하기

_5.7 콘술 템플릿 기능으로 설정 자동화하기

 

chapter 6 인증

_6.0 소개

_6.1 HTTP 기본 인증

_6.2 인증을 위한 하위 요청

_6.3 JWT 검증하기(엔진엑스 플러스)

_6.4 JSON 웹 키 생성하기(엔진엑스 플러스)

_6.5 JSON 웹 토큰 검증하기(엔진엑스 플러스)

_6.6 JSON 웹 키 세트 획득 자동화와 캐싱(엔진엑스 플러스)

_6.7 오픈아이디 커넥트 SSO를 통한 사용자 인증(엔진엑스 플러스)

 

chapter 7 보안 제어

_7.0 소개

_7.1 IP 주소 기반 접근 제어

_7.2 크로스 오리진 리소스 공유(CORS)

_7.3 클라이언트 측 암호화

_7.4 고급 클라이언트 측 암호화

_7.5 업스트림 암호화

_7.6 location 블록 보호하기

_7.7 비밀값으로 보안 링크 생성하기

_7.8 기간 제한 링크로 location 블록 보호하기

_7.9 기간 제한 링크 생성하기

_7.10 HTTPS 리다이렉션

_7.11 HTTPS 리다이렉션 - SSL 오프로딩 계층이 있는 경우

_7.12 HSTS

_7.13 다중 계층 보안

_7.14 다중 계층 DDoS 방어(엔진엑스 플러스)

_7.15 앱 프로텍트 WAF 모듈 설치와 설정(엔진엑스 플러스)

 

chapter 8 HTTP/2

_8.0 소개

_8.1 기본 설정

_8.2 gRPC

_8.3 HTTP/2 서버 푸시

 

chapter 9 정교한 스트리밍

_9.0 소개

_9.1 MP4와 FLV 서비스하기

_9.2 HLS 스트리밍(엔진엑스 플러스)

_9.3 HDS 스트리밍(엔진엑스 플러스)

_9.4 대역폭 제한하기(엔진엑스 플러스)

 

chapter 10 클라우드 환경 배포

_10.0 소개

_10.1 AWS 환경에서 자동 프로비저닝 구현하기

_10.2 AWS ELB를 쓰지 않고 엔진엑스 노드로 라우팅하기

_10.3 NLB 샌드위치

_10.4 AWS 마켓플레이스를 통해 엔진엑스 구축하기(엔진엑스 플러스)

_10.5 애저 환경에서 엔진엑스 가상 머신 이미지 생성하기

_10.6 애저 환경에서 엔진엑스 스케일 세트를 통해 부하분산하기

_10.7 애저 마켓플레이스의 이미지로 서버 배포하기

_10.8 구글 컴퓨트 엔진에서 엔진엑스 배포하기

_10.9 구글 컴퓨트 이미지 생성하기

_10.10 구글 앱 엔진 프록시 생성하기

 

chapter 11 컨테이너와 마이크로서비스

_11.0 소개

_11.1 엔진엑스를 API 게이트웨이로 사용하기

_11.2 DNS의 SRV 레코드 활용하기(엔진엑스 플러스)

_11.3 공식 엔진엑스 이미지 사용하기

_11.4 엔진엑스 도커 파일 생성하기

_11.5 엔진엑스 플러스 도커 이미지 생성하기

_11.6 엔진엑스에서 환경변수 사용하기

_11.7 쿠버네티스 인그레스 컨트롤러

_11.8 프로메테우스 익스포터 모듈

_11.9 mTLS를 이용한 엔진엑스 서비스 메시 구성

 

chapter 12 고가용성 보장을 위한 설정

_12.0 소개

_12.1 엔진엑스 플러스 HA 모드

_12.2 DNS를 이용한 로드 밸런서 부하분산

_12.3 EC2의 부하분산

_12.4 엔진엑스 플러스 설정 동기화하기

_12.5 상태 공유와 영역 동기화(엔진엑스 플러스)

 

chapter 13 고급 활동 모니터링

_13.0 소개

_13.1 오픈 소스 엔진엑스의 Stub Status 활성화하기

_13.2 모니터링 대시보드 활성화하기(엔진엑스 플러스)

_13.3 엔진엑스 플러스 API로 지표 수집하기

 

chapter 14 디버깅과 트러블슈팅

_14.0 소개

_14.1 접근 로그 설정하기

_14.2 오류 로그 설정하기

_14.3 로그를 시스로그로 전달하기

_14.4 요청 추적하기

_14.5 엔진엑스를 위한 오픈트레이싱

 

chapter 15 성능 튜닝

_15.0 소개

_15.1 로드 드라이버로 시험 자동화하기

_15.2 클라이언트와의 연결 유지하기

_15.3 업스트림 서버와의 연결 유지하기

_15.4 응답 버퍼링

_15.5 접근 로그 버퍼링

_15.6 운영체제 튜닝

 

chapter 16 엔진엑스 인스턴스 매니저

_16.0 소개

_16.1 셋업 개요

_16.2 에이전트 설치

_16.3 API로 엔진엑스 탐색, 설정, 모니터링 자동화하기

 

chapter 17 엔진엑스 컨트롤러

_17.0 소개

_17.1 셋업 개요

_17.2 엔진엑스 플러스를 컨트롤러와 연결하기

_17.3 API를 이용해 엔진엑스 컨트롤러 운영하기

_17.4 컨트롤러 앱 시큐리티를 이용해 WAF 활성화하기

 

chapter 18 실전 운영 팁

_18.0 소개

_18.1 include 구문을 사용해 깔끔한 설정 만들기

_18.2 설정 디버깅하기

웹 애플리케이션을 위한 스위스 군용 칼

Welcome to nginx cookbook!

 

1990년대 후반부터 2000년대 초반 사이에는 인터넷이 보급되면서 웹이 폭발적으로 성장했고, 당시 웹 서버 시장 점유율 1위를 굳건히 지키던 아파치 서버는 한계를 맞닥뜨리게 되었습니다. 트래픽 증가로 동시 요청이 1만 개를 넘어가면 성능이 저하되는 이른바 C10k 문제가 있었죠. 이를 극복하고 싶었던 러시아 개발자 이고르 시소예프는 비동기 이벤트 드리븐 방식으로 한 번에 많은 요청을 효율적으로 처리하는 웹 서버를 고안합니다. 이것이 오픈 소스 엔진엑스가 탄생한 배경입니다.

 

엔진엑스는 초창기에 아파치 서버의 단점을 보완하는 용도로 함께 사용되었지만 높은 성능과 편의성을 무기로 빠르게 성장해 현재는 전 세계 웹 서버 시장 점유율 1위에 자리하고 있습니다. 게다가 웹 애플리케이션을 위한 스위스 군용 칼이라는 별명답게 웹 서버와 리버스 프록시를 넘어서서 부하분산, 캐싱, 보안, API 게이트웨이 등 다양한 기능을 갖추었습니다.

 

이 책은 엔진엑스를 가장 엔진엑스답게 활용하기 위한 가이드입니다. 엔진엑스 오픈 소스 및 상용 버전에서 제공하는 유용한 기능과 그 사용법을 간결한 레시피로 설명합니다. 문제-해결-논의 형식의 레시피는 실무에서 필요할 때마다 꺼내 보고 참고하기 좋습니다. 그동안 엔진엑스를 단순히 웹 서버로만 사용해왔다면 새로운 기능을 발견하는 재미도 느낄 겁니다.

 

 

개정판에 추가된 내용

  • NJS 모듈로 엔진엑스 자바스크립트 기능을 활용하는 방법
  • 엔진엑스 인스턴스 매니저로 다수의 엔진엑스를 효율적으로 관리하는 방법
  • 엔진엑스 서비스 메시로 서비스 간에 mTLS 활성화하는 방법

 

장별 주요 내용

 

[1장 엔진엑스 기초]

운영체제별 설치 방법과 주요 설정 파일, 디렉터리, 명령어

 

[2장 고성능 부하분산]

HTTP, TCP, UDP 서버 부하분산 방법, 부하분산 알고리즘, 업스트림 서버 상태 모니터링 방법

 

[3장 트래픽 관리]

사용자 요청을 분기하거나 요청 빈도, 연결 수, 대역폭 등을 제한해 트래픽을 제어하는 방법

 

[4장 대규모 확장 가능한 콘텐츠 캐싱]

성능을 높이고 부하를 낮추기 위한 캐싱 방법

 

[5장 프로그래머빌리티와 자동화]

엔진엑스 플러스 API를 통해 키-값 저장소를 다루는 방법, 설정 관리 도구를 통해 엔진엑스를 설치하고 기본 설정을 템플릿화하는 방법

 

[6장 인증]

HTTP 기본 인증, 하위 요청을 통한 인증, JWT 검증 방법

 

[7장 보안 제어]

IP 주소 기반 접근 제어, CORS, 트래픽 암호화 방법

 

[8장 HTTP/2]

HTTP/2를 활성화하고 사용하는 방법, grPC, 서버 푸시 기능

 

[9장 정교한 스트리밍]

엔진엑스를 통해 MP4, FLV 파일을 스트리밍하는 방법과 엔진엑스 플러스의 HLS, HDS 기능

 

[10장 클라우드 환경 배포]

엔진엑스와 엔진엑스 플러스를 AWS, 애저, 구글 컴퓨트 엔진으로 배포하는 방법

 

[11장 컨테이너와 마이크로서비스]

엔진엑스와 엔진엑스 플러스를 API 게이트웨이로 사용하는 방법, 컨테이너 환경에서 사용하는 방법

 

[12장 고가용성 보장을 위한 설정]

DNS를 이용한 로드 밸런서 부하분산, EC2의 부하분산, 엔진엑스 플러스 설정 동기화 방법

 

[13장 고급 활동 모니터링]

엔진엑스 모니터링을 활성화하는 방법, 엔진엑스 플러스 대시보드와 API를 이용해 지표를 수집하는 방법

 

[14장 디버깅과 트러블슈팅]

로깅 방법, 시스로그 프로토콜을 통해 로그를 전달하는 방법, 오픈트레이싱을 활용해 요청에 식별자를 부여하고 분석하는 방법

 

[15장 성능 튜닝]

자동화 도구를 사용해 시험을 수행하고 결과를 측정해 성능을 튜닝하는 방법

 

[16장 엔진엑스 인스턴스 매니저]

엔진엑스 인스턴스 매니저를 셋업하는 방법, 에이전트를 설치하는 방법, API로 탐색, 설정, 모니터링을 자동화하는 방법

 

[17장 엔진엑스 컨트롤러]

엔진엑스 컨트롤러 셋업 개요, 컨트롤러를 엔진엑스 플러스 서버 인스턴스와 연결하고 API로 제어하는 방법

 

[18장 실전 운영 팁]

설정 파일이 정확하게 만들어졌는지 확인하는 방법, 설정 파일을 디버깅하는 방법

 

 

추천사

 

대규모 아키텍처를 위한 최고의 엔진엑스 지침서입니다. 책에서 소개하는 사용 사례는 마이크로서비스 환경에서 작업하는 동안 발생하는 거의 모든 문제를 해결하는 데 도움이 됩니다.

_곤살로 스피나, Brubank 소프트웨어 엔지니어

WEB 서버의 대표적인 NGINX의 도서가 개정판으로 돌아왔다.
NGINX에 대하여 소개를 하고 설치, 설정 등 기초적인 부분을 시작으로
실무에서 필요한 부분을 목차를 보고 찾아서 적용해 보기 좋은 구성으로 되어있다.

가끔 Flask를 이용해서 백엔드를 구축하는 일이 있는 데
NGINX를 연동할 때 많이 참고가 될 거 같다!

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

KakaoTalk_Photo_2023-02-27-21-31-46 006.jpeg

 

 

이 책은 쿡북이라는 제목처럼 요리를 골라 요리를 하는 방법을 적어둔 것 처럼 NGINX 를 이용해서 필요한 기능을 골라 그 기능을 구현할 수있는 레시피를 알려준다.

그래서, NGINX 의 모든기능에 대해서 차근차근 알고 싶다면 처음부터 읽어가면 되고, NGINX 세팅이 필요하거나 원하는 기능이 있다면 필요한 부분부터 골라보면 된다.

개인적으로 서버담당자가 작년 중순부터 부재라 대신 담당자로 역할을 수행하고 있는데, NGINX 로 로드벨런서와 캐시 등을 운영하고 있는 것을 보았는데, 이 책을 읽으면서 해당 기능을 구현하기 위한 세팅들에 대해서 더 쉽게 이해할 수 있었다.

그리고, NGINX 는 가볍기 때문에 몇가지 기능이 없을 것이라 생각한 것과 다르게 이 책을 통해  NGINX에 많은 다른 기능이 있음을 알 수 있었다.

참고로, 책의 두께도 235페이지로 많이 두껍지 않아서 금방 읽을 수 있고, 번역도 대체로 이해가 쉽게 잘 되어 있다.

업무나 프로젝트에서 NGINX 단순하게 사용하고 있는 분이라면 한번 쯤 읽어 놓으면 NGINX 를 더 효율적이고, 다양한 기능을 이용할 수 있을 것이라 생각된다.

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

보통 개발 프로젝트 데드라인에 맞춰 업무하다보면 메인이 되는 스택은 조금 시간을 들여서 공부하면서 작업을 하는 경우가 대다수고, nginx처럼 서브로 지원하는 형태의 스택은 10 중 1 정도만 아는 형태로 사용하는 경우가 저에겐 거의 전부였습니다.

 

이번 기회에 nginx에 대해 더 깊이 있게 배워 볼 수 있는 시간을 가졌고, nginx 관련해서 작업 설정이 필요할 때 레퍼런스 책처럼 활용할 수 있을 것으로 보입니다.

들어가며

최근 회사 프로젝트 목적으로 엔진엑스를 접하게 되었고, 이에 대한 지식이 전무했던지라 담당자와의 의사소통이 어려웠다. 정확히는 서비스 퀄리티를 높이기 위한 기능 요청을 하는 과정에서 아무래도 아는 것이 없으니 항상 기본 답변으로 오는 '안돼요~', '불가능해요~'에 너무나 간단히 막혀버렸다.

 

이 때문에 엔진엑스에 대한 기본사항이라도 배우고자 이 책을 시작했으나...솔직히 말해 너무 어려웠다. 일단 이 책이 입문자용 기본도서가 아니었고, 그렇다보니 간단한 명령어조차 제대로 알지 못하는 입장에선 활용성이 떨어졌다(플랫폼 팀에게 전달해주면 좋아할 것 같기도 하다).

 

때문에 이 책은 나같은 가볍게 접하고, 기본적인 개념과 명령어를 배우고자 하는 입문자들에겐 적합하지 않다는 것을 먼저 말해야 할 것 같다. 그리고 나같은 사람이 이 책을 읽기 위해 간단히 작성한 엔진엑스 입문자를 위한 내용인 아래 내용을 읽고 시도해본 뒤 진행해본다면 도움이 될 것 같다.

 

다음은 엔진엑스에 대한 기본적인 소개부터 서비스를 돌리는 명령어 등이다.

 


소개

엔진엑스는 오픈소스 웹 서버 소프트웨어로, 높은 성능, 안정성, 확장성을 제공합니다. 이번 포스트에서는 엔진엑스 기초를 학습해보겠습니다.

 

데비안/우분투 리눅스 배포판에 설치하기

엔진엑스는 데비안/우분투 리눅스 배포판에 쉽게 설치할 수 있습니다. 아래 명령어를 터미널에서 실행하여 엔진엑스를 설치할 수 있습니다.

sudo apt-get updatesudo apt-get install nginx

 

정적 콘텐츠 서비스하기

엔진엑스는 정적 콘텐츠를 서비스하는 데에 최적화되어 있습니다. 정적 콘텐츠를 서비스하려면 엔진엑스가 액세스할 수 있는 디렉토리에 파일을 넣어두면 됩니다. 기본적으로 엔진엑스는 /usr/share/nginx/html 디렉토리를 사용합니다.

 

클라우드 환경 배포

엔진엑스는 클라우드 환경에서 자동 프로비저닝 구현이 가능합니다. AWS, 애저, 구글 컴퓨트 엔진 등 다양한 클라우드 서비스에서 엔진엑스를 배포할 수 있습니다. AWS에서는 AWS ELB를 쓰지 않고 엔진엑스 노드로 라우팅하는 방법이 있습니다.

 

엔진엑스 설정 파일

엔진엑스는 설정 파일을 통해 다양한 기능을 제공합니다. 설정 파일은 기본적으로 /etc/nginx/nginx.conf 경로에 위치합니다. 설정 파일을 수정하고 적용하려면 아래 명령어를 실행합니다.

sudo nginx -tsudo service nginx reload

 

리버스 프록시 설정하기

엔진엑스는 리버스 프록시로 사용하기에도 좋습니다. 리버스 프록시란 클라이언트와 서버 사이에서 중개자 역할을 하는 서버를 말합니다. 엔진엑스를 사용한 리버스 프록시 설정 방법은 다음과 같습니다.

  1. /etc/nginx/sites-available/default 파일을 열고, server 블록 안에 다음과 같이 위치를 추가합니다.
	location / {    proxy_pass <http://localhost:3000>;    proxy_http_version 1.1;    proxy_set_header Upgrade $http_upgrade;    proxy_set_header Connection 'upgrade';    proxy_set_header Host $host;    proxy_cache_bypass $http_upgrade;}

  2. 위와 같이 설정 후, 아래 명령어를 실행합니다.

sudo service nginx restart

 

SSL 인증서 적용하기

SSL 인증서를 적용하면 HTTPS 프로토콜을 사용할 수 있습니다. SSL 인증서를 적용하는 방법은 다음과 같습니다.

  1. SSL 인증서를 발급받습니다. Let's Encrypt를 사용하면 무료로 SSL 인증서를 발급받을 수 있습니다.
  2. /etc/nginx/sites-available/default 파일을 열고, server 블록에 다음과 같이 SSL 인증서 경로를 추가합니다.
server {    ...    listen 443 ssl;    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;}

   3. 위와 같이 설정 후, 아래 명령어를 실행합니다.

	sudo service nginx restart

 


참고 자료

 

  "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

202302_NGINX.png

 

 

“Improve the Performance, Reliability, and Security of Your Applications”

 

NGINX 의 공식 웹사이트( https://www.nginx.com/ )에 표시된 문구로, NGINX가 추구하는 바가 무엇인지를 단적으로 나타내주는 말이다. NGINX를 간단히 말하면, 경량 웹서버이면서, 클라이언트의 요청을 실제 서버와 연결해주는 역할을 수행하며, 이 과정에서 로드 밸런싱의 효과와 실제 서버를 외부에 드러내지 않는 장점을 갖는다.

 

NGINX는 러시아의 개발자 이고르 시쇼브(Igor Sysoev)가 Apache HTTPd를 코딩하다 C10K 문제를 해결하기 위해 무설치 웹서버 데몬 프로그램을 개발하기 시작한 후, 2004년에 오픈 소스로 공개하였다. 이후 막심 코노발로프(Maxim Konovalov)와 공동으로 NGINX Inc를 설립하였고, 2019년 3월 미국의 F5 Inc가 인수한 바 있다. (출처: 나무위키)

 

NGINX는 Apache HTTPd와 달리 비동기 이벤트 기반 구조로 갖기 때문에, 서버 고부하시의 성능 예측이 쉬운 장점이 있다. NGINX는 가볍고 높은 성능으로 시장 점유율이 증가하고 있으며, 2023년 2월 W3Techs 자료에 따르면 NGINX는 34.3%, Apache는 32.3%를 나타내고 있다.

“NGINX 쿡북”은 NGINX를 효과적으로 사용할 수 있는 115가지 방법에 대해 다루고 있다. NGINX를 통해 고성능 부하 분산, 보안 , 서버의 배포와 관리에 관심있는 개발자, 시스템 운영자를 대상으로 한다.

 

이 책은 전체 18개의 챕터로 구성되어 있다. NGINX를 설치하고 주요 설정 파일을 다루는 방법에서부터 고성능 부하 분산, 트래픽 관리, 대규모 확장이 가능한 콘텐츠 캐싱 방안, 자동화에 대해 소개하는 것으로 책의 앞부분을 할애하고 있다. 이에 이어 어플리케이션 보안을 위한 인증 관련 내용을 심도있게 다루고, 최신 기술인 HTTP/2, 스트리밍, 클라우드, 컨테이너와 마이크로 서비스에 NGINX를 활용하는 방법을 소개한다. 마지막으로 고가용성 보장을 위한 설정, 고급 활동 모니터링, 디버깅과 트러블슈팅, 성능 튜닝과 함께 NGINX 인스턴스 매니저와 컨트롤러, 실제 운영에 도움이 될 노하우를 다루고 있다.

 

이 책은 NGINX가 제공하는 거의 모든 기능을 소개하고, 어떻게 설정하고 사용하는지를 상세히다루고 있는 만큼 NGINX에 관심이 있는 개발자 뿐 아니라, 보다 효과적으로 사용하고 싶은 시스템 관리자에게도 추천한다.

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

- 왜 보다는, 어떻게 NGINX를 쓸 수 있는가를 보여주는 책.

- NGINX 오픈소스 버전 뿐만 아니라, 상용 버전인 NGNIX+에서 가능한 기능까지 자세히 설명.

- 일반 웹 서비스 제공에 필요한 로드 밸런싱, 트래픽 관리, 컨텐츠 캐싱, 자동화 설정

- 심화 웹 서비스 제공을 위한 인증 및 보안, 미디어 스트리밍, 클라우드, 컨테이너, 모니터링 설정

- 있을법한 요구사항을, NGINX를 통해 해결하는 115가지 문제-해결 구조

- NGINX의 모듈 기능과, 파라미터 값 설명 > X

- 문제상황과, NGINX의 어떤 설정값을 통해 해결하는지 과정 설명

 

한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.”

NGINX는 백엔드 개발을 해봤다면 한 번 이상 사용해봤을 것이다. 나의 경우엔 크게 2가지로 사용했다.

  1. 첫번째는 운영툴에서 Reverse Proxy 로 쓰면서 여러개의 Web Server를 묶어서 API 와 웹서비스를 제공하는 형태로 사용했다. 이 때, static 파일의 경우 NGINX에서 이미 한번 보냈던 경로에 대해서는 캐싱을 하고 있다가 다시 요청이 오면 웹서버에 요청을 보내지 않고 캐싱된 파일을 제공하는 형태로 구성했다.
  2. 두번째는 Kubernetes (K8s)의 Ingress Controller 로써 사용중이었고 서비스에 도달하지 못했을 때 원인 파악을 위해 NGINX 로그를 한참 들여다보곤 했다.

위의 2가지로 사용하며 NGINX에 기능이 다양한데 무엇이 있는지 정도는 언젠가 한번 살펴봐야겠다 생각하고 있었고 NGINX 쿡북 이란 책을 알게되었다.115가지 레시피 라는 문구가 눈에 들어왔는데 그 중에서 책에 나온 기본적인 레시피 몇 개와 좀 놀랐던 기능 몇 개를 아래 블로그에 자세히 소개했다.

NGINX 쿡북(2판) 리뷰

위 글에서 업무를 진행하며 가장 와닿았던 부분을 소개했는데 이 책은

  • 부하 분산부터 시작하여 트래픽 관리, 캐싱, 자동화,
  • 인증, 보안,
  • HTTP/2, 스트리밍,
  • 클라우드 환경 배포, 컨테이너/마이크로서비스, 고가용성,
  • 모니터링, 및 디버깅/트러블슈팅/튜닝이라는 설정부터 운영까지의 모든 범위를 커버한다.
또한 엔진엑스 인스턴스 매니저와 컨트롤러를 소개하고 실전 운영 팁을 통해 NGINX를 좀 더 원활히 사용할 수 있도록 가이드를 제공하고 있다.

즉, NGINX 시작부터 운영까지 망라하고 있기에 이 정도 내용을 숙지하고 적절한 곳에 사용한다면 현업에 매우 도움이 될 것이다.

나의 경우도 NGINX에 이런 기능이 있는지 모르고 웹서버에 직접 구현한 것이 많기 때문에 앞으로는 NGINX를 좀 더 적극적으로 활용할 예정이다.

 

NGINX 쿡북(2판)과 공식문서를 함께 살펴보면 길을 헤매이지 않고 잘 활용할 수 있을 것이다.

옆에 두고 보면 좋을 책이라 평점 만점을 남기고 간다.

회사에서 하이브리드 데이터플랫폼을 지향하는데

nginx로 시작되는 vm 명칭을 봤다.

도대체 이 녀석은 무슨 역할을 하는지 그냥 지나갔다. 

하지만 이 책을 보고 난 이후에 베스쳔 호스트라는 걸을 알았다.

(베스쳔 호스트는 내부 네트워크에 접속할 수 있는 경로를 의미한다.)

그 이외 이 책의 내용을 통해 알게 된 것과 구성 방식에 대해 느낀 점을 정리한다.

 

1. nginx는 100% 무료인 오픈소스로 제공된다?

반은 맞고 반은 틀리다. nginx의 기능 중 유료 버젼인 nginx plus와 nginx controller가 있다. ADC와 같은 고급 기능들이 유로 버젼에 있다. 

아직 나는 이런 기능들을 사용할 요건이 없지만, 이런 것이 있다라는 점을 알아서 다행이라고 생각한다.

 

2. 사용하고 싶은 기능만 발췌해서 볼 수 있다.

문제, 해결, 논의로 순으로 내용을 담고 있다. 책 제목에 쿡북이 있는 것처럼 필요한 부분만 해당 레시피를 이용하면 되는 것이다.

이 부분은 전체를 읽을 필요 없고 업무 중 요건이 나오면 해당 부분만 읽으면 편할 것이다.

이 부분만 보더라도 nginx를 입문하는 사람들에게  공식적으로 검토된 책을 통해 쉽게 딥다이브할 수 있는 가치를 지닌다고 생각한다.

 

3. 많은 nginx의 기능들

첫장을 nginx의 기초로 시작하여 다양한 기능들을 다룬다. (유료 서비스 포함)

고성능 부하분산, 트래픽 관리, 대규모 확장 가능한 콘텐츠 캐싱, 프로그래머빌리티와 자동화, 인증, 보안 제어, HTTP/2, 정교한 스트리밍 등을 다룬다.

특히 요즘 대세인 클라우드 환경까지 다루어 알찬 것같다. 물론 클라우드 환경은 AWS, GCP, Azure 3사 모두를 다룬다. 

 

해당 책 내용을 통해 nginx의 기능들이 무엇이 있는지 알게 되었고

요건이 들어오면 해당 쿡북을 통해 다룰 생각이다. 

 

 

한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.”

 

# 서론

- 엔진엑스는 백엔드 개발자 (취준생...이지만)라면 한번은 꼭 들어 본 웹 서버일 것이다. 난 프로젝트에서 잠깐 써본 입장이었지만, 정확한 개념에 대해서도 확실히 알지는 못하는 상황이었다.

- 이 책은 기본서는 절대 아니다. 기본적으로 한 번 이상 직접적으로 써본 입장에서 안다고 가정하고 설명하는 부분이 많았다. 나에게 있어서 사실 알아 듣기 힘든 것도 많았지만 전체적으로 술술 읽어나가며, 나중에 써야할 일이 있다면 다시 한번 볼 수 있는 그런 책이다.

- 각 내용에 문제-해결-논의로 나뉘어 무엇을 할 것인지, 어떤 명령어를 사용할 것인지, 또 그에 대한 설명을 나누어 설명하여 가독성을 높였다.

 

# 내용

- 각 챕터에 대한 내용들을 간단하게 요약하였다. (모든 챕터 X)

## 1. 엔진엑스 기초

- 설치부터, 점검 및 설정 파일, 간단한 서비스에 대해 설명해 주는 챕터

- 각 배포판 별 리눅스별로 다른 설치법에 대해 상세히 설명해 준다.

- 엔진엑스부터 엔진엑스 플러스 설정을 다룬다.

 

 

## 2. 고성능 부하분산

- 오늘날 필요하게 된 높은 성능과 가용성의 인터넷 서비스를 할 수 있는 고성능 부하분산에 대한 챕터

- 부하를 분산하면서 세션을 유지하는 방법을 살펴본다. 즉, 사용자에게 제공하는 애플리케이션의 동적에 문제를 예방하는 방법.

- 또한, 부하분산 대상이 되는 업스트림 애플리케이션 서버의 상태를 모니터링하는 방법에 대해서도 다룬다.

 

 

## 3. 트래픽 관리

- 사용자 요청을 특정 비율로 분기 및 트래픽을 제어하는 방법에 대한 챕터.

- 여러 가지 분기 방법을 조합해 다양하게 트래픽 제어.

- A/B 테스트, GeoIP 모듈 활용부터, 각종 제한 및 차단.

 

 

## 4. 대규모 확장 가능한 콘텐츠 캐싱

- 캐싱은 임시로 저장해 두었다가 빠르게 가져올 수 있는 방법에 대한 해결책이다.

- 캐싱을 통해 성능을 높이고 부하를 낮추는 활용법에 대한 챕터.

- 캐시에 대한 영역, 락, 우회, 성능 분할 등을 다룬다.

 

 

## 6. 인증

- 클라이언트에 대한 인증에 대한 해결책을 제시.

- HTTP 기존 인증부터 JWT, JSON 웹 키를 다룬다.

 

 

## 7. 보안 제어

- 엔진엑스를 활용해 웹 애플리케이션을 보호하는 여러 방법을 살펴본다.

- IP 주소 기반 접근 제어, CORS, 및 여러 측면에 대한 암호화를 다룬다.

 

## 8. HTTP/2

- HTTP 프로토콜의 주요 개정판인 HTTP/2를 다룬다.

- 엔진엑스를 활용해 HTTP/2를 활성화하여 사용하는 설정 방법.

- 구글이 오픈소스로 제공하는 오픈 소스 원격 프로시저 호출인 gRPC.

- HTTP/2 서버 푸시 지원을 살펴본다.

 

## 10. 클라우드 환경 배포

- 클라우드 사업자 환경에 배포하는 데 필요한 기본 사항을 다룬다.

- AWS, 에저 환경 및 구글 컴퓨트 엔진 등 다양한 환경에 대해 다룬다.

 

## 11. 컨테이너와 마이크로서비스

- 현대의 개발에서 필수적으로 필요한 컨테이너를 활용하면 패키지와 의존성 관리를 편리하게 해준다.

- 해당 챕터에서는 엔진엑스로 컨테이너 이미지를 만들고 컨테이너 환경에서 더 잘 동작하게 해주는 기능와 생성한 이미지를 쿠버네티스와 오픈시프트 환경으로 배포하는 방법에 대해 다룬다.

 

## 14. 디버깅과 트러블슈팅

- 엔진엑스와 오픈트레이싱으로 개별 요청에 식별자를 부여하고 엔드투엔드로 분석하는 방법에 대해 다룬다.

- 접근 및 오류 로그, 전달, 추적데 대해 상세히 설명한다.

 

 

# 정리

- 이 책은 실무와 아주 밀접하게 닿아 있어 잘 활용할 수 있다면 많은 도움이 될 것이다.

- 앞서 말했듯이 조금 더 지식을 쌓고 필요할 때마다 봐야할 책이라고 생각된다.

 

책 리뷰를 하기 앞서, 꼭 인지하고 가야되는 부분이 있다. 이 책은 쿡북(Cookbook)이다. 입문자에게 전혀 도움 되지 않는 책이라고 이야기할 순 없지만, 입문자는 이 책만 여러 번 읽는다고 해서 NGINX와 웹 서버에 대해 이해하고 깨우칠 수 없는 책이다. 쿡북(Cookbook)이기 때문에, 어떤 사례에 맞는 해결책을 찾고자 할 때 참고하는 용도로 사용해야 한다. 우리가 요리를 할 때 레시피를 완전히 따라가거나 참고하는 것처럼 말이다.

 

NGINX에 관련한 기술적인 부분들은 일단 다 포함해둔 것 같다. 이번에 개정판으로 새로 출간된 책인데, 개정판에서 추가된 내용들은, 뮤추얼 TLS를 이용한 NGINX 서비스 메시 구성과 NGINX 인스턴스 매니저 설정과 이를 기반으로 한 모니터링 방법으로, 이 부분에 대한 내용은 각각 11장과 16장에서 다룬다.

 

"한빛미디어 <나는 리뷰> 활동을 위해서 책을 제공받아 작성된 서평입니."

책 구성이 일단 너무 마음에 들었습니다.

문제 - 해결 - 논의 파트로 구성을 하여 정말 어떤 문제상황에서 어떻게 해결하면 좋을지에 대한 핵심을 탁 짚어주는 구성이었습니다.

실무에서 실제로 개선할 수 있겠다는 부분들도 많이 보이고, 몰랐던 설정들과 튜닝방법들을 많이 나와있어서 도움이 많이 되었습니다.

 

다만, 초심자가 읽기에는 내용이 다소 어려울 수 있다고 생각이 들고, 어느정도 개발을 진행해 보셨고,

NGINX에 관심이 있다면 한 번쯤 읽어보면 좋을 것 같습니다.

결제하기
• 문화비 소득공제 가능
• 배송료 : 2,000원배송료란?

배송료 안내

  • 20,000원 이상 구매시 도서 배송 무료
  • 브론즈, 실버, 골드회원이 주문하신 경우 무료배송

무료배송 상품을 포함하여 주문하신 경우에는 구매금액에 관계없이 무료로 배송해 드립니다.

닫기

리뷰쓰기

닫기
* 도서명 :
NGINX 쿡북(2판)
* 제목 :
* 별점평가
* 내용 :

* 리뷰 작성시 유의사항

글이나 이미지/사진 저작권 등 다른 사람의 권리를 침해하거나 명예를 훼손하는 게시물은 이용약관 및 관련법률에 의해 제재를 받을 수 있습니다.

1. 특히 뉴스/언론사 기사를 전문 또는 부분적으로 '허락없이' 갖고 와서는 안됩니다 (출처를 밝히는 경우에도 안됨).
2. 저작권자의 허락을 받지 않은 콘텐츠의 무단 사용은 저작권자의 권리를 침해하는 행위로, 이에 대한 법적 책임을 지게 될 수 있습니다.

오탈자 등록

닫기
* 도서명 :
NGINX 쿡북(2판)
* 구분 :
* 상품 버전
종이책 PDF ePub
* 페이지 :
* 위치정보 :
* 내용 :

도서 인증

닫기
도서명*
NGINX 쿡북(2판)
구입처*
구입일*
부가기호*
부가기호 안내

* 온라인 또는 오프라인 서점에서 구입한 도서를 인증하면 마일리지 500점을 드립니다.

* 도서인증은 일 3권, 월 10권, 년 50권으로 제한되며 절판도서, eBook 등 일부 도서는 인증이 제한됩니다.

* 구입하지 않고, 허위로 도서 인증을 한 것으로 판단되면 웹사이트 이용이 제한될 수 있습니다.

닫기

해당 상품을 장바구니에 담았습니다.이미 장바구니에 추가된 상품입니다.
장바구니로 이동하시겠습니까?

자료실