NGINX Plus 릴리스 13(R13)이 모든 NGINX Plus 구독자에게 무료 업그레이드로 제공된다는 기쁜 소식을 전합니다. NGINX Plus는 NGINX 오픈 소스를 기반으로 구축된 웹 서버, 로드 밸런서, 콘텐츠 캐시를 결합한 제품입니다. NGINX Plus R13에는 동적 배포, 향상된 디버깅 기능, 향상된 보안 및 성능에 초점을 맞춘 새로운 기능이 포함되어 있습니다.
NGINX Plus R13은 다음에 대한 지원을 도입했습니다.
njs
대화형 셸은 JavaScript의 모든 내장 객체를 표시하는 콘솔을 제공합니다. 이러한 객체를 추가로 조사하여 각 객체에 사용 가능한 메서드와 기본형을 파악할 수 있습니다. 추가적인 개선 사항으로는 세션 지속성을 위한 스티키 학습 방법 개선, HTTP 트레일러 지원, HTTP 대체를 위한 새로운 타사 동적 모듈 등이 있습니다.
sticky_cookie_insert
지시어는 NGINX Plus R2에서 더 이상 사용되지 않으며, NGINX Plus R13에서 제거되었습니다.ModSecurity 모듈의 지시문이 더 이상 지원되지 않음 – ModSecurity의 SecRequestBodyInMemoryLimit
지시문이 더 이상 지원되지 않습니다. 고객은 ModSecurity 모듈이 NGINX 구성에서 정의한 요청 본문 처리를 따르기 때문에 이 지침을 안전하게 제거할 수 있습니다.
[ 편집자 - NGINX Plus용 NGINX ModSecurity WAF 모듈은 2022년 4월 1 일부로 공식적으로 판매 종료 되었으며 2024년 3월 31 일부로 수명 종료 로 전환됩니다. 자세한 내용은 블로그의 F5 NGINX ModSecurity WAF가 수명 종료로 전환 중입니다<.htmla>를 참조하세요.]
NGINX Plus R13에는 단일 엔드포인트로 통합된 새로운 REST API가 포함되어 있습니다. 이전 버전의 NGINX Plus에는 별도의 Upstream Conf 및 Extended Status API가 포함되었습니다. 새로운 API는 두 가지 기능을 결합하고 다양한 사용 사례에서 동적 구성을 위한 새로운 키-값 저장소 모듈도 지원합니다(아래의 키-값 저장소 섹션에서 설명).
NGINX Plus API를 활성화하려면 location
블록에 새로운 api
지시문을 포함하세요.
서버 { listen 80;
location /api {
api write=on;
# 권한이 있는 사용자만 접근할 수 있도록 허용하는 지시문
}
}
기본적으로 NGINX Plus API는 데이터에 대한 읽기 전용 액세스를 제공합니다. api
지시문에 write=on
매개변수를 추가하여 읽기/쓰기 액세스를 활성화하면 업스트림 서버와 새로운 키-값 저장소 모듈에 변경 사항을 적용할 수 있습니다. 특히 읽기/쓰기 모드가 활성화된 경우, API에 대한 액세스를 권한이 있는 사용자에게만 제한하는 것을 적극 권장합니다.
API 엔드포인트에서 사용할 수 있는 모든 유형의 정보를 보려면 다음 명령을 실행하세요.
$ curl http://localhost:80/api/1/ ["nginx", "프로세스", "연결", "ssl", "슬랩", "http", "스트림"]
특정 유형의 정보에 대한 세부 정보를 표시하려면 요청 URI에 적절한 문자열을 추가하세요.
연결
– 총 연결에 대한 메트릭 표시http
– HTTP 트래픽에 대한 메트릭 표시 및 HTTP 업스트림 구성 수정
http
에는 두 가지 "하위 유형"이 있습니다.
http/server_zones
– HTTP 가상 서버에 대한 정보 표시http/upstreams
– HTTP 업스트림 서버 그룹에 대한 정보를 표시하고 구성을 수정합니다.nginx
– NGINX에 대한 일반 정보 표시프로세스
- NGINX 작업자 프로세스에 대한 정보 표시slabs
– NGINX에서 할당한 공유 메모리에 대한 정보 표시ssl
– SSL/TLS 클라이언트에 대한 메트릭을 실시간으로 표시합니다.stream
– TCP/UDP 트래픽에 대한 메트릭 표시 및 TCP/UDP 업스트림 서버 그룹 구성 수정( stream/upstreams
에서)NGINX Plus는 NGINX 오픈 소스에서 사용 가능한 기능 외에도 40개 이상의 독점적인 지표를 보고합니다. 이제 NGINX Plus API를 사용하여 이러한 메트릭에 액세스할 수 있습니다. API를 사용하여 귀하에게 중요한 메트릭에 액세스하세요.
예를 들어 URI에 연결을
추가하여 연결 상태의 스냅샷을 출력합니다. 여기에는 허용된 클라이언트 연결, 활성 연결, 삭제된 연결, 유휴 연결 수가 포함됩니다.
$ curl http://localhost:80/api/1/connections {"승인됨":3,"중단됨":0,"활성":1,"유휴":0}
또 다른 예: URI에 ssl을
추가하면 SSL 클라이언트 통계의 스냅샷을 실시간으로 출력합니다.
$ curl http://localhost:80/api/1/ssl {"핸드셰이크":0,"핸드셰이크_실패":0,"세션_재사용":0}
NGINX Plus R12 및 이전 버전에서는 upstream_conf
지시어를 사용하면 NGINX Plus를 다시 로드하지 않고도 기존 업스트림 서버 그룹의 동적 구성을 활성화할 수 있었습니다. 이 기능은 이제 NGINX Plus API 에 통합되었습니다.
이 NGINX Plus 구성 스니펫은 백엔드 라는 업스트림 그룹에 두 개의 서버를 정의하고 /api 에서 NGINX Plus API를 활성화합니다.
업스트림 백엔드 { 존 백엔드 64k;
서버 10.10.10.2;
서버 10.10.10.4;
}
서버 {
수신 80;
서버 이름 www.example.org;
위치 /api {
api write=on;
}
}
백엔드 그룹에 서버를 추가하려면 /api/1/http/upstreams/backend/servers 에 대한 curl
요청에 -d
옵션을 포함해야 하며, 새 서버의 IP 주소(여기서는 10.10.10.6)를 정의하는 JSON 텍스트가 필요합니다. -i
옵션은 HTTP 헤더가 응답에 포함된다는 것을 의미합니다. (기본 메서드인 -X POST는
-d 옵션
에서 제외할 수 있지만, 다른 메서드와의 일관성을 위해 포함했습니다.)
$ curl -iX POST -d '{"server":"10.10.10.6"}' http://localhost/api/1/http/upstreams/backend/servers HTTP/1.1 201 생성됨 ...
업스트림 그룹을 구성하기 위한 모든 옵션에 대한 자세한 내용은 NGINX Plus API 모듈에 대한 참조 문서를 확인하세요.
NGINX Plus R13은 새로운 키-값 저장소 모듈을 도입했습니다. NGINX Plus API를 사용하면 하나 이상의 "keyval" 공유 메모리 영역에서 키-값 쌍을 즉석에서 생성, 수정 및 제거할 수 있습니다. 각 키‑값 쌍의 값은 다른 NGINX Plus 기능에서 사용할 수 있는 변수로 평가될 수 있습니다.
키‑값 저장소에서 항목을 추가, 수정, 읽기 및 삭제하려면 각각 POST
, PATCH
, GET
및 DELETE
HTTP 메서드를 사용합니다. 키-값 저장소는 외부 시스템과의 실시간 통합을 가능하게 하는 풍부한 동적 구성 솔루션을 제공합니다.
샘플 사용 사례는 다음과 같습니다.
다음 구성 스니펫은 키-값 저장소 모듈을 사용하여 웹사이트의 허영 URL을 관리합니다.
keyval_zone zone=redirects:1M state=state/redirects.json; # 키-값 쌍을 파일에 저장합니다.keyval $uri $target zone=redirects; # $uri는 키이고, $target은 값입니다.
server {
listen 80;
location /api {
api write=on; # NGINX Plus API를 활성화합니다(프로덕션 환경에서 이 위치를 보호합니다)
}
if ($target) { # 'redirects' 키값 영역에 $uri가 있는 경우 True
return 301 $target; # 클라이언트를 $uri에 맞는 값으로 리디렉션합니다.
}
location / {
proxy_pass http://backend;
}
}
keyval
지시문에서 키는 HTTP 요청을 발행한 원격 컴퓨터의 URI로 설정됩니다. $uri가
키‑값 저장소의 키인 경우, 키와 연관된 값은 $target
이라는 새 변수에 할당됩니다. 그런 다음 $target이
존재하면 NGINX Plus는 클라이언트를 $uri
와 일치하는 값으로 리디렉션합니다.
키-값 저장소를 초기 허영 URL로 채우려면 JSON으로 인코딩된 데이터를 NGINX Plus API 의 URI로 보냅니다.
$ curl -iX POST -d '{"/conf":"/conf2017"}' http://localhost/api/1/http/keyvals/redirects HTTP/1.1 201 생성됨 ...
이제 /conf를 요청하는 클라이언트는 /conf2017 로 리디렉션됩니다.
$ curl -i http://localhost/conf HTTP/1.1 301 일시적으로 이동됨 위치: http://localhost/conf2017
PATCH
메서드를 사용하면 키‑값 저장소에 더 많은 허영 URL 리디렉션을 추가하고 기존 항목을 동적으로 수정할 수 있습니다.
$ curl -iX PATCH -d '{"/conf":"/conf2018"}' http://localhost/api/1/http/keyvals/redirects HTTP/1.1 204 콘텐츠 없음 ...
keyval
지시문을 사용하여 각각에 대해 다른 공유 메모리 영역을 정의하여 여러 개의 별도 키‑값 저장소를 구성할 수 있습니다. 자세한 내용은 키-값 저장소 모듈에 대한 참조 문서를 확인하세요.
새로운 NGINX Plus API에는 API를 탐색하고 각 리소스의 기능을 이해하는 데 사용할 수 있는 Swagger 사양이 함께 제공됩니다. Swagger 문서는 NGINX Plus와 함께 제공되며 http:// nginx-host /swagger-ui/ 에서 접근할 수 있습니다.
Swagger UI의 상호작용 부분을 사용하려면 NGINX Plus API를 활성화해야 하며, 이는 conf.d/default.conf 파일에서 /api/ 위치 블록의 주석 처리를 제거하여 달성할 수 있습니다.
# NGINX Plus API를 활용하기 위해 적절한 액세스 제어로 /api/ 위치를 활성화합니다.
#
#location /api/ {
# api write=on;
# allow 127.0.0.1;
# deny all;
#}
https://demo.nginx.com/swagger-ui/ 에서 NGINX Plus API 설명서를 살펴볼 수도 있습니다.
메모: 확장된 상태 메트릭, 업스트림 구성 및 새로운 키-값 저장소 모듈을 포함한 전체 NGINX Plus API는 NGINX Plus에서만 제공됩니다.
NGINX Plus R13을 사용하면 HTTP 요청 미러링을 활성화할 수 있습니다. 이 기능을 사용하면 업스트림 그룹으로 프록시된 HTTP 요청이 복제되어 다른 대상으로도 전송됩니다. 원래 요청은 평소처럼 처리되지만 복제된 요청의 모든 응답은 무시됩니다. 요청 미러링에는 다음을 포함한 다양한 사용 사례가 있습니다.
요청 미러링을 활성화해도 전체 시스템 처리량과 성능에 미치는 영향은 미미합니다. 다음 구성 스니펫은 새 미러
지침을 사용하여 요청을 복제하고 별도의 업스트림 서버로 전달하는 방법을 보여줍니다.
위치 / { 미러 / 미러;
프록시 패스 http://백엔드;
}
위치 / 미러 {
내부;
프록시 패스 http://테스트 백엔드$요청_uri;
}
요청은 정기적인 처리를 위해 백엔드
업스트림 그룹으로 프록시됩니다. 또한 원래 요청의 URI를 유지하면서 test_backend 라는 별도의 업스트림 그룹에 복제되어 프록시됩니다.
메모: 요청 미러링은 원래 NGINX 오픈 소스 1.13.4에서 출시되었습니다.
NGINX Plus R12 에서 일반적으로 사용 가능해진 이후, NGINX JavaScript 모듈(이전 명칭 nginScript)은 핵심 JavaScript 언어 지원으로 계속 확장되었습니다. 이 릴리스에서는 16진수(예: 0x7b)와 과학적 표기법(예: 512e10)에 대한 지원이 추가되었습니다. Object
클래스의 기본 메서드도 구현되었습니다.
NGINX JavaScript는 이제 njs
명령으로 호출하는 대화형 셸도 제공하여 NGINX JavaScript 코드 개발을 지원합니다.
다음 셸 스니펫은 NGINX JavaScript 대화형 셸에 진입하고 최대 30초 이내의 난수 날짜를 생성하는 표현식을 정의하고 두 숫자의 합을 계산하는 방법을 보여줍니다.
$ njs 대화형 njscript >> Date.now() + Math.round(Math.random()*30*1000); 1500976350968 >> 0x7b + 512e10; 5120000000123 >>
자세한 내용은 블로그에서 NGINX JavaScript<.htmla> 소개를 참조하세요.
메모: NGINX JavaScript는 NGINX Open Source와 NGINX Plus에서 모두 사용할 수 있습니다.
NGINX 1.11.5와 NGINX Plus R11에서는 NGINX 자체와 독립적으로 동적 모듈을 컴파일하는 기능이 지원되었습니다. 이를 통해 NGINX 및 NGINX Plus 사용자는 NGINX, Inc. 저장소의 공식 빌드를 사용하고 필요한 동적 모듈만 로드할 수 있습니다.
NGINX Plus R13에서는 기본 NGINX 버전과의 종속성을 유지하고 존중하는 설치 가능한 모듈로 동적 모듈을 컴파일하고 패키징하기 위한 빌드 도구를 제공합니다.
빌드 도구에 대한 자세한 내용은 블로그의 동적 모듈에 대한 설치 가능 패키지 만들기를 참조하세요.
메모: 빌드 도구는 NGINX Open Source와 NGINX Plus에서 모두 사용할 수 있습니다.
세션 지속성은 NGINX Plus 로드 밸런싱의 매우 유용한 기능으로, 특정 클라이언트의 모든 요청을 하나의 서버로 보낼 수 있습니다. 세션 지속성을 구축하는 방법은 여러 가지가 있습니다. "스티키 러닝" 방법을 사용하면 NGINX Plus는 특정 쿠키의 존재 여부를 찾고 해당 쿠키가 요청에 포함될 때마다 클라이언트를 동일한 서버에 고정합니다.
NGINX Plus R13을 사용하면 전체 응답 페이로드가 도착할 때까지 기다릴 필요 없이, 업스트림 서버에서 응답 헤더를 보내자마자 스티키 세션을 설정할 수 있습니다. 따라서 NGINX Plus는 가능한 한 빨리 클라이언트에 스티키 세션을 전송할 수 있습니다. 새로운 헤더
매개변수를 스티키
학습
지시문에 포함합니다.
업스트림 백엔드 { 존 백엔드 64k;
서버 10.10.10.2;
서버 10.10.10.4;
sticky learn create=$upstream_cookie_sessionid
lookup=$cookie_sessionid
존=client_sessions:1m
헤더;
}
헤더
매개변수는 애플리케이션에 오류가 발생하기 쉽고 클라이언트가 실패한 요청을 동일한 업스트림 서버로 다시 보내도록 하려는 경우에 특히 유용합니다.
메모: Sticky‑learn 세션 지속성은 NGINX Plus에서만 제공됩니다.
NGINX Plus R13은 다음과 같은 추가 기능을 도입했습니다.
add_trailer
지시어를 사용하면 임의의 트레일러를 HTTP 응답 끝에 추가할 수 있습니다. 트레일러 응답 헤더를 사용하면 보낸 사람이 청크 분할 메시지의 끝에 추가 필드를 포함하여 메시지 본문이 전송되는 동안 동적으로 생성될 수 있는 메타데이터(예: 메시지 무결성 검사 또는 디지털 서명)를 제공할 수 있습니다.worker_shutdown_timeout
지시문을 사용하여 작업자 프로세스의 우아한 종료를 더 빨리 완료할 수 있는 시간 제한을 설정합니다. 종료 또는 재시작 신호를 수신한 후 시간 초과가 만료되면 NGINX Plus는 열려 있는 모든 클라이언트 연결을 닫으려고 시도합니다.NGINX Plus를 실행 중이라면 가능한 한 빨리 릴리스 13으로 업그레이드하는 것을 적극 권장합니다. 여러분은 많은 수정 사항과 개선 사항을 접하게 될 것이고, 여러분이 지원 티켓을 제출해야 할 경우 우리가 여러분을 도울 수 있을 것입니다. 설치 및 업그레이드 지침은 고객 포털 에서 확인할 수 있습니다.
업그레이드를 진행하기 전에 이 블로그 게시물에 설명된 새로운 기능 과 동작의 변경 사항 을 주의 깊게 검토하세요.
NGINX Plus를 사용해보지 않으셨다면 웹 가속, 부하 분산, 애플리케이션 전송을 위해 사용해보세요. 아니면 향상된 모니터링과 관리 API를 갖춘 완벽히 지원되는 웹 서버로 사용해보는 것도 좋습니다. 오늘부터 30일 평가판을 통해 무료로 시작하면서 NGINX Plus가 애플리케이션을 제공하고 확장하는 데 어떻게 도움이 될 수 있는지 직접 확인하세요.
"이 블로그 게시물에는 더 이상 사용할 수 없거나 더 이상 지원되지 않는 제품이 참조될 수 있습니다. 사용 가능한 F5 NGINX 제품과 솔루션에 대한 최신 정보를 보려면 NGINX 제품군을 살펴보세요. NGINX는 이제 F5의 일부가 되었습니다. 이전의 모든 NGINX.com 링크는 F5.com의 유사한 NGINX 콘텐츠로 리디렉션됩니다."