NGINX Plus 릴리스 14(R14)가 이제 NGINX Plus 구독자에게 제공되어 기쁩니다. NGINX Plus는 로드 밸런서, 콘텐츠 캐시, 웹 서버를 모두 갖춘 유일한 제품입니다. NGINX 오픈 소스를 기반으로 하며, 수상 경력에 빛나는 24시간 지원 과 함께 독점적인 기능이 추가되었습니다. NGINX Plus R14 에는 새로운 보안 및 클러스터링 기능이 향상되었습니다.
NGINX Plus를 사용하면 JSON 웹 토큰(JWT)을 사용하여 액세스 제어를 적용할 수 있습니다. NGINX Plus R14에서는 중첩된 JWT 클레임에 대한 지원이 추가되어 JWT 내부에 중첩된 그룹 멤버십 정보를 기반으로 액세스를 허용하거나 거부할 수 있습니다. NGINX Plus R10 에서 처음 도입된 기본 JWT 인증 지원을 통해 NGINX Plus를 API 및 애플리케이션에 대한 인증 게이트웨이로 사용할 수 있습니다.
추가 NGINX Plus R14 기능은 다음과 같습니다.
스트림
컨텍스트에서 TCP 및 UDP 애플리케이션으로 확장되었습니다.upstream_conf
및 status
지시어로 활성화)의 API는 NGINX Plus R13 부터 더 이상 사용되지 않습니다. 이는 R14에 포함된 업데이트된 라이브 활동 모니터링 대시보드 에서 사용되는 새로운 NGINX Plus API 로 대체되었습니다.API와 마이크로서비스를 배포하는 사람들은 단순성과 유연성을 위해 JSON 웹 토큰(JWT, "조트"로 발음) 표준을 선택하고 있습니다. JWT는 신원 정보를 교환하는 간편하고 휴대성이 뛰어난 수단입니다. Okta, OneLogin 및 자체 솔루션을 포함한 다양한 발급자로부터 JWT를 얻을 수 있습니다. NGINX Plus는 사용자나 API 클라이언트가 유효한 JWT를 제시했는지 여부에 따라 액세스를 허용하거나 거부할 수 있습니다.
NGINX Plus R14에서는 중첩된 JWT 클레임과 배열 데이터에 대한 지원이 추가되었으며, JWT 서명 알고리즘에 대한 더 긴 키 크기도 추가되었습니다. 이를 통해 JWT를 검증할 때 더 많은 유연성과 보안이 제공됩니다.
JWT 페이로드에는 그룹 멤버십과 같은 사용자에 대한 추가적인 "중첩" 정보가 포함될 수 있으며, 이는 리소스에 대한 액세스를 승인하는 데 사용될 수 있습니다. 이렇게 하면 사용자 요청에 대한 권한을 부여하기 위해 데이터베이스를 여러 번 쿼리할 필요가 없습니다.
다음 JWT 페이로드를 고려해 보세요.
{ "exp": 1513429677,
"sub": "xample@example.com",
"aud": "nginx",
"속성": {
"이름": "Xavier Ample",
"방": "A123",
"부서": "데모"
},
"그룹": [
"관리자",
"Foobar",
"Bazpub"
]
}
위 JWT에서 properties
는 "중첩된 클레임" 객체이고 groups는
배열입니다. 다음 구성 스니펫을 사용하면 속성
개체의 이름
값을 백엔드로 전달하고 관리자
그룹에 속하지 않은 사용자의 액세스를 거부할 수 있습니다.
auth_jwt_claim_set $jwt_groups groups; # 배열 값은 쉼표로 구분된 값으로 결합됩니다.auth_jwt_claim_set $jwt_real_name 속성 이름; # 이 값은 두 단계 깊이입니다.
map $jwt_groups $isAdmin {
"~\bAdministrator\b" 1; # CSV 목록의 단어 경계(\b) 내에 나타납니다.
default 0;
}
server {
listen 443 ssl;
#ssl_*; # SSL/TLS 종료 구성
auth_jwt "closed site";
auth_jwt_key_file jwk.json;
location / {
proxy_set_header X-RealName $jwt_real_name; # 실제 이름을 헤더로 전달
proxy_set_header X-Subject $jwt_claim_sub; # L1 클레임이 자동으로 설정됨
proxy_pass http://my_backend;
}
location /admin {
if ( $isAdmin = 0 ) {
return 403; # 금지됨
}
proxy_pass http://my_backend;
}
}
이 구성의 작동 방식에 대한 자세한 내용은 다음과 같습니다.
auth_jwt_claim_set
지시어를 사용하여 $jwt_groups
NGINX 변수를 JWT에 정의된 그룹
배열로 설정합니다. 배열의 값은 쉼표로 구분되어 $jwt_groups
에 할당됩니다.맵
지침을 사용하여 그룹 목록에서 Administrator
키워드를 검색합니다. 이 값이 존재하면 사용자는 관리자로 간주되고 $isAdmin이
1로 설정됩니다. 그렇지 않으면 $isAdmin은
0으로 설정됩니다.위치
블록은 $isAdmin
변수를 확인합니다. 0이면 NGINX는 상태 코드를 반환합니다. 403
금지됨
고객에게 다시 전달합니다.NGINX Plus R14를 사용하면 중첩된 JWT 클레임에서 변수를 생성할 수도 있습니다. 그런 다음 변수를 백엔드 서버로 프록시하기 전에 HTTP 헤더에 넣을 수 있습니다.
위의 예에서 auth_jwt_claim_set
지시어를 사용하여 $jwt_real_name
NGINX 변수를 속성
클레임 내의 이름
개체 값으로 설정합니다. proxy_set_header
지시어는 X-RealName
HTTP 헤더를 이름
개체의 값으로 설정하고 요청을 my_backend
로 프록시합니다.
NGINX Plus로 JWT를 인증하는 데 사용할 수 있는 모든 구성 지침에 대한 자세한 내용은 참조 문서를 확인하세요.
NGINX Plus R14는 이제 더 강력한 서명 검증을 제공하고 기본적으로 더 긴 서명 키를 사용하는 IAM(ID 및 액세스 관리) 제품과의 통합을 더 쉽게 만들어주기 위해 256비트, 384비트, 512비트 서명 키를 지원합니다. 더 긴 서명 키는 지원되는 모든 서명 알고리즘에 사용할 수 있습니다.
예를 들어, NGINX Plus R14를 RS512 알고리즘으로 서명된 JSON 웹 토큰만 허용하도록 구성할 수 있습니다.
서버 { listen 443 ssl;
#ssl_*; # SSL/TLS 종료를 위한 구성
auth_jwt "closed site";
auth_jwt_key_file jwk.json;
location / {
if ( $jwt_header_alg != RS512 ) {
return 401;
}
proxy_pass http://my_backend;
}
}
이 경우 NGINX Plus는 JWT가 RS512 알고리즘으로 서명되지 않은 경우 요청을 프록시하지 않고 상태 코드를 반환합니다. 401
허가받지 않음
요청을 한 클라이언트에게.
메모 : JWT 지원은 NGINX Plus에서만 제공됩니다.
NGINX Plus R13은 HTTP용 키-값 저장소 모듈을 도입하여 하나 이상의 공유 메모리 영역에서 키-값 쌍을 즉시 생성, 수정 및 제거할 수 있게 되었습니다. 키‑값 저장소 API의 훌륭한 사용 사례 중 하나는 fail2ban과 함께 사용하여 동적 IP 거부 목록을 만드는 것 입니다.
NGINX Plus R14는 Stream에 대한 키‑값 저장소 모듈을 추가하여 HTTP 앱과 마찬가지로 TCP 및 UDP 애플리케이션에서도 동일한 키‑값 쌍 기능을 사용할 수 있게 되었습니다.
스트림
컨텍스트에서 키-값 저장소를 동적으로 재구성하는 기능은 NGINX Plus API 의 일부로 NGINX Plus R14 에 구현되어 있습니다.
메모 : 키-값 저장소와 API는 NGINX Plus에서만 제공됩니다.
NGINX JavaScript 모듈(이전에는 nginScript라고 함)은 NGINX Plus용 JavaScript 기반 스크립팅 언어입니다. NGINX Plus R14 에서는 NGINX JavaScript의 기능이 확장되어 프로그래밍 가능성이 더욱 향상되었습니다. 업데이트된 NGINX JavaScript 동적 모듈 패키지는 다음과 같은 새로운 향상된 기능을 제공합니다.
JavaScript JSON 객체는 이제 NGINX JavaScript의 네이티브 객체로 사용할 수 있습니다. 이를 통해 복잡한 데이터 구조를 관리하는 보다 편리한 방법이 제공되고, NGINX JavaScript가 백엔드 API에서 수신한 JSON 응답을 구문 분석하고 조작할 수도 있습니다.
다음 njs
셸 예제는 내장 객체 구문을 사용하여 JSON 데이터를 구문 분석하고 추출하는 방법을 보여줍니다.
$ 뉴저지interactive njscript
v.<Tab> -> v의 속성 및 프로토타입 메서드.
자세한 내용은 console.help()를 입력하세요.
>> var my_data = '{"colors":[{"name":"red","fancy":"brick dust"}, {"name":"blue","fancy":"sea spray"}]}';
>> var my_object = JSON.parse(my_data);
>> 내 객체.색상[1].멋진;
바다 스프레이
>>
가장 인기 있는 서버 측 JavaScript 구현인 Node.js는 OS 파일 시스템에 액세스하기 위한 기본 제공 메서드를 제공합니다(클라이언트 측 JavaScript는 파일 시스템 액세스를 허용하지 않습니다). NGINX Plus R14를 사용하면 이제 NGINX JavaScript에서 Node.js 파일 시스템 메서드를 사용하여 파일을 읽고 쓸 수 있으므로 애플리케이션 제공 워크플로를 사용자 정의할 수 있습니다. 다음 작업이 허용됩니다.
fs.readFile
, fs.readFileSync
fs.writeFile
, fs.writeFileSync
fs.appendFile
, fs.appendFileSync
이 NGINX JavaScript 셸 예제는 NGINX JavaScript를 사용하여 파일 내용을 변수로 읽는 방법을 보여줍니다.
$ 뉴저지interactive njscript
v.<Tab> -> v의 속성 및 프로토타입 메서드.
자세한 내용은 console.help()를 입력하세요.
>> fs가 필요합니다.
>> var tz = fs.readFileSync('/etc/timezone');
>> 츠
유럽/런던
>>
개발자의 디버깅 및 문제 해결을 더욱 지원하기 위해 이제 광범위한 오류 객체를 사용할 수 있습니다.
오류
평가오류
내부 오류
범위 오류
참조 오류
구문 오류
유형 오류
URI 오류
또한 NGINX JavaScript는 이제 오류 및 예외에 대한 백트레이스를 제공합니다. 오류 로그의 다음 항목은 실패한 시스템 작업에 대한 간단한 역추적을 보여줍니다.
2017/12/12 01:52:08 [오류] 43441#43441: *10 js 예외: 오류: 해당 파일 또는 디렉토리가 없습니다. native (native)
at my_function (:1)
at main (native)
, 클라이언트: 127.0.0.1, 서버: , 요청: "GET / HTTP/1.1", 호스트: "localhost:80"
블로그에서 NGINX JavaScript<.htmla>를 시작하는 방법을 알아보세요.
NGINX Plus R13은 JSON 형식으로 실시간 모니터링 및 측정 항목에 대한 액세스를 제공하는 NGINX Plus API를 도입했습니다. NGINX Plus R14 에서는 내장된 라이브 활동 모니터링 대시보드가 이제 NGINX Plus API를 사용하여 사용자에게 80개 이상의 모니터링 지표를 실시간으로 제공합니다.
이전 버전의 NGINX Plus에서 대시보드에 사용되었던 동적 재구성 및 확장 상태 API는 더 이상 지원되지 않습니다. 이 릴리스에서는 API를 계속 사용할 수 있으며 NGINX Plus R15 에 포함될 예정입니다. NGINX Plus R16 에서는 이러한 기능이 완전히 제거되므로 지금 당장 구성을 업데이트하는 것이 좋습니다.
더 이상 사용되지 않는 대시보드의 구성은 다음과 같습니다.
location /status { # DEPRECATED status; # DEPRECATED
# 'allow' 및 'deny'와 같은 액세스를 제어하는 지시문
}
location = /status.html { # DEPRECATED
root /usr/share/nginx/html; # DEPRECATED
}
기존 NGINX Plus 인스턴스를 새 NGINX Plus 대시보드로 마이그레이션하려면 이전 스니펫을 다음으로 바꾸세요.
location /api { api write=on;
# 'allow' 및 'deny'와 같은 액세스를 제어하는 지시문
}
location = /dashboard.html {
root /usr/share/nginx/html;
}
# 이전 대시보드로 보낸 리디렉션 요청
location = /status.html {
return 301 /dashboard.html;
}
스니펫에서 볼 수 있듯이, allow
및 deny
명령어 등을 사용해 API에 대한 액세스를 제한하는 것이 좋습니다. 기존 액세스 제어를 /status
위치에서 /api
위치로 마이그레이션해야 합니다.
새로운 NGINX Plus API 에 대한 자세한 내용은 NGINX Plus R13 발표를 참조하세요.
메모 : 내장 대시보드는 NGINX Plus에서만 제공됩니다.
서버를 오프라인으로 전환하면 기존 세션은 완료되고 새로운 세션이 설정되는 것은 방지하여 사용자 경험을 개선할 수 있습니다. 서버는 활성 세션이 더 이상 남아 있지 않을 때까지 오프라인으로 전환되지 않습니다. 이를 서버 드레이닝 이라고 합니다. NGINX Plus API를 사용하면 {"drain":true}
를 포함하는 PATCH
요청을 해당 서버의 API 리소스에 전송하여 이를 동적으로 수행할 수 있습니다.
NGINX Plus R14는 업스트림 서버
지시문에 drain
매개변수를 제공하여 이 기능을 파일 기반 구성으로 확장합니다.
업스트림 my_backend { 서버 10.0.0.1;
서버 10.0.0.2;
서버 10.0.0.3 드레인;
}
NGINX Plus 구성을 다시 로드하면 IP가 10.0.0.3인 업스트림 서버가 드레이닝 모드로 전환됩니다. 나중에 해당 server
명령어를 제거하거나 draining
매개변수를 down
으로 바꿔서 서버를 완전히 해제할 수 있습니다.
NGINX Plus R14 에서는 NGINX Plus 인스턴스 클러스터에서 상태를 공유하는 기능에 대한 기술 미리보기를 발표하게 되어 기쁩니다. 기술 미리보기에서는 세션 지속성의 스티키 러닝 방법을 구현하여 각 인스턴스에서 개별적으로 관리해야 하는 세션 데이터를 공유하는 이점을 보여줍니다.
기술 미리보기는 별도로 설치 가능한 패키지로 제공되며 요청 시 이용 가능합니다. 접속에 대해서는 NGINX 영업 담당자에게 문의하세요.
참고사항:
메모 : 클러스터링 지원과 스티키 러닝 세션 지속성은 모두 NGINX Plus에서만 제공됩니다.
NGINX Plus R14 에는 다음과 같은 향상된 기능도 포함되어 있습니다.
서버
지시문의 매개변수로 호스트 이름이나 도메인을 사용하는 것입니다. DNS는 주기적으로 이름을 확인하고 NGINX Plus는 자동으로 수정된 서버 세트를 사용합니다( NGINX Plus 관리자 가이드 참조). 이제 NGINX Plus는 NGINX Plus를 다시 로드하는 동안 호스트 이름이나 도메인 이름에 대한 DNS 레코드를 유지합니다. 이전에는 이름을 다시 로드한 후 다시 확인해야 했기 때문에 확인이 완료되기 전에 도착한 요청은 처리할 수 없었습니다.$ssl_client_escaped_cert
변수는 새로운 내장 NGINX 변수로, 클라이언트 인증서를 HTTP 헤더에 인코딩하여 백엔드 애플리케이션으로 보낼 수 있는 안전하고 편리한 방법을 제공합니다. 변수는 URL로 인코딩되었습니다.NGINX Plus R14 에는 클라이언트 애플리케이션을 위한 향상된 인증 기능, 추가 클러스터링 기능, NGINX JavaScript 기능 향상 및 주요 버그 수정이 포함되어 있습니다. 특히, NGINX Plus R13은 오래된 작업자 프로세스가 무기한으로 상태 검사를 수행할 수 있는 활성 상태 검사 버그를 도입했습니다. 이 문제는 NGINX Plus R14 에서 해결되었습니다.
NGINX Plus를 사용하고 계시다면 가능한 한 빨리 릴리스 14로 업그레이드하시기 바랍니다. 여러 가지 수정 사항과 개선 사항을 적용할 수 있으며, 업그레이드하면 지원 티켓을 제출해야 할 때 NGINX에서 도움을 받는 데 도움이 됩니다. 설치 및 업그레이드 지침은 고객 포털 에서 확인하실 수 있습니다.
업그레이드를 진행하기 전에 이 블로그 게시물에 설명된 새로운 기능 과 동작의 변경 사항 을 주의 깊게 검토하세요.
NGINX Plus를 사용해보지 않으셨다면 웹 가속, 부하 분산, 애플리케이션 전송을 위해 사용하거나 향상된 모니터링 및 관리 API를 갖춘 완벽하게 지원되는 웹 서버로 사용해보시기 바랍니다. 오늘 30일 평가판을 통해 무료로 시작해보세요. NGINX Plus가 어떻게 귀하의 애플리케이션을 제공하고 확장하는 데 도움이 될 수 있는지 직접 확인해 보세요.
"이 블로그 게시물에는 더 이상 사용할 수 없거나 더 이상 지원되지 않는 제품이 참조될 수 있습니다. 사용 가능한 F5 NGINX 제품과 솔루션에 대한 최신 정보를 보려면 NGINX 제품군을 살펴보세요. NGINX는 이제 F5의 일부가 되었습니다. 이전의 모든 NGINX.com 링크는 F5.com의 유사한 NGINX 콘텐츠로 리디렉션됩니다."