Top

Nginx HTTP 서버 [HTTP 서버를 사용한 고성능 웹 서비스 구축]

  • 원서명Nginx HTTP Server - Third Edition: Harness the power of Nginx to make the most of your infrastructure and serve pages faster than ever (ISBN 9781785280337)
  • 지은이끌레망 네델꾸(Clément Nedelcu)
  • 옮긴이박성철, 구인본
  • ISBN : 9791161754017
  • 35,000원
  • 2020년 03월 31일 펴냄
  • 페이퍼백 | 400쪽 | 188*235mm
  • 시리즈 : 오픈소스 프로그래밍

책 소개

요약

가장 빠르고 안전한 웹 서버 중 하나로 알려진 엔진엑스는 최근 급격히 보급돼 기존 1위 웹 서버였던 아파치의 자리를 이어 받아 인터넷의 가장 많은 웹 서비스를 지탱하는 웹 서버가 됐다. 특히 클라우드 인프라 환경에서는 더욱 중요한 역할을 담당하고 있다.
엔진엑스로 기본 웹 서비스를 제공하는 법, 각종 모듈 설명과 사용법 같은 기본 내용에서부터 운영 중인 서비스를 아파치에서 엔진엑스로 이전하는 법, PHP와 파이썬과 연동하는 법, 대용량 서비스를 제공하는 법까지 엔진엑스와 관련된 폭 넓은 정보를 제공한다.
처음 시작하는 사람을 위한 지침서로, 평소 옆에 두고 자주 찾아 볼 참조 문서로, 특정 문제가 생겼을 때 빠르게 해법을 찾을 수 있는 책으로 두루 쓰일 수 있을 것이다.

이 책에서 다루는 내용

■ 엔진엑스 구성의 기본 구문, 구조, 의미
■ 엔진엑스의 고급 부하 분산 기능과 혁신적인 최신 IO 메커니즘
■ 모든 내장 모듈 활성화, 구성, 사용법
■ 엔진엑스 재작성(Rewrite) 모듈로 고수준의 재작성 규칙 설정
■ FastCGI와 uwsgi로 PHP, 파이썬 등과 함께 작동하는 엔진엑스 설정
■ 엔진엑스를 기존 HTTP 서버의 앞단에서 동작하도록 구성
■ 구성 파일의 쉬운 조작법과 다양한 상황에 적용하는 방법
■ 일반적인 문제와 이를 피하는 방법

이 책의 대상 독자

초기 설정 단계와 고급 주제를 모두 다루는 이 책은 기존 웹 서버 소프트웨어를 교체하거나, 지금까지 사용하는 애플리케이션에 새 도구를 통합하는 등 인프라스트럭처를 최적화할 방법에 관심 있는 웹 관리자에게 적합하다. 웹 사이트 방문자와 운영체제가 아파치의 한계를 느꼈다면 이 책이 바로 필요한 책이다.

이 책의 구성

1장, ‘엔진엑스 설치’에서는 엔진엑스를 다운로드하고 필요에 맞게 컴파일하는 초기 단계를 알아본다.
2장, ‘기본 엔진엑스 구성’에서는 엔진엑스 구성 구조와 구문의 핵심을 다룬다.
3장, ‘HTTP 구성’에서는 간단한 정적 사이트를 제공할 수 있는 HTTP 서버 구성 요소의 구성을 소개한다.
4장, ‘모듈 구성’에서는 표준 엔진엑스 패키지에서 사용할 수 있는 다양한 모듈을 깊이 다룬다.
5장, ‘엔진엑스와 PHP/파이썬 통합’에서는 엔진엑스로 동적 콘텐츠를 제공하도록 백엔드 프로그램을 설정하는 포괄적인 지침을 다룬다.
6장, ‘아파치와 엔진엑스 연동’에서는 동일 아키텍처에서 기존 웹 사이트와 서비스를 개선하는 데 두 서버 애플리케이션이 어떻게 협업할 수 있는지 설명한다.
7장, ‘아파치에서 엔진엑스로 이전’에서는 서버나 웹 인프라스트럭처를 아파치에서 엔진엑스로 완전히 전환하는 데 필요한 핵심 정보를 알아본다.
8장, ‘부하 분산과 최적화’에서는 부하가 심한 사이트를 관리하는 서버 관리자에게 유용한 단서를 제공한다.
9장, ‘사례 연구’에서는 엔진엑스를 다루는 가장 일반적인 작업을 포함해서 몇 가지 실제 사례의 실무 접근법을 살펴본다.
10장, ‘문제 해결’에서는 엔진엑스를 설정하거나 운영하면서 만나는 가장 흔한 문제를 다룬다.

