NJS라고도 알려진 NGINX JavaScript는 익숙한 JavaScript 구문을 사용하여 내장 기능을 확장할 수 있는 NGINX용 동적 모듈입니다. NJS 언어는 ES5(ECMAScript 5.1 Strict Variant)와 일부 ES6(ECMAScript 6) 및 최신 확장을 준수하는 JavaScript의 하위 집합입니다. 자세한 내용은 호환성을 참조하세요.
NGINX JavaScript는 NGINX용 두 개의 동적 모듈(ngx_http_js_module 및 ngx_stream_js_module)로 제공되며 재컴파일 없이 지원되는 모든 NGINX 오픈 소스 또는 NGINX Plus 설치에 추가할 수 있습니다.
NJS 모듈을 사용하면 NGINX 관리자는 다음을 수행할 수 있습니다.
NJS로 개발된 예제와 다양한 프로젝트를 확인하세요:
NGINX Plus 기능을 확장하여 OIDC 호환 ID 공급자와 직접 통신하여 사용자를 인증하고 NGINX Plus에서 제공하는 콘텐츠를 승인합니다.
SAML 인증을 위한 서비스 공급자로서 NGINX Plus의 참조 구현입니다.
NGINX Plus에서 직접 Prometheus 메트릭 엔드포인트를 노출합니다.
팁
NJS는 NGINX 유닛 애플리케이션 서버와 함께 사용할 수도 있습니다. NGINX Unit의 Control API와 NJS로 함수 호출을 정의하는 방법에 대해 자세히 알아보세요.
사전 컴파일된 NGINX 및 NGINX JavaScript Linux 바이너리를 다운로드하고 설치하려면 다음 단계를 따르세요. 소스 코드에서 로컬로 모듈을 빌드하도록 선택할 수도 있습니다.
이 가이드에 따라 공식 NGINX 패키지 저장소를 시스템에 추가하고 NGINX 오픈 소스를 설치하세요. NGINX 오픈 소스 또는 NGINX Plus가 이미 설치되어 있는 경우 마지막 단계에서 NGINX 설치 부분을 건너뛰세요.
저장소가 프로비저닝되면 다음 명령을 실행하여 NJS를 설치할 수 있습니다.
sudo apt install nginx-module-njs
sudo yum install nginx-module-njs
sudo apk add nginx-module-njs@nginx
sudo zypper install nginx-module-njs
팁
패키지 저장소에는 디버그 기호를 활성화하는 대체 모듈이 포함되어 있습니다. 프로덕션 환경에는 권장되지 않지만 이 모듈은 NJS 기반 구성을 개발할 때 도움이 될 수 있습니다. 모듈의 디버그 버전을 다운로드하고 설치하려면 이전 명령의 모듈 이름을 nginx-module-njs-dbg
로 바꾸세요.
패키지 설치 스크립트는 NGINX http
및 stream
컨텍스트를 지원하는 두 개의 모듈을 설치합니다.
ngx_http_js_module
이 NJS 모듈을 사용하면 HTTP를 통해 전송된 데이터를 조작할 수 있습니다.
ngx_stream_js_module
이 NJS 모듈을 사용하면 TCP 및 UDP와 같은 스트림 프로토콜을 통해 전송된 데이터를 조작할 수 있습니다.
기본적으로 두 모듈은 모두 /etc/nginx/modules
디렉터리에 설치됩니다.
NJS 사용에는 모듈 활성화, 정의된 함수가 포함된 JavaScript 파일 추가, NGINX 구성 파일에서 내보낸 함수 호출이 포함됩니다.
NGINX JavaScript는 NGINX 오픈 소스 또는 NGINX Plus용 모듈입니다. 아직 설치하지 않았다면 다음 단계에 따라 NGINX 오픈 소스 또는 NGINX Plus를 설치하세요. 설치한 후에는 NGINX 인스턴스가 실행 중이고 HTTP 요청에 응답할 수 있는지 확인하세요.
NGINX를 시작하려면 다음 명령을 실행하십시오.
sudo nginx
curl -I 127.0.0.1
다음 응답이 표시됩니다.
HTTP/1.1 200 OK
Server: nginx/1.25.5
일단 설치되면 NJS 모듈 중 하나(또는 둘 다)가 NGINX 구성 파일에 포함되어야 합니다. 대부분의 시스템에서 NGINX 구성 파일은 기본적으로 /etc/nginx/nginx.conf
에 있습니다.
sudo vi /etc/nginx/nginx.conf
모듈 중 하나(또는 둘 다)를 활성화하려면 최상위 수준("기본") 컨텍스트에서 load_module 지시어를 사용합니다.
load_module modules/ngx_http_js_module.so;
load_module modules/ngx_stream_js_module.so;
NJS 스크립트 파일은 일반적으로 .js 확장자로 이름이 지정되며 /etc/nginx/njs/
디렉터리에 배치됩니다. 일반적으로 내보낸 함수로 구성되어 NGINX 구성 파일에서 사용할 수 있습니다.
NJS는 ECMAScript 정의의 일부가 아닌 관련 메서드 및 속성이 있는 개체 컬렉션을 제공합니다. 이러한 개체에 대한 전체 참조와 해당 개체를 사용하여 NGINX를 추가로 확장하고 사용자 정의하는 방법을 확인하세요.
다음은 기본적인 "Hello World" 예제입니다.
이 파일의 hello
함수는 "Hello World!" 문자열과 줄 바꿈이 뒤따르는 HTTP 200 OK 상태 응답 코드를 반환합니다. 그런 다음 NGINX 구성 파일에서 사용하기 위해 함수를 내보냅니다.
이 파일을 /etc/nginx/njs
디렉터리에 추가합니다.
function hello ( r ) {
r . return ( 200 , "Hello world!n" ) ;
}
export default { hello }
JavaScript 파일을 가져오고 특정 상황에서 기능을 실행하도록 NGINX 구성( /etc/nginx/nginx.conf
)을 수정합니다.
# Load the ngx_http_js_module module
load_module modules/ngx_http_js_module.so;
events {}
http {
# Set the path to our njs JavaScript files
js_path "/etc/nginx/njs/" ;
# Import our JavaScript file into the variable "main"
js_import main from http/hello.js;
server {
listen 80 ;
location / {
# Execute the "hello" function defined in our JavaScript file on all HTTP requests
# and respond with the contents of our function.
js_content main.hello;
}
}
}
njs 지시어의 전체 목록은 ngx_http_js_module 및 ngx_stream_js_module 모듈 설명서 페이지를 참조하세요.
팁
이에 대한 더 자세한 버전과 다른 예제는 공식 njs-examples 저장소에서 찾을 수 있습니다.
NGINX JavaScript는 명령줄 인터페이스 유틸리티와 함께 설치됩니다. 인터페이스는 대화형 셸로 열거나 사전 정의된 파일 또는 표준 입력에서 JavaScript 구문을 처리하는 데 사용할 수 있습니다. 유틸리티는 독립적으로 실행되므로 HTTP 및 Stream과 같은 NGINX 관련 개체는 런타임 내에서 사용할 수 없습니다.
$ njs
>> globalThis
global {
njs: njs {
version : '0.8.4'
} ,
global : [ Circular ] ,
process : process {
argv : [ '/usr/bin/njs' ] ,
env : {
PATH : '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin' ,
HOSTNAME : 'f777c149d4f8' ,
TERM : 'xterm' ,
NGINX_VERSION : '1.25.5' ,
NJS_VERSION : '0.8.4' ,
PKG_RELEASE : '1~buster' ,
HOME : '/root'
}
} ,
console : {
log : [ Function : native ] ,
dump : [ Function : native ] ,
time : [ Function : native ] ,
timeEnd : [ Function : native ]
} ,
print : [ Function : native ]
}
>>
$ echo " 2**3 " | njs -q
8
다음 단계를 사용하여 NGINX JavaScript를 NGINX에 통합할 동적 모듈로 빌드하거나 명령줄 인터페이스 유틸리티로 사용하기 위한 독립 실행형 바이너리로 빌드할 수 있습니다.
중요한
NGINX와 함께 사용할 모듈을 빌드하려면 이 문서에 설명된 단계에 따라 NGINX를 복제, 구성 및 빌드해야 합니다.
대부분의 Linux 배포판에서는 NGINX 및 NGINX JavaScript를 빌드하려면 여러 가지 종속성을 설치해야 합니다. 다음 지침은 대부분의 Ubuntu/Debian 배포판과 그 파생 배포판에서 널리 사용할 수 있는 apt
패키지 관리자에만 적용됩니다.
sudo apt install gcc make
sudo apt install libpcre3-dev zlib1g-dev libssl-dev libxml2-dev libxslt-dev
QuickJS로 빌드하려면 QuickJS 라이브러리도 빌드해야 합니다.
git clone https://github.com/bellard/quickjs
cd quickjs
CFLAGS= ' -fPIC ' make libquickjs.a
경고
이는 NGINX 및 NJS를 빌드하는 데 필요한 최소한의 종속성 라이브러리 세트입니다. 추가 모듈을 사용하여 NGINX를 빌드하려는 경우 다른 종속성이 필요할 수 있습니다. 누락될 수 있는 모듈에 대한 정보를 보려면 다음 섹션에서 설명하는 configure
명령의 출력을 모니터링하십시오.
선호하는 방법을 사용하여 NGINX JavaScript 저장소를 개발 디렉터리에 복제합니다. 추가 도움말은 GitHub 리포지토리 복제를 참조하세요.
https://github.com/nginx/njs.git
다음 단계는 선택 사항이며 NJS를 독립 실행형 유틸리티로 빌드하려는 경우에만 필요합니다.
NJS 대화형 셸을 사용하려면 libedit-dev 라이브러리를 설치해야 합니다.
sudo apt install libedit-dev
복제된 저장소의 루트 디렉터리에서 다음 명령을 실행합니다.
./configure
NGINX JavaScript 빌드:
make
이제
에서 유틸리티를 사용할 수 있습니다. 사용법에 대한 자세한 내용은 NJS 명령줄 인터페이스(CLI)를 참조하세요.
이전에 복제한 NJS 소스 저장소 외부 디렉터리에 NGINX 소스 코드 저장소를 복제합니다.
https://github.com/nginx/nginx.git
NGINX JavaScript를 동적 모듈로 빌드하려면 NGINX 소스 코드 저장소의 루트 디렉터리에서 다음 명령을 실행합니다.
auto/configure --add-dynamic-module= < NJS_SRC_ROOT_DIR > /nginx
QuickJS 지원으로 빌드하려면 --with-cc-opt=
및 --with-ld-opt=
옵션을 사용하여 포함 및 라이브러리 경로를 제공하십시오.
auto/configure --add-dynamic-module= < NJS_SRC_ROOT_DIR > /nginx --with-cc-opt= " -I" --with-ld-opt= " -L"
경고
기본적으로 이 방법은 ngx_http_js_module
모듈만 빌드합니다. NGINX 스트림 모듈과 함께 NJS를 사용하려면 configure
단계에서 이를 활성화하여 NGINX 바이너리로 빌드해야 합니다. 이렇게 하면 NJS가 빌드에 추가될 때 ngx_stream_js_module
모듈이 자동으로 컴파일됩니다. 이를 달성하는 한 가지 방법은 configure
단계를 다음과 같이 변경하는 것입니다.
auto/configure --with-stream --add-dynamic-module= < NJS_SRC_ROOT_DIR > /nginx
모듈 컴파일
make
팁
단일 바이너리에 포함된 NGINX JavaScript를 사용하여 NGINX를 빌드하려면 configure
단계를 다음과 같이 변경하세요.
auto/configure --add-module= < NJS_SRC_ROOT_DIR > /nginx
동적 모듈로 구축된 경우 NGINX JavaScript 모듈은
디렉터리에서 사용할 수 있습니다. 그런 다음 모듈을 기존 NGINX 설치에 복사하고 활성화할 수 있습니다. 자세한 내용은 NGINX JavaScript 모듈 활성화를 참조하세요.
또는 다음 명령을 실행하여 빌드된 NGINX 및 NGINX JavaScript 바이너리를 설치하도록 선택할 수 있습니다.
중요한
표준(동적이 아닌) 모듈로 NGINX 바이너리에 내장된 경우 이것이 가장 쉬운 설치 방법이 될 것입니다.
make install
기본적으로 NGINX 바이너리는 /usr/local/nginx/sbin/nginx
에 설치됩니다. NGINX JavaScript 모듈은 /usr/local/nginx/modules/
에 복사됩니다.
NJS의 기술 사양은 NGINX의 기술 사양과 동일합니다.
지원되는 배포판의 전체 목록은 테스트된 운영 체제 및 플랫폼을 참조하세요.
NGINX JavaScript는 nginx-1.14로 시작하는 모든 NGINX 오픈 소스 버전과 NGINX Plus R15로 시작하는 모든 NGINX Plus 버전에서 지원됩니다.
우리는 당신이 우리와 함께 참여하도록 권장합니다. 질문하고, 문제를 보고하고, 코드를 기여하는 방법에 대한 정보는 기여 가이드를 참조하세요.
업데이트를 추적하려면 릴리스 페이지를 참조하세요.
2절 BSD와 유사한 라이센스
추가 문서는 https://nginx.org/en/docs/njs/에서 확인할 수 있습니다.
©2024 F5, Inc. 모든 권리 보유. https://www.f5.com/products/nginx