Nginx · 자동 스 크 립 트 편 해부 (3) 소스 코드 관련 변수 스 크 립 트 auto / sources

13962 단어
Nginx · 자동 스 크 립 트 편 해부 (3) 소스 코드 관련 변수 스 크 립 트 auto / sources
  • Author: Poechant
  • Blog: blog.CSDN.net/Poechant
  • Email: zhongchao.ustc#gmail.com (#->@)
  • Date: March 6th, 2012
  • Copyright © 유 대 · Poechant
  • configure 스 크 립 트 에서 auto/options 스 크 립 트 와 auto/init 스 크 립 트 를 실행 한 후 auto/soures 스 크 립 트 를 실행 합 니 다.이 스 크 립 트 는 컴 파일 을 위해 준비 한 것 이다.
    목차
  • 핵심 모듈
  • 이벤트 모듈
  • OpenSSL 모듈 관련 변수
  • 이벤트 구동 모듈
  • 운영 체제 관련 항목
  • HTTP 모듈
  • 메 일 모듈
  • Google PerfTools 모듈
  • C + + 테스트 모듈
  • 1 핵심 모듈
    1.1 핵심 모듈 명 COREMODULES CORE_MODULES 변 수 는 Nginx 의 핵심 모듈 을 기록 합 니 다. 기본 값 은 ngx_core_module, ngx_errlog_modulengx_conf_module 를 포함 하고 해당 초기 화 코드 는 다음 과 같 습 니 다.
    CORE_MODULES="ngx_core_module ngx_errlog_module ngx_conf_module"
    

    1.2 핵심 모듈 헤더 파일 이 있 는 디 렉 터 리 COREINCS
    INCS 의 의 미 는 includes 입 니 다.
    CORE_INCS="src/core"
    

    1.3 핵심 모듈 헤더 파일 COREDEPS
    DEPS 의 의 미 는 depandencies 로 src/core 디 렉 터 리 에 있 는 30 개의 원본 파일 을 포함 하 는데 유독 src/core/regex.h 파일 이 없다 는 것 이다.
    CORE_DEPS="src/core/nginx.h \
               src/core/ngx_config.h \
               ...
               src/core/ngx_open_file_cache.h \
               src/core/ngx_crypt.h"
    

    1.4 핵심 모듈 원본 파일 CORESRCS
    SRCS 의 의 미 는 sources 입 니 다. src/core 디 렉 터 리 에 있 는 29 개의 원본 파일 을 포함 하고 src/core/regex.c 파일 만 없습니다.
    CORE_SRCS="src/core/nginx.c \
               src/core/ngx_log.c \
               ...
               src/core/ngx_open_file_cache.c \
               src/core/ngx_crypt.c"
    

    정규 표현 식 의 내용 도 핵심 모듈 의 일부분 으로 각각 src/core/regex.hsrc/core/regex.c 이다.
    REGEX_DEPS=src/core/ngx_regex.h
    REGEX_SRCS=src/core/ngx_regex.c
    

    2 이벤트 모듈
    2.1 이벤트 모듈 이름 EVENTMODULES
    이 모듈 은 ngx_events_modulengx_event_core_module 를 포함한다.
    EVENT_MODULES="ngx_events_module ngx_event_core_module"
    

    2.2 이벤트 모듈 헤더 파일 이 있 는 디 렉 터 리 EVENTINCS
    해당 헤더 파일 이 있 는 디 렉 터 리 에 도 두 부분 이 포함 되 어 있 습 니 다.
    EVENT_INCS="src/event src/event/modules"
    

    2.3 이벤트 모듈 헤더 파일 EVENTDEPS
    여섯 개의 헤더 파일 을 포함 하여 모두 src/event 디 렉 터 리 에 있 으 며, 이 디 렉 터 리 에 있 는 src/event/ngx_event_openssl.h 파일 만 포함 되 지 않 습 니 다. 이 파일 은 OpenSSL 모듈 의 헤더 파일 에 속 합 니 다.
    EVENT_DEPS="src/event/ngx_event.h \
                src/event/ngx_event_timer.h \
                src/event/ngx_event_posted.h \
                src/event/ngx_event_busy_lock.h \
                src/event/ngx_event_connect.h \
                src/event/ngx_event_pipe.h"
    

    2.4 이벤트 모듈 원본 파일 EVENTSRCS
    일곱 개의 헤더 파일 을 포함 하 는데 모두 src/event 디 렉 터 리 에 있 고 이 디 렉 터 리 에 있 는 다른 두 개의 파일 ngx_event_opensslngx_event_mutex 입 니 다.
    EVENT_SRCS="src/event/ngx_event.c \
                src/event/ngx_event_timer.c \
                src/event/ngx_event_posted.c \
                src/event/ngx_event_busy_lock.c \
                src/event/ngx_event_accept.c \
                src/event/ngx_event_connect.c \
                src/event/ngx_event_pipe.c"
    

    3 OpenSSL 모듈 관련 변수
    3.1 OpenSSL 모듈 이름 OPENSLMODULE OPENSSL_MODULE: OpenSSL 변수의 이름 입 니 다. ngx_openssl_module 입 니 다.
    3.2 OpenSSL 모듈 원본 파일 과 헤더 파일 OPENSLDEPS 와 OPENSLSRCS OPENSSL_DEPSOPENSSL_SRCS: OpenSSL 의 원본 파일 과 헤더 파일 입 니 다.
    OPENSSL_MODULE=ngx_openssl_module
    OPENSSL_DEPS=src/event/ngx_event_openssl.h
    OPENSSL_SRCS=src/event/ngx_event_openssl.c
    

    4 이벤트 구동 모델
    모델 은 select, poll, kqueue, devpoll, eventport, epoll, rtsig, iocp, ao 를 포함한다.그 다음 에 저 는 사건 구동 에 관 한 박문 을 써 서 이런 사건 구동 모델 의 원리 와 공통점 과 차이 점 을 상세 하 게 소개 하 겠 습 니 다.여 기 는 우선 군말 하지 않 겠 다.
    4.1 select 모델
    SELECT_MODULE=ngx_select_module
    SELECT_SRCS=src/event/modules/ngx_select_module.c
    WIN32_SELECT_SRCS=src/event/modules/ngx_win32_select_module.c
    

    4.2 poll 모델
    POLL_MODULE=ngx_poll_module
    POLL_SRCS=src/event/modules/ngx_poll_module.c
    

    4.3 kqueue 모델
    KQUEUE_MODULE=ngx_kqueue_module
    KQUEUE_SRCS=src/event/modules/ngx_kqueue_module.c
    

    4.4 devpoll 모델
    DEVPOLL_MODULE=ngx_devpoll_module
    DEVPOLL_SRCS=src/event/modules/ngx_devpoll_module.c
    

    4.5 이벤트 포트 모델
    EVENTPORT_MODULE=ngx_eventport_module
    EVENTPORT_SRCS=src/event/modules/ngx_eventport_module.c
    

    4.5 epoll 모델
    EPOLL_MODULE=ngx_epoll_module
    EPOLL_SRCS=src/event/modules/ngx_epoll_module.c
    

    4.6 rtsig 모델
    RTSIG_MODULE=ngx_rtsig_module
    RTSIG_SRCS=src/event/modules/ngx_rtsig_module.c
    

    4.7 iocp 모델
    IOCP_MODULE=ngx_iocp_module
    IOCP_SRCS=src/event/modules/ngx_iocp_module.c
    

    4.8 aio 모델
    AIO_MODULE=ngx_aio_module
    AIO_SRCS="src/event/modules/ngx_aio_module.c \
              src/os/unix/ngx_aio_read.c \
              src/os/unix/ngx_aio_write.c \
              src/os/unix/ngx_aio_read_chain.c \
              src/os/unix/ngx_aio_write_chain.c"
    
    FILE_AIO_SRCS="src/os/unix/ngx_file_aio_read.c"
    LINUX_AIO_SRCS="src/os/unix/ngx_linux_aio_read.c"
    

    5 운영 체제 관련 항목
    5.1 UNIX
    관련 헤더 파일 이 있 는 디 렉 터 리 는:
    UNIX_INCS="$CORE_INCS $EVENT_INCS src/os/unix"
    

    모든 관련 헤더 파일 은:
    UNIX_DEPS="$CORE_DEPS $EVENT_DEPS \
                src/os/unix/ngx_time.h \
                src/os/unix/ngx_errno.h \
                ...
                src/os/unix/ngx_process_cycle.h"
    

    모든 원본 파일 은:
    UNIX_SRCS="$CORE_SRCS $EVENT_SRCS \
            src/os/unix/ngx_time.c \
            src/os/unix/ngx_errno.c \
            ...
            src/os/unix/ngx_process_cycle.c"
    

    5.2 POSIX
    POSIX_DEPS=src/os/unix/ngx_posix_config.h
    

    5.3 FreeBSD
    관련 헤더 파일:
    FREEBSD_DEPS="src/os/unix/ngx_freebsd_config.h src/os/unix/ngx_freebsd.h"
    

    관련 원본 파일:
    FREEBSD_SRCS=src/os/unix/ngx_freebsd_init.c
    

    Sendfile 메커니즘 에 대한 원본 파일:
    FREEBSD_SENDFILE_SRCS=src/os/unix/ngx_freebsd_sendfile_chain.c
    

    Rfork 관련 파일:
    FREEBSD_RFORK_DEPS="src/os/unix/ngx_freebsd_rfork_thread.h"
    FREEBSD_RFORK_SRCS="src/os/unix/ngx_freebsd_rfork_thread.c"
    FREEBSD_RFORK_THREAD_SRCS="src/os/unix/rfork_thread.S"
    

    5.4 pthread
    PTHREAD_SRCS="src/os/unix/ngx_pthread_thread.c"
    

    5.5 Linux
    관련 헤더 파일:
    LINUX_DEPS="src/os/unix/ngx_linux_config.h src/os/unix/ngx_linux.h"
    

    관련 원본 파일:
    LINUX_SRCS=src/os/unix/ngx_linux_init.c
    

    Sendfile 메커니즘 에 대한 원본 파일:
    LINUX_SENDFILE_SRCS=src/os/unix/ngx_linux_sendfile_chain.c
    

    5.6 Solaris
    관련 헤더 파일:
    SOLARIS_DEPS="src/os/unix/ngx_solaris_config.h src/os/unix/ngx_solaris.h"
    

    관련 원본 파일:
    SOLARIS_SRCS=src/os/unix/ngx_solaris_init.c
    

    Sendfile 메커니즘 에 대한 원본 파일:
    SOLARIS_SENDFILEV_SRCS=src/os/unix/ngx_solaris_sendfilev_chain.c
    

    5.7 Darwin
    관련 헤더 파일:
    DARWIN_DEPS="src/os/unix/ngx_darwin_config.h src/os/unix/ngx_darwin.h"
    

    현 골간 의 원본 파일:
    DARWIN_SRCS=src/os/unix/ngx_darwin_init.c
    

    Sendfile 메커니즘 에 대한 원본 파일:
    DARWIN_SENDFILE_SRCS=src/os/unix/ngx_darwin_sendfile_chain.c
    

    5.8 Win32
    관련 파일 이 있 는 디 렉 터 리:
    WIN32_INCS="$CORE_INCS $EVENT_INCS src/os/win32"
    

    관련 헤더 파일:
    WIN32_DEPS="$CORE_DEPS $EVENT_DEPS \
                src/os/win32/ngx_win32_config.h \
                src/os/win32/ngx_time.h \
                ...
                src/os/win32/ngx_process_cycle.h"
    

    프로필 에 사용 할 헤더 파일:
    WIN32_CONFIG=src/os/win32/ngx_win32_config.h
    

    관련 원본 파일:
    WIN32_SRCS="$CORE_SRCS $EVENT_SRCS \
                src/os/win32/ngx_errno.c \
                src/os/win32/ngx_alloc.c \
                ...
                src/event/ngx_event_acceptex.c"
    

    Nginx 윈도 플랫폼 아이콘:
    NGX_WIN32_ICONS="src/os/win32/nginx.ico"
    

    Run Commands:
    NGX_WIN32_RC="src/os/win32/nginx.rc"
    

    6 HTTP 모듈
    6.1 HTTP 기본 모듈
    이 모듈 의 분 류 는 위 키 에서 제시 한 것 과 다 릅 니 다. 이 네 개 는 위 키 의 표준 모듈 이 아 닙 니 다.모듈 이름:
    HTTP_MODULES="ngx_http_module \
                  ngx_http_core_module \
                  ngx_http_log_module \
                  ngx_http_upstream_module"
    
    HTTP_WRITE_FILTER_MODULE="ngx_http_write_filter_module"
    HTTP_HEADER_FILTER_MODULE="ngx_http_header_filter_module"
    
    HTTP_POSTPONE_FILTER_MODULE=ngx_http_postpone_filter_module
    HTTP_COPY_FILTER_MODULE=ngx_http_copy_filter_module
    
    HTTP_CHUNKED_FILTER_MODULE=ngx_http_chunked_filter_module
    HTTP_HEADERS_FILTER_MODULE=ngx_http_headers_filter_module
    
    HTTP_RANGE_HEADER_FILTER_MODULE=ngx_http_range_header_filter_module
    HTTP_RANGE_BODY_FILTER_MODULE=ngx_http_range_body_filter_module
    
    HTTP_NOT_MODIFIED_FILTER_MODULE=ngx_http_not_modified_filter_module
    
    HTTP_STATIC_MODULE=ngx_http_static_module
    HTTP_INDEX_MODULE=ngx_http_index_module
    

    관련 헤더 파일 이 있 는 디 렉 터 리 는:
    HTTP_INCS="src/http src/http/modules"
    

    모든 관련 헤더 파일 은:
    HTTP_DEPS="src/http/ngx_http.h \
               src/http/ngx_http_request.h \
               src/http/ngx_http_config.h \
               src/http/ngx_http_core_module.h \
               src/http/ngx_http_cache.h \
               src/http/ngx_http_variables.h \
               src/http/ngx_http_script.h \
               src/http/ngx_http_upstream.h \
               src/http/ngx_http_upstream_round_robin.h \
               src/http/ngx_http_busy_lock.h"
    

    모든 원본 파일 은:
    HTTP_SRCS="src/http/ngx_http.c \
               src/http/ngx_http_core_module.c \
               …
               src/http/modules/ngx_http_not_modified_filter_module.c"
    
    HTTP_SRCS="$HTTP_SRCS src/http/ngx_http_busy_lock.c"
    

    6.2 기타 HTTP 모듈
    다음 변 수 는 HTTP 모듈 에 관 한 것 입 니 다.
    HTTP_POSTPONE_FILTER_SRCS=src/http/ngx_http_postpone_filter_module.c
    
    HTTP_FILE_CACHE_SRCS=src/http/ngx_http_file_cache.c
    
    HTTP_SSI_FILTER_MODULE=ngx_http_ssi_filter_module
    HTTP_SSI_DEPS=src/http/modules/ngx_http_ssi_filter_module.h
    HTTP_SSI_SRCS=src/http/modules/ngx_http_ssi_filter_module.c
    
    HTTP_SSL_MODULE=ngx_http_ssl_module
    HTTP_SSL_DEPS=src/http/modules/ngx_http_ssl_module.h
    HTTP_SSL_SRCS=src/http/modules/ngx_http_ssl_module.c
    
    HTTP_PERL_MODULE=ngx_http_perl_module
    HTTP_PERL_INCS=src/http/modules/perl
    HTTP_PERL_DEPS=src/http/modules/perl/ngx_http_perl_module.h
    HTTP_PERL_SRCS=src/http/modules/perl/ngx_http_perl_module.c
    

    기타 일부 모듈 은 HTTP 와 같은 형태 만 설정 되 어 있 습 니 다.XXX_MODULE 과 HTTPXXX_SRCS 의 변 수 는 charset - filter, gzip - filter, xslt - filter, image - filter, sub - filter, userid - filter, realip, addiction - filter, dav, access, auth - basic, autoindex, random, status, geo, geoip, map, split - clients, referer, rewrite, proxy, fastcgi, uwsgi, scgi, memcached, limit - req, empty - gif, browser 를 포함한다.secure - link, degradation, flv, mp4, gzip, upstream - ip - hash, 예 를 들 어:
    HTTP_CHARSET_FILTER_MODULE=ngx_http_charset_filter_module
    HTTP_CHARSET_SRCS=src/http/modules/ngx_http_charset_filter_module.c
    
    HTTP_GZIP_FILTER_MODULE=ngx_http_gzip_filter_module
    HTTP_GZIP_SRCS=src/http/modules/ngx_http_gzip_filter_module.c
    

    7 메 일 모듈
    헤더 파일 이 있 는 디 렉 터 리:
    MAIL_INCS="src/mail"
    

    헤더 파일:
    MAIL_DEPS="src/mail/ngx_mail.h"
    

    모듈 이름:
    MAIL_MODULES="ngx_mail_module ngx_mail_core_module"
    

    원본 파일:
    MAIL_SRCS="src/mail/ngx_mail.c \
               src/mail/ngx_mail_core_module.c \
               src/mail/ngx_mail_handler.c \
               src/mail/ngx_mail_parse.c"
    

    일부 모듈 의 관련 변 수 는 POP 3, IMAP, SMTP, SSL, AUTH - HTTP, PROXY 모듈 을 포함한다.
    MAIL_POP3_MODULE="ngx_mail_pop3_module"
    MAIL_POP3_DEPS="src/mail/ngx_mail_pop3_module.h"
    MAIL_POP3_SRCS="src/mail/ngx_mail_pop3_module.c \
                    src/mail/ngx_mail_pop3_handler.c"
    
    MAIL_IMAP_MODULE="ngx_mail_imap_module"
    MAIL_IMAP_DEPS="src/mail/ngx_mail_imap_module.h"
    MAIL_IMAP_SRCS="src/mail/ngx_mail_imap_module.c \
                    src/mail/ngx_mail_imap_handler.c"
    
    MAIL_SMTP_MODULE="ngx_mail_smtp_module"
    MAIL_SMTP_DEPS="src/mail/ngx_mail_smtp_module.h"
    MAIL_SMTP_SRCS="src/mail/ngx_mail_smtp_module.c \
                    src/mail/ngx_mail_smtp_handler.c"
    
    MAIL_SSL_MODULE="ngx_mail_ssl_module"
    MAIL_SSL_DEPS="src/mail/ngx_mail_ssl_module.h"
    MAIL_SSL_SRCS="src/mail/ngx_mail_ssl_module.c"
    
    MAIL_AUTH_HTTP_MODULE="ngx_mail_auth_http_module"
    MAIL_AUTH_HTTP_SRCS="src/mail/ngx_mail_auth_http_module.c"
    
    MAIL_PROXY_MODULE="ngx_mail_proxy_module"
    MAIL_PROXY_SRCS="src/mail/ngx_mail_proxy_module.c"
    

    8 Google PerfTools 모듈
    NGX_GOOGLE_PERFTOOLS_MODULE=ngx_google_perftools_module
    NGX_GOOGLE_PERFTOOLS_SRCS=src/misc/ngx_google_perftools_module.c
    

    9 C + + 테스트 모듈
    NGX_CPP_TEST_SRCS=src/misc/ngx_cpp_test_module.cpp
    

    -
    전재 "유대 의 CSDN 블 로그": blog. csdn. net / Poechant
    -
    원본 링크:http://blog.csdn.net/poechant/article/details/7327217

    좋은 웹페이지 즐겨찾기