저자/역자 소개

지은이의 말

웹 서버 시장에서 아파치(Apache)가 오랫동안 확고한 선두를 지키고 있다는 것은 아주 잘 알려진 사실이다. 2015년 10월, 조사에 의하면 월드와이드웹의 35% 정도가 25년 된 이 오픈소스 애플리케이션으로 제공되고 있다. 하지만 같은 보고서에서 최근 몇 년 사이에 엔진엑스(Nginx)라는 새로운 경쟁자가 부상하고 있음이 드러났다. 엔진엑스는 러시아에서 만든 경량 HTTP 서버다. 2009년 이후로 그토록 많은 서버 관리자가 엔진엑스로 교체한 이유는 무엇일까? 이 조그마한 소프트웨어 조각이 대용량 웹사이트를 운영할 만큼 충분히 성숙하긴 했는가?
먼저 엔진엑스는 생각보다 나온 지 얼마 안 되는 기술이 아니다. 2002년에 독립 개발자 이고르 시소에프(Igor Sysoev)가 사용량이 매우 많은 러시아 웹 사이트인 램블러(Rambler)에 쓰려고 처음 시작한 프로젝트다. 램블러는 2008년 9월, 하루에 5억이 넘는 HTTP 요청을 받았다. 엔진엑스는 이제 레딧(Reddit), 위키백과(Wikipedia), 워드프레스(WordPress), 드롭박스(Dropbox) 등 웹에서 가장 인기 있는 일부 웹 사이트를 제공하는 데 사용된다. 엔진엑스는 기능이 많으면서도 매우 효율적이고 가볍다는 것이 입증됐다. 이 책의 각 장을 통해 엔진엑스의 많은 기능을 알게 되고, 왜 많은 관리자가 아파치를 버리면서까지 이 신생 HTTP 서버를 믿기로 했는지 이해하게 될 것이다.
엔진엑스가 다른 경쟁 기술보다 효율적인 몇 가지 측면이 있다. 무엇보다 엔진엑스는 빠르다. 비동기 소켓을 사용하기 때문에 엔진엑스는 받은 요청 수만큼 자식 프로세스를 생성하지 않는다. 코어당 한 프로세스만으로도 수천 개의 연결을 처리하는 데 충분하므로 CPU 부하와 메모리 사용량이 적다. 또한 엔진엑스는 사용하기 매우 용이하다. 아파치 같은 다른 웹 서버보다 구성 파일을 읽고 조작하기 훨씬 쉽다. 두어 줄만으로 가상 호스트 설정을 마칠 수 있다.
마지막으로 서버 관리자는 모듈(module) 구조를 좋아한다. 엔진엑스는 BSD 방식의 라이선스로 출시되는 완전한 오픈소스 프로젝트일 뿐 아니라 모듈이라는 강력한 플러그인 시스템도 따라온다. 기본 배포 파일에 매우 다양한 모듈이 포함돼 있고 다수의 외부 모듈을 온라인으로 다운로드할 수 있다.
전반적으로 엔진엑스는 속도, 효율성, 강력한 기능을 결합해 성공적인 웹 서버의 완벽한 요소를 제공한다. 오늘날 엔진엑스는 최고의 아파치 대안으로 보인다.

지은이 소개

끌레망 네델꾸(Clément Nedelcu)

