동적 모듈

NGINX Plus 동적 모듈

NGINX Plus는 모듈형 아키텍처를 사용합니다. 소프트웨어 모듈을 통해 새로운 기능을 추가할 수 있으며, 필요에 따라 실행 중인 NGINX Plus 인스턴스에 연결할 수 있습니다. 동적 모듈 은 IP 주소로 사용자의 위치를 파악하고 이미지 크기를 조정하며 NGINX Plus 이벤트 처리 모델에 NGINX JavaScript njs 또는 Lua 스크립트를 내장하는 등의 기능을 NGINX Plus에 추가합니다. 모듈은 NGINX와 타사 개발자가 모두에 의해 생성됩니다.

동적 모듈을 사용하려면 먼저 설치 지침에 따라 최신 NGINX Plus 릴리스를 설치하십시오. 동적 모듈은 NGINX Plus Release 9(R9) 이상에서 지원됩니다.

목차

1. 동적으로 로드 가능한 모듈 설치
1-1. 공식 저장소에서 동적 모듈 설치
1-2. NGINX 커뮤니티 모듈 설치
1-3. 동적 모듈 활성화
2. NGINX Plus 권한 없는 설치

1. 동적으로 로드 가능한 모듈 설치

NGINX Plus 기능은 사전 빌드된 패키지에 포함되지 않은 동적으로 로드 가능한 모듈로 확장할 수 있습니다.

NGINX 인증 동적 모듈 – NGINX 에서 작성 및 유지 관리하는 모듈. 저장소에서 직접 다음 모듈을 설치합니다.

  • GeoIP
  • Image-Filter
  • njs Scripting Language
  • Perl
  • XSLT

NGINX 인증 커뮤니티 동적 모듈 – NGINX가 테스트 및 배포하고 NGINX가 설치 및 기본 구성 지원을 제공하는 인기 있는 타사 모듈입니다. 저장에서 직접 다음 모듈을 설치합니다.

  • Brotli
  • Encrypted-Session
  • FIPS Status Check
  • GeoIP2
  • Headers-More
  • HTTP Substitutions Filter
  • Lua
  • NGINX ModSecurity WAF
  • NGINX Developer Kit
  • Open Tracing
  • Phusion Passenger
  • Prometheus-njs
  • RTMP
  • Set-Misc
  • SPNEGO

커뮤니티 동적 모듈 – NGINX 커뮤니티의 타사 구성원이 작성 및 배포한 모듈입니다. 작성자의 저장소에서 소스 코드를 다운로드하고 NGINX Plus 버전에 해당하는 NGINX 오픈 소스 버전과 비교하여 컴파일합니다. 목록은 NGINX Wiki를 참조하십시오.

1-1. 공식 저장소에서 동적 모듈 설치

NGINX 인증 동적 모듈은 모듈 저장소에서 직접 설치할 수 있습니다.

  • For Amazon Linux, CentOS, Oracle Linux, and RHEL:
$ yum install <MODULE-NAME>
  • For Debian and Ubuntu:
$ apt-get install <MODULE-NAME>
  • For FreeBSD:
$ pkg install <MODULE-NAME>
  • For SLES:
$ zypper install <MODULE-NAME>
  • For Alpine Linux:
$ sudo apk add <MODULE-NAME>

특정 OS 버전에서는 OS 제한 때문에 일부 모듈을 사용할 수 없습니다. 모듈에 대한 자세한 설명과 자세한 내용은 NGINX Plus 기술 사양을 참조하십시오.

모듈을 설치한 후에는 NGINX Plus 구성 파일에서 모듈을 활성화해야 합니다. 자세한 내용은 동적 모듈 사용을 참조하십시오.

1-2. NGINX 커뮤니티 모듈 설치

커뮤니티 동적 모듈이 NGINX Plus와 함께 작동하려면 해당 NGINX 오픈 소스 버전과 함께 컴파일해야 합니다.

1. 빌드 환경을 준비합니다.

