원본링크: http://cjhust.blog.163.com/blog/static/17582715720124544047608/
1, 데이터 구조
ngx_conf_s
명령 매개변수, 파일에서 읽어서 이 배열에 넣습니다.
시스템 매개변수를 가리킵니다 ngx_pool_t *pool; //
메모리 풀 ngx_pool_t *temp_pool;
구성 파일 정보 “./conf/main.conf” ngx_log_t *log; //
로그
ngx_uint_t module_type;
//현재 명령어를 처리하는 모듈의 종류 ngx_uint_t
이 명령을 처리하는 명령 유형
char *handler_conf; //
위의handler};
참고:
는 구성 파일과 시스템 매개변수 사이의 브리지 역할을 합니다. typedef 구조체 {
비고 : HTTP 블록의 구성 구조는 크게 3, 메인, 서버{}, 위치{}. typedef struct {
ngx_int_t (*사전 구성)(ngx_conf_t *cf); ngx_int_t (*사후 구성)(ngx_conf_t *cf);
HTTP
ctx
8 기능. ngx_command_sstruct ngx_command_s { ngx_str_t 이름;
ngx_uint_t 유형; 문자 cf, ngx_command_t *cmd, 무효 * conf);
ngx_uint_t conf;
ngx_uint_t offset;
void ngx_null_string , 0, NULL, 0, 0, NULL }
2, HTTP ctx
2.1 create_main_conf(ngx_conf_t *cf)
매개변수: ngx_conf_t *cf, 구성 구조
반환 값: void *
참고: 의 반환 값은 ngx_http_conf_get_module_main_conf 및 gx_http로 반환될 수 있습니다. _get_module_ main _conf 결과; static void * ngx_http_barrier_create_conf(ngx_conf_t *cf)
{
ngx_http_barrier_conf_t *conf; //사용자 정의 구조
conf = ngx_pcalloc(cf->pool, sizeof(ngx_http_barrier_conf_t )); //pcalloc으로 초기화
if (conf == NULL) { NULL 반환;
}
conf->enable = NGX_CONF_UNSET;
return conf; 🎜>
2.2 create_srv_conf(ngx_conf_t *cf)
매개변수: ngx_conf_t * cf, 구성 구조
반환 값: void *
🎜>ngx_http_conf_get_module_srv_conf 및 gx_http _get_module_ srv_conf; 🎜>
static void * ngx_http_barrier_create_conf(ngx_conf_t *cf){ ngx_http_barrier_conf_t * conf; //사용자 정의 구조
conf = ngx_pcalloc(cf->pool, sizeof(ngx_http_barrier_conf_t) ); //pcalloc으로 초기화 if (conf == NULL) { NULL 반환; }
conf->enable = NGX_CONF_UNSET; return conf; 🎜>
2.3 create_loc_conf(ngx_conf_t *cf)
매개변수: ngx_conf_t *cf , 구성 구조
반환 값:
void *
>ngx_http_conf_get_module_loc_conf
및
gx_http _get_module_loc_conf; >
static void * ngx_http_barrier_create_conf(ngx_conf_t *cf){
ngx_http_barrier_conf_t *conf ; //사용자 정의 구조
conf = ngx_pcalloc(cf->pool, sizeof(ngx_http_barrier_conf_t)); //pcalloc으로 초기화 if (conf == NULL) { NULL 반환; } conf ->enable = NGX_CONF_UNSET; conf 반환 🎜> } 2.4 사전 구성(ngx_conf_t *cf) 매개변수: ngx_conf_t *cf, 구성 구조; 반환 값: ngx_int_t; 참고: 연산이 올바른지 판단하는 데 사용됩니다. >정적 ngx_int_tngx_http_ssl_add_variables(ngx_conf_t *cf) { ngx_http_variable_t *var, *v; for (v = ngx_http_ssl_vars; v->name.len; v++) { var = ngx_http_add_variable(cf, &v->name, v->flags); if(var == NULL) { NGX_ERROR 반환; } var->get_handler = v->get_handler; var->data = v->data; } return NGX_OK; } 2.5 init_main_conf(ngx_conf_t *cf, void *conf) 매개변수: ngx_conf_t *cf conf, conf는 여기서 create_main을 매개변수로 사용한 경우의 반환 값입니다. >반환 값: 문자 *, NGX_CONF_OK 은 성공을 나타냅니다. 비고: 반환 값은 작업 여부를 판단하는 데에만 사용됩니다. 맞습니다. 예: 정적 문자 * ngx_http_core_init_main_conf(ngx_conf_t *cf, void *conf){ //create_main이
if (cmcf->server_names_hash_max_size == NGX_CONF_UNSET_UINT) { cmcf->server_names_hash_max_size = 512;
} if (cmcf->server_names_hash_bucket_size == NGX_CONF_UNSET_UINT) { cmcf->server_names_hash_bucket_size = ng x_cacheline_size; } cmcf->server_names_hash_bucket_size = ngx_align(cmcf->server_names_hash_bucket_size, ngx_cacheline_size); if (cmcf->variables_hash_max_size == NGX_CONF_UNSET_UINT) { cmcf->variables_hash_max_size = 512; } if (cmcf->variables_hash_bucket_size == NGX_CONF_UNSET_UINT) { cmcf-> variables_hash_bucket_size = 64; } cmcf->variables_hash_bucket_size = ngx_align(cmcf->variables_hash_bucket_size, ngx_cacheline_size); (cm cf-> ncaptures) { cmcf->ncaptures = (cmcf->ncaptures + 1) * 3; } return NGX_CONF_OK; } 2.6 merge_srv_conf(ngx_conf_t *cf, void *prev, void
*conf) 参数:ngx_conf_t *cf,配置结构体,이전是메인적配置结构体,conf是서버적配置结构体;prev =cf->ctx.srv_conf[ctx_index],c/span> 返回值:문자 *,正确返回值是NGX_CONF_OK; 备注:返回值只是작품为操작품是否正确的一个判断; 示例: 정적 문자 * ngx_http_barrier_merge_conf(ngx_conf_t *cf, void *parent, void *child) { ngx_http_barrier_conf_t *prev = parent; ngx_http_barrier_conf_t *conf = child; if (conf->shm_zone == NULL){ *conf = *prev; } ngx_conf_merge_value(conf->enable, prev->enable, 0); //기본값은 0 return NGX_CONF_OK; } 备注: 병합 서버적주주要功能是,如果메인里配置了enable=1,而서버{}里enable=
NGX_CONF_UNSET,则将서버적enable=main적enable=1; 2.7 merge_loc_conf(ngx_conf_t *cf, void *prev, void
*conf) 원리동merge_srv_conf(ngx_conf_t *cf, void *prev,
void *conf) 2.8 사후 구성(ngx_conf_t *cf) 参数:ngx_conf_t *cf; 返回值:ngx_int_t,正确返回值是NGX_OK;> 🎜> 示例: static ngx_int_t ngx_http_tracker_init(ngx_conf_t *cf) { ngx_tracker_flag = 0; return NGX_OK; } 참고: 전역 변수 교체 플래그는 배리어 모듈이 있는지 확인하기 위해 지워집니다. 지워지지 않으면 배리어가 구성에 추가되지 않은 경우가 됩니다.
zone, kill –HUP일 때 전역 변수 flag의 값은 변경되지 않기 때문입니다. , 0, 이 아닙니다. 사용자가 traker 명령을 실행하면, 분할 오류가 발생합니다. HTTP
명령 4, 자주 사용하는 변수 명령어 저장 위치# NGX_HTTP_SRV_CONF 0x04000000 #define NGX_HTTP_LOC_CONF 0x08000000#define NGX_HTTP_UP S_CONF 0x1000000 0#정의 NGX_HTTP_SIF_CONF 0x20000000 #define NGX_HTTP_LIF_CONF 0x40000000 #define NGX_HTTP_LMT_CONF 0x80000000 #define NGX_HTTP_MAIN_CONF_OFFSET 오프셋of(ngx_http_conf_ctx_t, main_conf) #define NGX_HTTP_SRV_CONF_OFFSET 오프셋of(ngx_http_conf_ctx_t, srv_conf) #define NGX_HTTP_LOC_CONF_OFFSET offsetof(ngx_http_conf_ctx_t, loc_conf) 예: static ngx_command_t ngx_http_print_commands[] = { { ngx_string("print"), NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1, ngx_http_print_setup, ngx_http_print_setup, 🎜> //set() 은 매개변수를 변환합니다. 통과 읽기 명령을 실행하고 적절한 값을 구성 구조 NGX_HTTP_LOC_CONF_OFFSET, offsetof(ngx_http_print_loc_conf_t에 저장합니다. , 편집), NULL }, ngx_null_command }; 5 , 일반적으로 사용함수
5.1 처리 요청 ngx_http_get_module_main_conf 기능: 요청에 따라 요청 및 모듈은 #define ngx_http_get_module_main_conf(r, 모듈) (r)-&g t;main_conf[ 모듈 .ctx_index] 기능: 에 따름 요청 요청 및 모듈은 서버가 구성됩니다. #define ngx_http_get_module_srv_conf(r, 모듈) (r)->srv_conf[module.ctx_index] 기능 기능: 에 따름 요청 요청 및 모듈은 위치가 구성됩니다. #define ngx_http_get_module_loc_conf(r, 모듈) (r)->loc_conf[module.ctx_index] 5.2 파싱conf 기능 기능: 에 따름conf 구조와 모듈은 main 구성됩니다. #define ngx_http_conf_get_module_main_conf(cf, module) ctx_t *) cf->main_conf[module.ctx_index] ngx_http_conf_get_module_srv_conf 에 따르면 conf 구조와 모듈을 사용하면 server 구성을 얻을 수 있습니다. #define ngx_http_conf_get_module_srv_conf(cf, module) _conf_ctx_t *) cf->ctx)->srv_conf[module.ctx_index] ngx_http_conf_get_module_loc_conf
구조 및 모듈, 위치 구성을 가져옵니다. #define ngx_http_conf_get_module_loc_conf(cf, 모듈) conf_ctx_t *) cf->ctx)->loc_conf[module.ctx_index]
ngx_http_cycle_get_module_main_conf #define ngx_http_cycle_get_module_main_conf(사이클, 모듈) 🎜> (cycle->conf_ctx [ngx_http_module.index] ? 🎜> —>main_ conf [module.ctx_index]: 🎜>
위 내용은 내용의 측면을 포함하여 nginx HTTP 모듈의 구성을 소개하고 있으며, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.
main구성을 가져옵니다.
ngx_http_get_module_srv_conf
ngx_http_get_module_loc_conf
ngx_http_conf_get_module_main_conf
기능 기능:
기능 기능: 에 따르면
conf

PHP는 주로 절차 적 프로그래밍이지만 객체 지향 프로그래밍 (OOP)도 지원합니다. Python은 OOP, 기능 및 절차 프로그래밍을 포함한 다양한 패러다임을 지원합니다. PHP는 웹 개발에 적합하며 Python은 데이터 분석 및 기계 학습과 같은 다양한 응용 프로그램에 적합합니다.

PHP는 1994 년에 시작되었으며 Rasmuslerdorf에 의해 개발되었습니다. 원래 웹 사이트 방문자를 추적하는 데 사용되었으며 점차 서버 측 스크립팅 언어로 진화했으며 웹 개발에 널리 사용되었습니다. Python은 1980 년대 후반 Guidovan Rossum에 의해 개발되었으며 1991 년에 처음 출시되었습니다. 코드 가독성과 단순성을 강조하며 과학 컴퓨팅, 데이터 분석 및 기타 분야에 적합합니다.

PHP는 웹 개발 및 빠른 프로토 타이핑에 적합하며 Python은 데이터 과학 및 기계 학습에 적합합니다. 1.PHP는 간단한 구문과 함께 동적 웹 개발에 사용되며 빠른 개발에 적합합니다. 2. Python은 간결한 구문을 가지고 있으며 여러 분야에 적합하며 강력한 라이브러리 생태계가 있습니다.

PHP는 현대화 프로세스에서 많은 웹 사이트 및 응용 프로그램을 지원하고 프레임 워크를 통해 개발 요구에 적응하기 때문에 여전히 중요합니다. 1.PHP7은 성능을 향상시키고 새로운 기능을 소개합니다. 2. Laravel, Symfony 및 Codeigniter와 같은 현대 프레임 워크는 개발을 단순화하고 코드 품질을 향상시킵니다. 3. 성능 최적화 및 모범 사례는 응용 프로그램 효율성을 더욱 향상시킵니다.

phphassignificallyimpactedwebdevelopmentandextendsbeyondit

PHP 유형은 코드 품질과 가독성을 향상시키기위한 프롬프트입니다. 1) 스칼라 유형 팁 : PHP7.0이므로 int, float 등과 같은 기능 매개 변수에 기본 데이터 유형을 지정할 수 있습니다. 2) 반환 유형 프롬프트 : 기능 반환 값 유형의 일관성을 확인하십시오. 3) Union 유형 프롬프트 : PHP8.0이므로 기능 매개 변수 또는 반환 값에 여러 유형을 지정할 수 있습니다. 4) Nullable 유형 프롬프트 : NULL 값을 포함하고 널 값을 반환 할 수있는 기능을 포함 할 수 있습니다.