프랑스에서 태어나 영국, 프랑스, 중국의 대학교에서 공부했다. 여러 동중국의 대학교에서 컴퓨터 과학, 프로그래밍, 시스템 관리를 강의한 후에 프랑스에서 기술 컨설턴트로 일했다. 웹, .NET 소프트웨어 개발은 물론 리눅스 서버 관리 전문가다. 2005년부터 여가를 이용해 여러 웹 사이트의 주 네트워크를 관리했고, 결국 엔진엑스를 쓰게 됐다.

옮긴이의 말

인터넷이 대중화되고 닷컴 붐이 한창이던 1999년에 컴퓨터 세상에 큰 영향을 미친 화두 하나가 던져졌습니다. ‘C10K 문제’라고 부르는 주제입니다.
그전까지 컴퓨터 산업계는 어떻게 일을 빨리 처리하느냐에 주로 초점을 맞추고 있었습니다. 하드웨어는 고성능 연산을 통해 더 큰 일을 더 빨리 처리하도록 발전했고 소프트웨어도 그런 문제를 푸는 데 맞춰 만들어졌습니다. 그런데 인터넷이 보급되면서 큰일을 빨리 처리하기보다는 아주 단순한, 예를 들어 네트워크로 정적 파일을 전송하는 일 같이 큰 연산 성능이 필요 없는 작업을 아주 많은 사람에게 동시에 제공하도록 처리하는 게 중요해졌습니다.
‘C10K 문제’는 이런 관점에서 당시 소프트웨어 기술이 하드웨어 성능을 충분히 활용하고 있지 못하고 있다고 지적함으로써 해법을 탐구하고 제시하는 것이 목적이었습니다. ‘C10K 문제’는 많은 기술자에게 영감을 줬고 이에 반응해 여러 시도가 있었습니다. lighttpd 같이 즉각적으로 만들어진 기술도 있었고 토네이도(Tornado)처럼 10여 년이 지난 후에 만들어진 기술도 있습니다. 이제는 주류 플랫폼이 된 노드.js(Node.js)도 ‘C10K 문제’의 산물이라고 볼 수 있습니다. 21세기에 만들어진 대부분의 인터넷 관련 기술에 ‘C10K 문제’가 직간접적인 영향을 줬고 방향성을 제시해 비동기, 이벤트 구동, 반응형 같은 개념이 적극적으로 보급되고 적용됐습니다.
이 책에서 다루는 엔진엑스도 ‘C10K 문제’에서 영감을 받은 프로젝트 중 하나입니다. 엔진엑스가 대중에게 알려진 것은 최근이지만 프로젝트의 시작은 2004년, ‘C10K 문제’가 업계에 던져지고 얼마 되지 않아서입니다. lighttpd처럼 비동기 처리로 최대한 많은 일(파일을 고객에게 전송하는 일)을 효율적으로 처리하고자 시작된 프로젝트였던 것입니다.
그렇게 시작된 엔진엑스 프로젝트가 점차 인정받아 인터넷 세상의 주류로 편입되고 이제는 아파치와 대등한 위치에서 경쟁하게 됐습니다. 어떤 통계에서는 이미 시장 점유율에서 아파치를 앞서기도 했으며 성장세는 더욱 빨라지고 있습니다. 비교적 인지도가 높고 오래 운영되고 있는 웹 서버들은 아직 아파치를 많이 사용하지만 엔진엑스로 교체하는 빈도가 높아지고 있으며 마이크로서비스 붐을 타고 엔진엑스는 더 적극적으로 활용되고 있습니다.
이 책은 엔진엑스의 폭넓은 지식을 다양한 관점에서 제공합니다. 컴파일해서 기본적인 웹 서버를 설정하는 안내, 각종 모듈의 설정법, PHP와 파이썬과 연동하는 방법, 아파치처럼 구성하거나 아파치를 대체하는 방법, 본격적인 서비스를 제공하는 데 필요한 고급 주제, 사례집 등 한 권의 책으로 최대한 여러 사람의 필요를 충족시키고자 한 노력이 엿보입니다.
책을 번역하는 동안 이 책에서 다룬 기술들이 대부분 버전업 됐고 SPDY 같은 기술은 HTTP/2로 대체됐습니다. 책 출판 시점에 맞게 각종 기술의 버전과 내용을 가급적 최신 내용으로 손보고 실행되는지 확인했으니 읽고 활용하는 데 문제가 없을 것입니다.
아무쪼록 이 책이 많은 분에게 큰 도움이 됐으면 합니다.

