nginx server names

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;