[Nginx 그까짓 일] 의 ① [Nginx 입문]

6907 단어
1. Nginx 는 왜 인기 가 많 습 니까?
Nginx 의 구체 적 인 설치, 배치 와 원 리 를 소개 하기 전에 개념 상식 문 제 를 먼저 이야기 합 니 다.바로 현재 왜 Nginx 가 인기 가 많 습 니까?그럼 일단 Nginx 가 뭔 지 부터 얘 기 하 자.
1. Nginx 는 무엇 입 니까
  • Nginx 는 러시아 출신 으로 RamblerMedia 에서 일 하 는 Igor Sysoev 가 C 언어 로 작 성 된 크로스 플랫폼 경량급 고성능 웹 서버 입 니 다.Nginx 는 Linux, FreeBSD, Solaris (Sun 회사 의 클래스 유 닉 스 OS), MacOS, Windows 등 운영 체제 에서 실행 할 수 있다.운영 체제 의 차이 도 Nginx 에 좋 은 점 을 가 져 왔 다. Nginx 는 현재 운영 체제 에서 특유 한 효율 적 인 API 를 사용 하여 자신의 성능 을 향상 시 킬 것 이다.
  • Nginx 와 그의 라이 벌 Nginx 의 라이 벌 들 은 Apache, Lighttpd, Tomcat, Jetty, IIS 가 있 는데 모두 웹 서버 입 니 다. 웹 서버 의 기본 기능 을 갖 추고 있 습 니 다.Rest 구조 스타일 을 기반 으로 통 일 된 자원 설명자 (URI) 나 통 일 된 자원 포 지 셔 닝 문자 (URL) 를 의사 소통 근거 로 HTTP 를 통 해 브 라 우 저 등 Client 프로그램 에 다양한 네트워크 서 비 스 를 제공 합 니 다.그러나 이런 웹 서버 는 많 고 적 습 니 다. 각자 의 포 지 셔 닝 과 발전 방향 이 다 르 기 때문에 모든 웹 서버 가 각각 특색 이 있 습 니 다. 1. Tomcat, Jetty: 모두 자바 언어 를 대상 으로 디자인 되 었 습 니 다.하지만 이들 은 성능 면 에서 Nginx 와 비교 할 만 한 것 이 없다. 두 서버 모두 헤비급 선수 이기 때문이다.동료 들 이 궁금 해 할 수도 있 습 니 다. 저 는 Tomcat 으로 서 비 스 를 시 작 했 습 니 다. 똑 같이 설정 한 후에 직접 방문 할 수 있 습 니 다. 왜 코트 Nginx 를 덧 입 어야 하 는 지 이 문제 에 대해 뒤에서 이 점 을 상세 하 게 분석 할 수 있 습 니 다.[] 2. IIS: 이 선 수 는 마이크로소프트 가문 에서 왔 습 니 다.그리고 특징 을 잘 알 수 있 습 니 다. 윈도 OS 에서 만 실행 할 수 있 습 니 다. (하지만 인터넷 에 도 리 눅 스 OS 에서 실행 할 수 있 는 도구 가 있 지만 완벽 하 지 는 않 습 니 다.)비 주 얼 을 낮 추 는 것 이 안정성 과 성능 일 수 있 습 니 다. 윈도 우즈 OS 는 서버 로 서 안정성 과 일부 성능 이 유 닉 스 OS 와 견 줄 수 없 기 때문에 고성능 웹 서버 의 경우 IIS 가 '도태' 될 수 있 습 니 다.3. Apache: 이것 은 압권 급 선수 로 발전 주기 가 가장 길 고 세계 1 위의 웹 서버 임 에 틀림없다. 2012 년 에 다른 선 수 를 멀리 앞 섰 다.안정, 개원, 크로스 플랫폼 등 우수한 점 이 많 기 때문이다.그러나 옥 에 티 는 헤비급, 높 은 병발 을 지원 하지 않 는 웹 서버 로 설계 됐다 는 점 이다.만약 에 수만 개의 HTTP 요청 이 동시에 접근 하면 서버 는 대량의 메모리 소모 문제 에 직면 하 게 되 고 운영 체제 도 이에 연루 될 것 이다. 왜냐하면 아파 치 의 프로 세 스 가 프로 세 스 간 전환 을 할 때 서버 의 CPU 에 중대 한 부담 을 줄 뿐만 아니 라 응답 효율 이 떨 어 지기 때문이다. 이 치 명 적 인 일 격 은 '귀족 세가' 에서 온 것 이다.라 는 선수 가 고성능 웹 서버 무대 에서 자 리 를 잃 었 다.4. Lighttpd: Nginx 와 마찬가지 로 경량급, 고성능 웹 서버 입 니 다.그러나 국내 개발 자 들 의 사랑 을 받 지 못 하고 유럽 과 미국의 개발 자 들 에 게 인기 가 많다.
  • 은총 인 Nginx Nginx 의 코드 도 오픈 소스 이 며 가장 자유로운 2 - clause BSD - like license 허가증 입 니 다.Nginx 가 사용 하 는 구 조 는 이벤트 구동 을 바탕 으로 백만 단계 의 TCP 연결 을 동시에 처리 할 수 있 습 니 다.Nginx 의 고도 모듈 화 와 가장 자유로운 허가증 을 가지 기 때문에 Nginx 의 제3자 모듈 확장 기능 을 더욱 충실하게 합 니 다.우수한 디자인 은 또한 매우 좋 은 안정성 체험 을 가 져 왔 다.그래서 Nginx 는 대량의 트 래 픽 사이트 에 응용 하여 대규모 고 병행 연결 을 효율적으로 처리한다.Nginx 는 성능 면 에서 뛰어나다 는 여러 가지 징후 가 있다.

  • 2. Nginx 의 특징
  • 더욱 빠 른 것 은 주로 두 가지 측면 에 나타난다. ① 정상 적 인 상황 에서 한 번 의 요청 이 더욱 빠 른 응답 을 얻 을 수 있다.② 수만 개의 동시 다발 요청 에서 Nginx 는 다른 웹 서버 보다 빠 른 응답 요청 을 할 수 있 습 니 다.
  • 고 확장 성 Nginx 의 고도 모듈 화 는 높 은 확장 성 을 결정 한다.그것 은 완전히 여러 개의 서로 다른 기능, 서로 다른 차원, 서로 다른 유형 과 결합 도가 매우 낮은 모듈 로 조합 되 어 이 루어 진 것 이다.이 모듈 은 모두 바 이 너 리 파일 에 삽입 되 어 실행 되 며 제3자 가 개발 한 모듈 도 마찬가지 로 성능 을 완벽 하 게 지원 합 니 다.그래서 높 은 동시 다발 사 이 트 는 자신의 프로젝트 업무 특성 에 따라 자신 만 의 모듈 을 맞 출 수 있다.
  • 높 은 신뢰성 이라는 특징 은 웹 서버 를 선택 하 는 가장 기본 적 인 조건 이 어야 한다.Nginx 의 안정성 은 누구나 다 알 고 있다.국내 여러 고 유량 동시 다발 웹 사 이 트 는 핵심 서버 에서 Nginx 를 대규모로 사용한다.공식 적 으로 제공 하 는 상용 모듈 은 매우 안정 적 이 고 모든 Worker 프로 세 스 가 상대 적 으로 독립 되 어 결합 성 을 최소 화 합 니 다.master 프로 세 스 는 Worker 프로 세 스 가 잘못 되 었 을 때 새로운 Worker 하위 프로 세 스 를 빠르게 끌 어 올 려 서 해당 하 는 서 비 스 를 제공 할 수 있 습 니 다.
  • 저 메모리 소 모 는 데이터 테스트 에 따 르 면 일반적으로 1W 개의 비활성 HTTP Keep - Alive 연결 이 Nginx 에 2.5MB 의 메모리 만 소모 된다.(이것 도 Nginx 가 높 은 병렬 연결 을 지원 할 수 있 는 기초)
  • 단기 지원 10W + 의 병발 연결 은 현재 대량의 데이터 시대 이기 때문에 높 은 병발 은 모두 가 선 호 하 는 대상 이 될 것 이다.이론 적 으로 Nginx 가 지원 하 는 병렬 연결 수량 은 메모리 에 달 려 있 고 10W + 의 병렬 연결 은 한계 에 이 르 지 않 았 다.그러나 더 많은 병행 연결 을 제때에 처리 할 수 있 는 지 는 프로젝트 업무 의 수요 에 달 려 있다.
  • 열 배치 master 관리 프로 세 스 와 Worker 프로 세 스 는 서로 격 리 되 어 있 기 때문에 Nginx 는 열 배치 능력 을 나 타 낼 수 있 습 니 다.쉽게 말 하면 724 h 가 서비스 가 정상적으로 작 동 하지 않 는 상황 에서 Nginx * 의 실행 가능 한 파일, 설정 업데이트 옵션, 로그 파일 업데이트 등 기능 을 업그레이드 할 수 있다 는 것 이다.
  • 가장 자유로운 BSD 인 허가 협정 은 '뭇사람 이 땔나무 를 주 우 면 불길 이 높아진다' 는 속담 이 있다.바로 BSD 인 허가 협의 가 가 져 온 큰 장점 으로 Nginx 에 더욱 강력 한 발전 동력 을 제공 합 니 다.

  • 다시 말하자면 Nginx 를 선택 한 핵심 이 유 는 높 은 병행 요 구 를 지원 하 는 동시에 효율 적 인 서 비 스 를 유지 할 수 있 기 때문이다.
    2. Nginx 의 설치
    1. 소스 코드 설치
    Nginx 를 정식으로 설치 하기 전에 서버 호스트 에 컴 파일 환경 GCC 개발 라 이브 러 리 와 같은 환경 이 설치 되 어 있 음 을 보증 해 야 합 니 다.
  • GCC 컴 파일 환경 도구 설치
  • ① Ubuntu OS 컴 파일 환경 은 다음 명령 을 사용 합 니 다.
    apt-get install build-essential
    apt-get install libtool
    

    ② CentOS 컴 파일 환경 은 다음 명령 을 사용 합 니 다.
    yum install -y gcc automake autoconf libtool make
    yum install -y gcc-c++
    

    컴 파일 환경 을 설치 하면 Nginx 에 필요 한 라 이브 러 리 PCRE 라 이브 러 리, zlib 라 이브 러 리, OpenSSL 개발 라 이브 러 리 를 준비 할 수 있 습 니 다.
  • PCRE 라 이브 러 리 설치
  • 먼저 PCRE 라 이브 러 리 의 역할 을 소개 하고 Nginx 의 HTTP 모듈 에 정규 표현 식 을 해석 하 는 기 초 를 제공 합 니 다.이곳 은 직접 원본 코드 를 다운로드 하 는 방식 으로 컴 파일 하여 설치 합 니 다.필요 한 버 전에 따라 PCRE 소스 에서 URL 을 선택 하고 아래 명령 으로 다운로드 합 니 다.
    wget https://ftp.pcre.org/pub/pcre/pcre-8.42.tar.gz
    ##      ,        
    tar -xzvf pcre-8.42.tar.gz
    ##       pcre-8.42  
    cd pcre-8.42
    ##     
    ./configure
    ##        
    make 
    make install
    
  • Zlib 라 이브 러 리 설치
  • Zlib 라 이브 러 리 는 주로 HTTP 패키지 의 내용 을 gzip 형식 으로 압축 합 니 다.예 를 들 어 Nginx 설정 nginx. conf 파일 에 gzip on 을 설정 합 니 다.Zlib - 1.2.11 다운로드
    ##   Wget      
    wget http://zlib.net/zlib-1.2.11.tar.gz
    ##     
    tar -xzvf zlib-1.2.11.tar.gz
    ##   zlib            
    cd zlib-1.2.11
    ./configure
    make 
    make install
    
  • OpenSsl 설치
  • 버 전에 대한 특별한 요구 가 없 으 면 OpenSSL 은 명령 으로 설치 합 니 다.
    ## CentOS     
    yum install openssl openssl-devel
    ​
    ## Ubuntu/Debian     
    sudo apt-get install openssl        
    sudo apt-get install libssl-devel  
    
  • Nginx 설치
  • 우선 Nginx 홈 페이지 에 가서 적당 한 버 전의 원본 코드 를 다운로드 하 세 요.동시에 우 리 는 서버 에서 wget 명령 을 사용 하여 직접 다운로드 할 수 있다.
    wget http://nginx.org/download/nginx-1.14.0.tar.gz
    ##   Nginx  
    tar -xzvf nginx-1.14.0.tar.gz
    cd nginx-1.14.0
    ​
    ##         :(         Nginx          )
     # --sbin-path:              ,     /sbin/nginx
     # --conf-path:               ,     /conf/nginx.conf
     # --pid-path:    pid       ,     /logs>nginx.pid
     # --with-http_ssl_module:  http_ssl_module,  Nginx  SSL  ,  HTTPS  。
     # --with-pcre:   PCRE      ,  Nginx              。
     # --with-zlib:   Zlib      ,  Nginx              。
    ./configure  \
    --sbin-path=/usr/local/nginx/nginx \ 
    --conf-path=/usr/local/nginx/nginx.conf \
    --pid-path=/usr/local/nginx/nginx.pid \
    --with-http_ssl_module \
    --with-pcre=/opt/app/openet/oetal1/cheney/pcre-8.42 \
    --with-zlib=/opt/app/openet/oetal1/cheney/zlib-1.2.11 
    ​
    ##            
    make 
    make install
    

    설치 가 완료 되면 간단 한 테스트 를 할 수 있 습 니 다. 설정 한 ${-- sbin - path} 경로 에서 Nginx 를 시작 합 니 다.
    ##           nginx         
    /usr/local/nginx/sbin/nginx
    

    서버 호스트 포트 에 접근 할 수 있 도록 브 라 우 저 를 사용 하여 호스트 IP 주 소 를 방문 합 니 다. 예 를 들 어http://127.0.0.1Nginx 서비스의 기본 홈 페이지 를 볼 수 있 습 니 다.이것 은 Nginx 서비스 가 정상적으로 시작 되 었 다 는 것 을 설명 한다.그 다음 에 프로젝트 의 구체 적 인 업무 수요 에 따라 Nginx 를 특수 설정 하여 상세 하 게 맞 출 수 있다.
    Nginx 의 구체 적 인 설정 문 제 는 다음 글 에서 자세히 소개 합 니 다.

    좋은 웹페이지 즐겨찾기