nginx-자신의 HTTP 모듈 을 nginx 에 컴 파일 하 는 방법
이 편 은 주로 자신의 모듈 을 nginx 에 컴 파일 하 는 방법 을 인계 합 니 다.
4.567917.자주 사용 하 는 간단 한 방법:1)먼저 소스 코드 파일 을 모두 디 렉 터 리 아래 에 확대 한 다음 디 렉 터 리 를 바 꾸 는 데 config 를 작성 하여 Nginx 에 이 모듈 을 어떻게 컴 파일 하 는 지 알려 줍 니 다.이 파일 이름 은 config 여야 합 니 다
ps:configure 스 크 립 트 를 수정 하여 실 행 된 obj/Makefile 과 obj/ngxmodule.c 파일.
이후 에 해설 을 진행 하 다
-------------------------------------------------------------------------------------------
2.config 의 쓰기:
사실 config 는 셸 스 크 립 트 입 니 다.HTTP 모듈 만 개발 하려 면 3 개의 변 수 를 정의 해 야 합 니 다.
1.ngx_addon_name:configure 가 실 행 될 때 만 사용 합 니 다.일반적으로 모듈 이름 으로 설정 합 니 다.
2.HTTP_MODULES:모든 HTTP 모듈 이름 을 저장 하고 스페이스 바 를 연결 합 니 다.다시 설정 할 때 덮어 쓰 지 말고 추가 만 하면 됩 니 다.
예:&HTTPMODULES ngx_http_my_test_module
3.NGC_ADDON_SRCS:모듈 의 원본 코드 를 지정 하 는 데 사 용 됩 니 다.스페이스 바 가 연결 되 어 있 습 니 다.
ps:설치 시&ngx 사용 가능addon_dir 변 수 는 configure 가 실 행 될 때의--add-module=PATH 와 같 습 니 다.
예:
ngx_addon_name=ngx_http_mytest_module
HTTP_MODULES="$HTTP_MODULES ngx_http_mytest_modue"
NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_http_mytest_module.c"
다음은 요점 을 설명 합 니 다.
위의 3 개 변 수 는 config 에서 사용자 정의 할 수 있 는 유일한 부분 이 아 닙 니 다.HTTP 필터 모듈 을 개발 하려 면 HTTP 를 사용 해 야 합 니 다.FILTER_HTTP 대신 MODULESMODULES
$CORE_MODULES:핵심 모듈.
$EVENT_MODULES:이벤트 모듈
$HTTP_MODULES:HTTP 모듈
$HTTP_FILTER_MODULES:HTTP 필터 모듈
$HTTP_HEADERS_FILTER_MODULES:HTTP 헤드 필터 모듈.
등.NGX_ADDON_DEPS:모듈 의존 경 로 를 지정 합 니 다.
-------------------------------------------------------------------------------------------
3.configure 스 크 립 트 를 이용 하여 제 정 된 모듈 을 nginx 에 추가 합 니 다.
우선 nginx 는 configure 를 통 해 프로그램 을 생 성 합 니 다.
configure 에서
.auto/modules
.auto/make
이 두 줄 코드 는 제3자 모듈 이 nginx 에 가입 하 는 것 을 말한다.
1)configure 는 config 파일 을 어떻게 사용 하여 nginx 에 가입 합 니까?
--add-module=*) NGX_ADDONS="$NGX_ADDONS $value" ;;
configure 명령 이 auto/modules 스 크 립 트 에 실 행 될 때 ngx 생 성modules.c 파일 에 제 정 된 제3자 모듈 을 추가 합 니 다.
다음은 부분 소스 코드 입 니 다.
if test -n "$NGX_ADDONS";then
echo configuring addtional modules
for ngx_addon_dir in $NGX_ADDONS
do
echo "adding module in $ngx_addon_dir"
if test -f $ngx_addon_dir/config; then
.$ngx_addon_dir/config
echo "+ $nginx_addon_name was configured"
else
echo " "
exit 1
fi
done
fi
config 파일 을 옮 겨 다 니 면ngxmodules.c 에서 ngx 정의module_t *ngx_modules[]배열,요청 을 처리 할 때 순환 방문 배열 을 통 해 어떤 모듈 로 처리 해 야 하 는 지 확인 합 니 다.
마지막 으로 auto/make 가 관련 모듈 을 nginx 에 컴 파일 하 는 것 입 니 다.
-------------------------------------------------------------------------------------------
4.Makefile 파일 직접 수정
우리 가 다시 결정 해 야 할 ngx 에 적용module* ngx_modules[]배열 의 각 모듈 의 순서 나 소스 코드 를 컴 파일 할 때 독특한 컴 파일 옵션 을 추가 해 야 합 니 다.configure 를 실행 한 후 obbs/ngx 를 실행 할 수 있 습 니 다.modules.c 와 obbs/Makefile 파일 을 직접 수정 합 니 다.
우선,우리 가 ngx 를 수정 해 야 할 때modules.c 시 코드 를 한 줄 더 추가 해 야 합 니 다.
extern ngx_module_t ngx_http_mytypes_module;
그리고 주동 적 으로 ngxmodules 배열 중
ngx_modules_t *ngx_modules[] = {
...
&ngx_http_upstream_ip_hash_module,
&ngx_http_mytest_module,
$ngx_http_write_filter_module,
...
NULL
};
우리 모듈 이 가입 하 는 순서 가 매우 중요 합 니 다.왜냐하면 nginx 에서 모듈 호출 순 서 는 정렬 에 필요 하기 때 문 입 니 다.
마지막 으로 Makefile 을 수정 하 는 것 입 니 다.
obj/addon/httpmodule/ngx_http_mytest_modules.0:$(ADDON_DEPS)\
../sample/httpmodule/ngx_http_mytest_modules.c
$(CC) -c $(CFLAGS) $(ALL_INCS) \
-o objs/addon/httpmdoule/ngx_http_mytest_module.o\
../sample/httpmodule//ngx_http_mytest_module.c
그리고 대상 파일 을 Nginx 에 연결 합 니 다.
objs/nginx: objs/src/core/nginx.o
...
objs/addon/httpmodule/ngx_http_mytest_module.o\
objs/ngx_modules.o
$(LINK) -o objs/nginx\
objs/src/core/nginx.o\
...
objs/addon/httpmodule/ngx_http_mytest_module.o\
objs/ngx_modules.o\
-lpthread -lcrypt -lpcre -lcrypto -lcrypto -lz
이것 은 파일 을 수정 하 는 것 이기 때문에 정확 하지 않 은 수정 은 nginx 에 오류 가 발생 할 수 있 으 므 로 조심 하 십시오.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Golang 테스트 커버리지를 효율적으로 확인이전 기사에서 테스트 커버리지를 쉘 스크립트로 만들고 그것을 실행하여 확인했습니다. 이번 이를 Dockerfile과 Makefile에 정리해 보다 테스트 커버리지를 확인하기 쉽게 한 메모. 멀티 스테이지 빌드의 st...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.