nginx 모듈 개발 입문 (2) - 1 개요

3603 단어 nginx
1.High-Level Overview of Nginx's Module Delegation
1. Nginx 모듈 개요
    Nginx 의 모듈 은 세 가지 역할 이 있 습 니 다.
    * handlers 처리 http 요청 및 구조 출력
    * filers 처리 handler 에서 발생 하 는 출력
    * load - balancers 하나 이상 의 백 엔 드 서버 가 있 을 때 http 요청 을 보 내 는 것 을 선택 하 십시오.
    웹 서버 의 작업 이 라 고 생각 할 수 있 습 니 다. 실제로 모듈 에서 이 루어 집 니 다. 언제든지 Nginx 가 파일 을 제공 하거나 다른 server 에 전송 요청 을 하 는 것 은 handler 를 통 해 이 루어 집 니 다.Nginx 가 gzip 로 압축 출력 하거나 서버 에 동쪽 을 추가 해 야 한다 면 filter 가 도움 이 됩 니 다.Nginx 의 core 모듈 은 주로 네트워크 계층 과 응용 계층 프로 토 콜 을 관리 하고 특정한 요청 에 대한 일련의 후속 모듈 을 시작 합 니 다.이런 분산 식 의 체계 구 조 는 너 자신 이 강력 한 내부 단원 을 실현 하 는 것 을 가능 하 게 한다.
    메모: Apache 모듈 처럼 Nginx 모듈 은 동적 링크 가 아 닙 니 다.(다시 말 하면 Nginx 의 모듈 은 모두 정적 으로 컴 파일 된 것 이다)
    모듈 은 어떻게 호출 됩 니까?구체 적 으로 말 하면 server 가 시 작 될 때 모든 handler 는 설정 파일 의 location 정 의 를 처리 할 기회 가 있 습 니 다. 만약 에 여러 개의 handler 가 특정한 location 을 처리 해 야 할 때 그 중의 한 handler 만 이 '이 길 수 있 습 니 다' (정확 한 설정 규칙 을 파악 한 당신 은 물론 이러한 충돌 이 발생 하 는 것 을 원 하지 않 습 니 다).
    하나의 handler 는 세 가지 반환 방식 이 있 습 니 다. 정상 입 니 다.잘못처 리 를 포기 하고 기본 handler 로 처리 합 니 다.
    handler 의 역할 이 백 엔 드 서버 에 요청 을 역방향 으로 대리 하 는 것 이 라면 방금 말 한 모듈 의 세 번 째 역할 load - balancer 입 니 다.load - balancer 는 주로 요청 을 어느 백 엔 드 서버 에 보 낼 지 결정 합 니 다.Nginx 는 현재 두 가지 load - balancer 모듈 을 지원 합 니 다. round - robin (폴 링, 처리 요청 은 포커 를 칠 때 카드 를 보 내 는 것 과 같 습 니 다) 과 IP hash (여러 요청 이 있 을 때 같은 ip 에서 요청 한 같은 백 엔 드 서버 를 보장 합 니 다).
    handler 가 되 돌아 오 면 fileter 가 호출 됩 니 다.모든 location 설정 에 여러 개의 filter 를 추가 할 수 있 기 때문에 (예 를 들 어) 응답 은 압축 되 고 블록 을 나 눌 수 있 습 니 다.여러 필터 의 실행 순 서 는 컴 파일 할 때 확 정 됩 니 다.filter 는 전형 적 인 '릴레이 링크 (CHAIN OF RESPONSIBILITY)' 모드 를 사용 합 니 다. 하나의 filter 가 호출 되 고 처 리 됩 니 다. 다음 filter 를 호출 합 니 다. 마지막 filter 가 호출 될 때 까지 Nginx 는 응답 절 차 를 진정 으로 완성 합 니 다.
    가장 멋 진 부분 은 filter 체인 에서 모든 filter 는 이전의 filter 가 완전히 완 공 될 때 까지 기다 리 지 않 습 니 다. 이전 filter 가 출력 하고 있 는 내용 을 처리 할 수 있 습 니 다. 이것 은 유 닉 스 의 파이프 와 같 습 니 다.Filter 의 동작 은 모두 buffers 를 기반 으로 합 니 다. buffer 는 보통 한 페이지 의 크기 (4k) 와 같 습 니 다. ngix. conf 에서 크기 를 바 꿀 수 있 습 니 다. 이 는 모듈 이 백 엔 드 서버 에서 모든 응답 을 받 기 전에 이 소 리 를 압축 하고 흐 르 기 시작 한 다 는 뜻 입 니 다. 대단 합 니 다 ~
위의 내용 을 정리 하면 전형 적 인 주 기 는 이렇게 해 야 한다.
     HTTP request → Nginx  location          handler → (   ) load-balancer          → Handler             buffer      filter →    filter        filter →         →         →      →            

제 가 '전형 적 으로' 라 고 말 하 는 이 유 는 Ngingx 의 모듈 이 매우 강 한 맞 춤 형 기능 을 가지 고 있 기 때 문 입 니 다. 모듈 개발 자 는 모듈 이 언제 어떻게 작용 하 는 지 정확하게 정의 하 는 데 많은 노력 을 기울 여야 합 니 다. 모듈 호출 은 실제 일련의 리 셋 함 수 를 통 해 이 루어 집 니 다. 명목 상 으로 는 함수 가 다음 과 같 을 때 실 행 될 수 있 습 니 다.
    * 서버 에서 프로필 을 읽 기 전에
    * location 와 server 의 모든 설정 명령 을 읽 습 니 다.
    * Nginx 가 main 설정 을 초기 화 할 때
    * Nginx 가 server 설정 을 초기 화 할 때 (예: host / port)
    * Nginx 가 server 설정 과 main 설정 을 합 쳤 을 때
    * Nginx 가 location 설정 을 초기 화 할 때
    * Nginx 가 location 설정 과 부모 server 설정 을 합 쳤 을 때
    * Nginx 의 주 프로 세 스 가 시 작 될 때
    * 새 워 커 프로 세 스 가 시 작 될 때
    * 워 커 프로 세 스 가 종료 되 었 을 때
    * 주 프로 세 스 가 종료 되 었 을 때
    * handle 요청
    * 필터 응답 헤드
    * 필터 응답 체
    * 백 엔 드 서버 선택
    * 백 엔 드 서버 로 보 낼 요청 초기 화
    * 다시 - 백 엔 드 서버 로 보 낼 요청 초기 화
    * 백 엔 드 서버 에서 온 응답 처리
    * 백 엔 드 서버 와 의 대화 완료
    믿 기지 않 습 니 다. 이렇게 많은 기능 을 당신 이 처리 할 수 있 습 니 다. 당신 은 여러 개의 유용 한 갈고리 (함수 포인터 로 구 성 된 구조 체) 와 해당 하 는 실현 함수 만 통과 하면 됩 니 다. 우 리 는 모듈 을 접촉 합 시다.
원문:
http://www.evanmiller.org/nginx-modules-guide.html

좋은 웹페이지 즐겨찾기