옮긴이 소개

박성철

8비트 애플II 호환기로 시작해 지금까지 30년 넘게 SW 개발 주변을 겉도는 경도 은둔형 외톨이다. 평생 혼자 살 운명이었으나 천사를 만나 가장 역할을 부여받고 용인 한적한 산기슭에서 아들 하나와 함께 행복한 가정을 꾸리고 있다. 지금은 우아한형제들에서 멋진 개발자들과 세상을 더 낫게 만드는 즐거운 퀘스트를 수행 중이다. 소프트웨어 개발에 대한 인식을 바꾸고 개발 현장을 개선하는 데 관심이 많다.

구인본

어릴 적 동네 오락실 게임을 보며 게임을 하기보단 게임의 내부 로직을 상상하곤 했다. 대학에서 애플리케이션을 동적 분석해 버그를 탐지하는 연구를 했다. 이후 에듀테크 스타트업에서 온라인 학습시스템을 개발하기도 했다. 지금은 우아한형제들에서 라이더와 고객을 연결하는 플랫폼 팀에서 일하고 있다. 함께 일하는 동료들에게 좋은 영향을 주는 사람이 되길 원한다.

목차

목차
  • 1장. 엔진엑스 설치
    • 사전 구성 요소 설정
      • GCC(그누 컴파일러 모음)
      • PCRE 라이브러리
      • zlib 라이브러리
      • OpenSSL
    • 엔진엑스 다운로드
      • 웹 사이트와 자료
      • 버전 분기
      • 특징
      • 다운로드와 압축 해제
    • 구성 옵션
      • 간단한 방법
      • 경로 지정
      • 사전 구성 요소 옵션
      • 모듈 옵션
      • 여러 가지 다양한 옵션
      • 구성 예
    • 빌드 구성 문제
      • 사전 구성 요소 설치 문제
      • 디렉터리 존재와 쓰기 가능 여부 문제
    • 프로그램 컴파일과 설치
    • 엔진엑스 서비스 제어
      • 데몬과 서비스
      • 사용자와 그룹
      • 엔진엑스 커맨드라인 스위치
      • 데몬 시작과 종료
      • 구성 테스트
      • 기타 스위치
    • 시스템 서비스 추가
      • 시스템 V 스크립트
      • init 스크립트
      • 데비안 기반 배포본용 init 스크립트
      • 레드햇 기반 배포본용 init 스크립트
      • 스크립트 설치
    • 엔진엑스 플러스
    • 요약

  • 2장. 기본 엔진엑스 구성
    • 구성 파일 구문
      • 구성 지시어
      • 구조와 포함
      • 지시어 블록
      • 고급 언어 규칙
    • 기반 모듈의 지시어
      • 기반 모듈 소개
      • 엔진엑스 프로세스 아키텍처
      • 핵심 모듈 지시어
      • 이벤트 모듈
      • 구성 모듈
      • 필수 조정
    • 서버 테스트
      • 테스트 서버 만들기
      • 성능 테스트
      • 중단 없이 엔진엑스 업그레이드
    • 요약

  • 3장. HTTP 구성
    • HTTP 핵심 모듈
      • 구조 블록
    • 모듈 지시어
      • 소켓과 호스트 구성
      • 경로와 문서
      • 클라이언트 요청
      • MIME 타입
      • 제한과 제약
      • 파일 처리와 캐시
      • 기타 지시어
    • 모듈 변수
      • 요청 헤더
      • 응답 헤더
      • 엔진엑스 생성
    • location 블록
      • 위치 수정자
      • 탐색 순서와 우선순위
    • 요약

  • 4장. 모듈 구성
    • 재작성 모듈
      • 정규 표현식 복습
      • 내부 요청
      • 조건부 구조
      • 지시어
      • 일반 재작성 규칙
    • SSI 모듈
      • 모듈 지시어와 변수
      • SSI 명령
    • 부가 모듈
      • 웹 사이트 접근 제어와 로그
      • 제한과 제약
      • 콘텐트와 인코딩
      • 방문자 정보
      • 클라이언트 분리 모듈
      • SSL과 보안
      • 기타 잡다한 모듈
      • 서드파티 모듈
    • 요약

  • 5장. 엔진엑스와 PHP/파이썬 통합
    • FastCGI 소개
      • CGI 구조 이해
      • 공통 게이트웨이 인터페이스(CGI)
      • 고속 공통 게이트웨이 인터페이스
      • uWSGI와 SCGI
      • 주요 지시어
      • FastCGI 캐싱과 버퍼링
    • 엔진엑스와 PHP
      • 아키텍처
      • PHP-FPM
      • PHP와 PHP-FPM 설정
      • 엔진엑스 구성
    • 파이썬과 엔진엑스
      • 장고
      • 파이썬과 장고 설정
      • 엔진엑스 구성
    • 요약

  • 6장. 아파치와 엔진엑스 연동
    • 리버스 프록시로 엔진엑스 활용
      • 문제 이해
      • 리버스 프록시 메커니즘
      • 리버스 프록시의 장점과 단점
    • 엔진엑스 프록시 모듈
      • 주요 지시어
      • 캐시, 버퍼링, 임시 파일
      • 한계치, 시간 제약, 오류
      • SSL 관련 지시어
      • 기타 지시어
      • 변수
    • 아파치와 엔진엑스 구성
      • 아파치 재구성
      • 엔진엑스 구성
      • 고급 구성
    • 리버스 프록시 아키텍처 개선
      • 올바른 IP 주소 전달
    • 요약

  • 7장. 아파치에서 엔진엑스로 이전
    • 엔진엑스와 아파치 비교
      • 특징
      • 유연성과 커뮤니티
      • 성능
      • 사용처
      • 결론
    • 아파치 구성 이전
      • 지시어
      • 모듈
      • 가상 호스트와 구성 섹션
      • .htaccess files
    • 재작성 규칙
      • 총론
      • 워드프레스
      • 미디어위키
      • vBulletin
    • 요약

  • 8장. 부하 분산과 최적화
    • 부하 분산 개론
      • 부하 분산의 개념 이해
      • 세션 친화성
      • 업스트림 모듈
      • 요청 분산 메커니즘
    • 엔진엑스를 사용한 TCP 부하 분산
      • 스트림 모듈
      • MySQL 부하 분산 예
    • 스레드 풀과 I/O 메커니즘
      • 작업 프로세스 경감
      • AIO, Sendfile, DirectIO
    • 요약

  • 9장. 사례 연구
    • 워드프레스 사이트 배치
      • 서버 준비와 워드프레스 얻기
      • 엔진엑스 구성
      • 워드프레스 구성
    • HTTPS를 통한 안전한 통신
      • 자가 서명 인증서와 인증기관
      • SSL 인증서 취득
      • 엔진엑스 구성에서 HTTPS 활성화
      • HTTP/2 설정과 테스트
    • ownCloud 드라이브 생성
      • ownCloud 설치
      • 엔진엑스 구성
      • 자가 서명 인증서 설정
    • 요약

  • 10장. 문제 해결
    • 문제 해결의 일반적인 조언
      • 접근 권한 확인
      • 구성 파일 테스트
      • 구성 파일을 다시 읽었는가?
      • 로그 확인
      • 설치 문제
      • 403 접근 금지 오류 페이지
      • 400 잘못된 요청
      • 잘리거나 잘못된 FastCGI 응답
      • location 블록 우선순위
      • if 블록 문제
      • 비효율적인 구문
      • 예상치 못한 동작
    • 요약

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안