PHP에서는 클론 키워드를 사용하여 객체 사본을 만들고 \ _ \ _ Clone Magic 메소드를 통해 클로닝 동작을 사용자 정의하십시오. 1. 복제 키워드를 사용하여 얕은 사본을 만들어 객체의 속성을 복제하지만 객체의 속성은 아닙니다. 2. \ _ \ _ 클론 방법은 얕은 복사 문제를 피하기 위해 중첩 된 물체를 깊이 복사 할 수 있습니다. 3. 복제의 순환 참조 및 성능 문제를 피하고 클로닝 작업을 최적화하여 효율성을 향상시키기 위해주의를 기울이십시오.

PHP는 웹 개발 및 컨텐츠 관리 시스템에 적합하며 Python은 데이터 과학, 기계 학습 및 자동화 스크립트에 적합합니다. 1.PHP는 빠르고 확장 가능한 웹 사이트 및 응용 프로그램을 구축하는 데 잘 작동하며 WordPress와 같은 CMS에서 일반적으로 사용됩니다. 2. Python은 Numpy 및 Tensorflow와 같은 풍부한 라이브러리를 통해 데이터 과학 및 기계 학습 분야에서 뛰어난 공연을했습니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

드림위버 CS6
시각적 웹 개발 도구

WebStorm Mac 버전
유용한 JavaScript 개발 도구

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기