“빌드 환경”이라고 하는 별도의 시스템에서 동적 모듈을 컴파일하는 것이 좋습니다. 이렇게 하면 NGINX Plus를 업그레이드하려는 시스템의 위험과 복잡성이 최소화됩니다(이를 “프로덕션 환경”이라고 합니다). 빌드 환경은 다음 요구 사항을 충족해야 합니다.

  • 프로덕션 환경과 동일한 운영 체제
  • 프로덕션 환경과 동일한 NGINX 버전
  • 컴파일러 및 make 유틸리티
  • PCRE library (개발 파)
  • Zlib compression libraries (개발 파일)

빌드 환경에 이러한 필수 구성 요소가 설치되어 있는지 확인하려면 적절한 명령을 실행합니다.

  • For Debian and Ubuntu:
$ sudo apt-get install gcc make libpcre3-dev zlib1g-dev
  • For CentOS, Oracle Linux, and RHEL:
$ sudo yum install gcc make pcre-devel zlib-devel

2. NGINX 오픈 소스를 가져옵니다.

NGINX Plus 버전에 해당하는 NGINX 오픈 소스 버전을 식별합니다. NGINX Plus 릴리스를 참조하십시오.

적절한 NGINX 오픈 소스 메인 라인 버전(이 경우 1.21.6)에 대한 소스를 다운로드합니다.

$ wget -qO - https://nginx.org/download/nginx-1.21.6.tar.gz | tar zxfv -

3. 다이내믹 모듈의 소스를 가져옵니다.

동적 모듈의 소스 코드는 빌드 환경의 모든 디렉토리에 배치될 수 있습니다. 예를 들어, 여기서는 GitHub에서 NGINX “Hello World” 모듈을 복사합니다.

$ git clone https://github.com/perusio/nginx-hello-world-module.git

4. 동적 모듈을 컴파일합니다

먼저 -with-compat 옵션으로 configure 스크립트를 실행하여 이진 호환성을 설정합니다. 그런 다음 make module로 모듈을 컴파일합니다.

$ cd nginx-1.21.6/
$ ./configure --with-compat --add-dynamic-module=../<MODULE-SOURCES>
$ make modules

빌드 프로세스에서 생성된 .so 파일이 objs 하위 디렉토리에 배치됩니다.

