nginx 소스 학습 노트 (5) - nginx 정수 - 모듈
3161 단어 nginx
ngx_core_module_t、
ngx_event_module_t、
ngx_http_module_t、
ngx_mail_module_t
각각 대응 4 가지 모듈
src/core/ngx_conf_file.h
typedef struct {
ngx_str_t name;
void *(*create_conf)(ngx_cycle_t *cycle);
char *(*init_conf)(ngx_cycle_t *cycle, void *conf);
} ngx_core_module_t;
src/event/ngx_event.h
typedef struct {
ngx_int_t (*add)(ngx_event_t *ev, ngx_int_t event, ngx_uint_t flags);
ngx_int_t (*del)(ngx_event_t *ev, ngx_int_t event, ngx_uint_t flags);
ngx_int_t (*enable)(ngx_event_t *ev, ngx_int_t event, ngx_uint_t flags);
ngx_int_t (*disable)(ngx_event_t *ev, ngx_int_t event, ngx_uint_t flags);
ngx_int_t (*add_conn)(ngx_connection_t *c);
ngx_int_t (*del_conn)(ngx_connection_t *c, ngx_uint_t flags);
ngx_int_t (*process_changes)(ngx_cycle_t *cycle, ngx_uint_t nowait);
ngx_int_t (*process_events)(ngx_cycle_t *cycle, ngx_msec_t timer,
ngx_uint_t flags);
ngx_int_t (*init)(ngx_cycle_t *cycle, ngx_msec_t timer);
void (*done)(ngx_cycle_t *cycle);
} ngx_event_actions_t;
typedef struct {
ngx_str_t *name;
void *(*create_conf)(ngx_cycle_t *cycle);
char *(*init_conf)(ngx_cycle_t *cycle, void *conf);
ngx_event_actions_t actions;
} ngx_event_module_t;
src/http/ngx_http_config.h
typedef struct {
ngx_int_t (*preconfiguration)(ngx_conf_t *cf);
ngx_int_t (*postconfiguration)(ngx_conf_t *cf);
void *(*create_main_conf)(ngx_conf_t *cf);
char *(*init_main_conf)(ngx_conf_t *cf, void *conf);
void *(*create_srv_conf)(ngx_conf_t *cf);
char *(*merge_srv_conf)(ngx_conf_t *cf, void *prev, void *conf);
void *(*create_loc_conf)(ngx_conf_t *cf);
char *(*merge_loc_conf)(ngx_conf_t *cf, void *prev, void *conf);
} ngx_http_module_t;
src/mail/ngx_mail.h
typedef struct {
ngx_mail_protocol_t *protocol;
void *(*create_main_conf)(ngx_conf_t *cf);
char *(*init_main_conf)(ngx_conf_t *cf, void *conf);
void *(*create_srv_conf)(ngx_conf_t *cf);
char *(*merge_srv_conf)(ngx_conf_t *cf, void *prev,
void *conf);
} ngx_mail_module_t;
이 네 개의 구조 체 는 모두 갈 고 리 를 제공 하여 모듈 이 문맥 과 관련 된 조작 을 등록 할 수 있 도록 하고 핵심 모듈 은 core 와 event 모듈 도 create 를 제공 합 니 다.conf 와 initconf 두 개의 갈 고 리 는 그 밖 에 조작 시간의 갈 고 리 를 제공 합 니 다.http 모듈 은 설정 파일 을 읽 는 전후 와 mail / src / loc 설정 항목 을 조작 할 때 실행 되 는 갈 고 리 를 제공 합 니 다.mail 모듈 도 http 모듈 과 유사 한 갈 고 리 를 제공 하지만 http 모듈 보다 간단 합 니 다.
core 모듈, 그 는 시스템 의 많은 부분 에 설정 할 것 입 니 다. 예 를 들 어 errlog 모듈 은 오류 로 그 를 작성 하 는 것 을 책임 집 니 다.
이벤트 모듈 은 시간 구동 과 관련 된 모듈 로 nginx 는 서로 다른 운영 체제 에서 서로 다른 커 널 체 제 를 사용 합 니 다. 예 를 들 어 Liux 에서 epoll 모듈 을 사용 할 수 있 습 니 다.
http 모듈 식 은 http 입력 을 처리 하고 출력, 여과 출력, 부하 균형 등 모듈 을 만 드 는 데 사 용 됩 니 다. 이것 은 nginx 가 웹 서버 의 핵심 부분 입 니 다.
mail 모듈 은 메 일 에이 전 트 를 실현 하 는 모듈 로 smtp / pop 3 / imap 등 프로 토 콜 의 메 일 에이 전 트 를 실현 합 니 다.
여기까지 말씀 드 리 면 nginx 에 대해 대체적으로 인식 하 시기 바 랍 니 다. 적어도 모듈 에서 할 수 있 습 니 다. 사실은 지금 은 소스 코드 를 정독 하기 시 작 했 음 을 확인 할 수 있 습 니 다. 그러나 세부 사항 을 잘 이해 하기 위해 우 리 는 소스 코드 를 읽 기 전에 nginx 의 관련 데이터 구 조 를 배 워 야 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
간단! Certbot을 사용하여 웹 사이트를 SSL(HTTPS)화하는 방법초보자가 인프라 주위를 정돈하는 것은 매우 어렵습니다. 이번은 사이트를 간단하게 SSL화(HTTP에서 HTTPS통신)로 변경하는 방법을 소개합니다! 이번에는 소프트웨어 시스템 Nginx CentOS7 의 환경에서 S...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.