NGINX njs 스크립팅 언어
NGINX njs 는 JavaScript 언어의 하위 집합으로, nginx 기능을 확장합니다. njs는 ECMAScript 5.1(엄격한 모드)을 준수하여 개발되었으며, ECMAScript 6 이상 확장 프로그램을 사용합니다. 규정 준수 상태는 아직 발전 중입니다.
NGINX njs는 NGINX 서버에서 실행되는 JavaScript 기반의 스크립팅 언어로, 웹 애플리케이션의 동작을 확장하고 커스터마이즈하는 데 유용합니다. njs를 사용하면 요청 처리, 응답 수정, 비즈니스 로직 구현 등을 손쉽게 수행할 수 있으며, 비동기 프로그래밍을 지원하여 성능을 극대화할 수 있습니다.
TypeScript 정의 파일을 사용하여 NGINX의 njs 코드를 작성하는 것은 코드의 가독성과 유지보수성을 높이는 데 큰 도움이 됩니다.
njs는 NGINX의 JavaScript 확장으로, 서버 측에서 스크립트를 실행할 수 있게 해 줍니다. TypeScript 정의 파일을 통해 njs의 API에 대한 타입 정보를 제공하면, 개발자는 코드 작성 시 실수를 줄이고, IDE의 자동 완성 기능을 활용할 수 있습니다.
먼저, TypeScript 정의 파일을 설정하려면, njs API에 대한 타입 정보를 정의해야 합니다. 이를 위해 .d.ts 파일을 생성하고, njs의 각 함수와 객체에 대한 타입을 선언합니다. 이후, TypeScript로 작성한 코드를 njs 코드로 변환할 수 있습니다.
또한, TypeScript의 타입 검사 기능을 통해 런타임 오류를 사전에 방지할 수 있으며, 팀원 간의 협업에서도 일관된 코드 스타일을 유지할 수 있습니다. 이러한 접근 방식은 njs 개발의 생산성과 품질을 크게 향상시킵니다.
이에 대한 자세한 내용은 아래 포스트를 확인하세요.
사용 사례
- 요청이 업스트림 서버에 도달하기 전에 njs에서 복잡한 액세스 제어 및 보안 검사 처리
- 응답 헤더 조작
- 유연한 비동기식 콘텐츠 핸들러 및 필터 작성
기본 HTTP 예시
nginx에서 njs 사용:
- njs 스크립트 언어 설치
- njs 스크립트 파일 생성(예: http.js) njs 속성과 메서드 목록은 참고 자료를 참조하세요.
function hello(r) {
r.return(200, "Hello world!");
}
export default {hello};
- nginx.conf 파일에서 ngx_http_js_module 모듈을 활성화하고 http.js 스크립트 파일로 listening sockets 명령을 지정합니다.
load_module modules/ngx_http_js_module.so;
events {}
http {
js_import http.js;
server {
listen 8000;
location / {
js_content http.hello;
}
}
}
nginx와 별개로 njs 개발과 디버깅에 사용할 수 있는 독립적인 명령줄 유틸리티도 있습니다.
테스트된 OS 및 플랫폼
- FreeBSD / amd64;
- Linux / x86, amd64, arm64, ppc64el;
- Solaris 11 / amd64;
- macOS / x86_64;