오늘 저희는 오픈 소스 NGINX 버전 1.9.11을 출시했습니다. 여기에는 NGINX와 NGINX Plus를 사용하는 방식에 큰 영향을 줄 것으로 생각되는 새로운 기능인 동적 모듈이 포함되어 있습니다. 동적 모듈을 사용하면 선택적으로 런타임에 별도의 공유 객체 파일을 모듈로 로드할 수 있습니다. 여기에는 타사 모듈과 일부 기본 NGINX 모듈이 모두 포함됩니다. 새로운 구현은 모듈 API와의 이전 버전과의 호환성을 최대한 유지합니다.
편집기 – NGINX 1.11.5 이상(및 NGINX Plus R11 이상)에서는 전체 NGINX 바이너리를 컴파일하지 않고도 동적 모듈을 컴파일할 수 있습니다. 자세한 내용은 NGINX Plus용 동적 모듈 컴파일을 참조하세요.
다음 NGINX Plus 릴리스(NGINX Plus R9)는 이 동적 모듈 기능을 기반으로 구축될 예정입니다. 우리는 NGINX Plus에 대해 테스트하고 인증한 다양한 타사 모듈로 관리형 NGINX 모듈 저장소를 구축할 계획입니다. 이를 통해 사용자는 자신 있게 NGINX Plus에 일반적인 확장 기능을 추가할 수 있습니다. 오픈 소스나 상용 모듈을 저장소에 포함시키고 싶으시다면, 영업팀에 문의 링크를 통해 저희에게 연락해 주세요.
지금까지 NGINX용 모듈을 만들려면 NGINX 소스 코드와 함께 NGINX 바이너리로 컴파일해야 했습니다. 원하든 원치 않든, 모듈에는 항상 NGINX가 로드되었습니다. 운영 체제 배포판 패키저의 경우, 이로 인해 모든 사용자에 맞게 사용자 정의 NGINX 바이너리를 만드는 것이 매우 어려웠습니다.
동적 모듈의 첫 번째 릴리스에서는 NGINX 바이너리와 동시에 선택적 NGINX 모듈을 컴파일해야 하지만, 동적으로 로드된 각 모듈에 대해 별도의 공유 객체를 만들고 NGINX 구성 파일에 있는 지시문을 사용하여 런타임에 공유 객체의 로드를 활성화하거나 비활성화합니다.
첫 번째 릴리스에서는 다음 NGINX 모듈과 모듈 번들을 동적으로 빌드할 수 있습니다.
ngx_http_geoip_module
)ngx_http_image_filter_module
)ngx_mail_{ core , auth , imap , pop3 , proxy , smtp , ssl }_module
)ngx_stream_{ core , access , limit_conn , proxy , ssl , upstream }_modul
e)ngx_http_xslt_모듈
)동적으로 로드할 수 있는 공유 객체를 생성하려면 표준 --with_ 모듈
인수 에 =dynamic을
추가합니다.
# ./configure --with-http_geoip_module=동적 --with-http_image_filter_module=동적 --with-mail=동적 --with-stream=동적 --with-http_xslt_module=동적
NGINX 1.9.11 소스 코드를 설치하면 modules 이라는 새로운 하위 디렉토리가 생기고, 빌드 프로세스는 거기에 바이너리 공유 객체를 저장합니다. 기본 경로는 /usr/local/nginx/modules 입니다.
런타임에 모듈을 로드하려면 기본 컨텍스트에 새 load_module
지시문을 포함하고 모듈의 공유 객체 파일 경로를 따옴표로 묶어 지정합니다. 구성을 다시 로드하거나 NGINX를 재시작하면 동적 모듈이 로드됩니다. 이러한 예에서처럼 소스 디렉토리를 기준으로 상대적인 경로를 지정하거나 전체 경로를 지정할 수 있습니다.
로드_모듈 "모듈/ngx_http_geoip_module.so"; 로드_모듈 "모듈/ngx_stream_module.so";
모듈을 동적으로 "언로드"하려면 해당 load_module
지시문을 주석 처리하거나 제거하고 NGINX 구성을 다시 로드합니다. 파일 내의 다른 지시어가 언로드하는 모듈과 관련이 있는 경우, 해당 지시어 역시 주석으로 처리하거나 삭제하시기 바랍니다.
많은 타사 기존 모듈을 개발하는 개발자의 경우 동적 로딩으로 변환하는 데 필요한 작업은 거의 없습니다. 많은 경우 모듈 소스 코드의 구성 파일만 편집하면 됩니다. 다른 모듈에는 좀 더 많은 작업이 필요합니다. NGINX Wiki에는 모듈 변환 가이드 와 모듈 소스 구성 파일 형식 에 대한 자세한 정보가 포함되어 있습니다.
변환된 타사 모듈을 컴파일하려면 새 --add-dynamic-module
인수를 사용하고 경로를 지정하세요.
# ./configure --add-dynamic-module= /모듈/소스 경로
NGINX 모듈과 마찬가지로, 공유 객체가 modules 하위 디렉토리에 생성되어 설치되고, NGINX 구성에 해당 load_module
지시문을 추가합니다. 당사 개발자 관계팀에서 모듈 변환에 도움을 드립니다. NGINX 개발 메일링 목록을 통해 문의해 주세요.
향후 릴리스에서는 NGINX 바이너리가 컴파일된 후 모듈을 컴파일하는 기능을 추가할 계획입니다. 또한 모듈 API에 대한 문서화 작업도 진행 중이며, 이 문서는 완료되면 NGINX Wiki 에서 무료로 이용할 수 있습니다.
동적 모듈을 직접 사용해보려면 NGINX 1.9.11을 다운로드하세요 .
NGINX Plus를 사용해보려면 오늘 무료 30일 체험판을 시작하거나 저희에게 연락해 사용 사례에 대해 논의해 보세요.
"이 블로그 게시물에는 더 이상 사용할 수 없거나 더 이상 지원되지 않는 제품이 참조될 수 있습니다. 사용 가능한 F5 NGINX 제품과 솔루션에 대한 최신 정보를 보려면 NGINX 제품군을 살펴보세요. NGINX는 이제 F5의 일부가 되었습니다. 이전의 모든 NGINX.com 링크는 F5.com의 유사한 NGINX 콘텐츠로 리디렉션됩니다."