nginx 의 ngxcommand_t 구조 에서 set 방법 은 언제 호출 됩 니까?
/*********************************************************************
* 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 방법의 호출 을 진행 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.