$ ls objs/*.so
objs/ngx_http_hello_world.so

5. 동적 모듈 파일의 복사본을 만들고 파일 이름에 NGINX 오픈 소스 버전을 포함합니다. 따라서 프로덕션 환경에서 여러 버전의 동적 모듈을 더 쉽게 관리할 수 있습니다.

$ cp objs/ngx_http_hello_world.so ./ngx_http_hello_world_1.21.6.so

1-3. 동적 모듈 활성화

동적 모듈은 NGINX Plus 설치 시 자동으로 생성되는 /etc/nginx/modules 디렉토리에 있습니다.

1. /etc/nginx/nginx.conf의 기본(최상위) 컨텍스트에서 설치한 동적으로 로드 가능한 각 모듈에 대해 load_module 지시어를 추가합니다.

load_module modules/<MODULE-NAME>.so;

2. 새 구성의 구문 유효성을 확인하고 NGINX Plus를 다시 로드합니다.

$ nginx -t && nginx -s reload

/etc/nginx/nginx.conf의 기본(최상위) 컨텍스트에서 설치한 동적으로 로드 가능한 각 모듈에 대해 load_module 지시문을 추가합니다.

2. NGINX Plus 권한 없는 설치

일부 환경에서는 보안 제한으로 인해 루트 계정에 대한 액세스가 제한됩니다. 리눅스 운영 체제를 사용하는 경우 루트 권한 없이 NGINX Plus 설치를 위한 패키지 관리자를 실행할 수 없습니다.

해결 방법으로 이러한 환경에서 NGINX Plus는 루트가 아닌 사용자에서 실행하도록 NGINX Plus 구성 파일을 수정하는 특수 스크립트와 함께 설치할 수 있습니다. 스크립트는 또한 다음을 수행합니다.

  • NGINX Plus 패키지 다운로드
  • 아카이브의 내용을 패키지의 사용자 정의 폴더로 추출합니다.
  • NGINX 구성 파일의 사용자 폴더에 대한 경로를 사용자 정의 폴더의 상대 경로로 변경
  • 구성 디렉토리의 백업 복사본을 만듭니다.
  • NGINX Plus의 기존 권한 없는 설치를 업그레이드할 수 있는 옵션이 있습니다.

NGINX Plus의 일반 설치와 비교하여 권한 없는 설치에는 몇 가지 제한 사항이 있습니다.

  • 1024 미만의 포트에서 수신하려면 루트 권한이 여전히 필요합니다.
  • 스크립트는 운영 체제의 패키지 관리자를 대체하지 않습니다. 또한 NGINX Plus 및 해 모듈을 제외한 다른 소프트웨어 설치도 허용하지 않습니다. 다른 설치를 위해 수정된 스크립트는 지원 프로그램에서 다루지 않습니다.
  • NGINX Plus가 자동으로 시작되지 않으므로 호스트에서 권한이 없는 설치를 수행할 때마다 사용자 지정 init script/systemdunit 파일을 추가해야 합니다.
  • NGINX Plus 바이너리 및 해당 모듈에 필요한 모든 종속성 및 라이브러리는 자동으로 설치되지 않으므로 수동으로 확인하고 설치해야 합니다.

스크립트는 다음 운영 체제에서 실행할 수 있습니다.

  • RedHat/CentOS
  • Amazon Linux, Amazon Linux 2
  • Debian, Ubuntu
  • Alpine Linux

권한 없는 설치를 시작하기 전에 전제 조건 섹션에 나열된 모든 필수 구성 요소(루트 권한 제외)가 있는지 확인하십시오. RPM 기반 배포의 경우 rpm2cpio가 설치되어 있는지 확인합니다.

NGINX Plus의 권한 없는 설치 수행 방법:

1. 스크립트를 가져옵니다.

$ wget https://raw.githubusercontent.com/nginxinc/nginx-plus-install-tools/main/ngxunprivinst.sh

2. 스크립트를 실행 가능 상태로 만듭니다.

$ chmod +x ngxunprivinst.sh

3. 운영 체제용 NGINX Plus 및 해당 모듈 패키지를 다운로드 합니다. <cert_file> 및 <key_file>은 이메일로 제공되는 NGINX Plus 인증서 및 개인 키입니다.

$ ./ngxunprivinst.sh fetch -c <cert_file> -k <key_file>

NGINX Plus의 특정 버전을 설치해야 하는 경우:

  • 먼저 저장소에서 사용 가능한 모든 NGINX Plus 버전을 나열합니다.
$ ./ngxunprivinst.sh list -c <cert_file> -k <key_file>
  • 그런 다음 -v 옵션을 사용하여 특정 NGINX Plus 버전을 지정합니다.
$ ./ngxunprivinst.sh fetch -c <cert_file> -k <key_file> -v <version>

4. 다운로드한 패키지를 제공된 NGINX Plus 접두사로 추출합니다. 선택적 -y 옵션은 기존 설치를 덮어씁니다(있는 경우).

$ ./ngxunprivinst.sh install [-y] -p <path> <file1.rpm> <file2.rpm>

5. 설치 절차가 완료되면 NGINX Plus를 실행합니다. -p 매개 변수는 nginx 파일을 보관하는 디렉터리의 경로를 설정합니다. -c 매개 변수는 대체 NGINX 구성 파일의 경로를 설정합니다. NGINX Plus는 1024 이상의 포트를 수신해야 합니다.

$ <path>/usr/sbin/nginx -p <path>/etc/nginx -c <path>/etc/nginx/conf.d

이 스크립트를 사용하면 제공된 NGINX Plus의 기존 권한 없는 설치를 업그레이드할 수도 있습니다. 선택적 -y 옵션은 확인 없이 강제 업그레이드를 수행합니다.

$ ./ngxunprivinst.sh upgrade [-y] -p <path> <file1.rpm> <file2.rpm>