nginx 의 ngxcommand_t 구조 에서 set 방법 은 언제 호출 됩 니까?

2106 단어
/*********************************************************************
 * Author  : Samson
 * Date    : 05/29/2015
 * Test platform:
 *              gcc (Ubuntu 4.8.2-19ubuntu1) 4.8.2
 *              GNU bash, 4.3.11(1)-release (x86_64-pc-linux-gnu) 
 * *******************************************************************/

nginx 모듈 에서 표준 모듈 구조 체 ngxmodule_t, 이 구 조 는 주로 ngx 를 포함한다.command_t,ngx_http_module_t 등 모듈 의 속성, 설정 필드 및 대응 하 는 처리 방법, 그 중 ngxcommand_t 의 구 조 는:
struct ngx_command_s {
ngx_str_t name;
ngx_uint_t type;
char *(*set)(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);
ngx_uint_t conf;
ngx_uint_t offset;
void *post;
};
그 중에서 name 은 설정 필드 의 이름 을 표시 합 니 다.
set 는 함수 포인터 로 매개 변수 전환 함 수 를 지정 하 는 데 사 용 됩 니 다. 이 함 수 는 일반적으로 설정 파일 에 있 는 명령 의 매개 변 수 를 필요 한 형식 으로 바 꾸 고 설정 구조 체 에 저장 합 니 다. 즉, 설정 필드 에 대응 하 는 설정 방법 입 니 다.
그럼 모듈 에 있 는 commandst 중의 set 는 언제 호출 됩 니까?
proxy 모듈 의 proxypass 필드 의 경우 nginx 설정 파일 에 proxy 가 있 을 때pass 옵션 이 시 작 될 때 실행 스 택 은:
main---> ngx_init_cycle ---> ngx_conf_parse --->ngx_http_block --->ngx_conf_handler --->ngx_http_core_server --->ngx_conf_handler --->ngx_http_core_location ---> ngx_conf_handler---> ngx_http_proxy_pass
스 택 에 있 는 ngx 이상 실행conf_parse 는 설정 파일 이나 설정 블록 을 분석 하기 위해 (예: http {} server {} location {});
ngx_http_block 방법 은 설정 파일 에 http {} 블록 설정 이 나 타 났 을 때 호출 하 는 것 입 니 다.
ngx_conf_handler 는 특정한 블록 설정 에 설 정 된 필드 에 대응 하 는 commands 를 호출 하 는 것 입 니 다. 즉, 설정 항목 에 대응 하 는 set 함수 에 대해 호출 처 리 를 하 는 것 입 니 다.
ngx_http_core_server 방법 은 설정 파일 에 server {} 블록 설정 이 나 타 났 을 때 호출 하 는 것 입 니 다.
ngx_http_core_location 방법 은 설정 파일 에 location {} 블록 설정 이 나 타 났 을 때 호출 하 는 것 입 니 다.
ngx_http_proxy_pass 방법 에 대응 하 는 것 은 proxypass 설정 필드 의 set 방법.
이상 의 실행 스 택 에서 블록 설정 을 만 날 때마다 ngx 를 호출 합 니 다.conf_handler 설정 필드 에 대응 하 는 모듈 에서 set 방법 을 순환 호출 합 니 다.
ngx_conf_handler, 함수 에서 http 모듈 에 설 정 된 설정 키 워드 를 옮 겨 다 니 며 rv = cmd - > set (cf, cmd, conf) 를 호출 합 니 다.키워드 에 대응 하 는 set 방법의 호출 을 진행 합 니 다.

좋은 웹페이지 즐겨찾기