F5 NGINX Plus 릴리스 34(R34)의 출시를 발표하게 되어 기쁩니다. NGINX 오픈 소스를 기반으로 하는 NGINX Plus는 유일한 올인원 소프트웨어 웹 서버, 로드 밸런서, 역방향 프록시, 콘텐츠 캐시 및 API 게이트웨이입니다.


NGINX Plus R34의 새롭고 향상된 기능은 다음과 같습니다.

NGINX 사용 보고에 대한 정방향 프록시 지원: R34를 사용하면 NGINX Plus를 통해 NGINX 고객이 해당 환경의 기존 엔터프라이즈 정방향 프록시를 통해 F5로 라이선스 사용 원격 분석을 보낼 수 있습니다.

OpenID Connect 구성에 대한 기본 지원: 이 릴리스에서는 NGINX Plus에서 기본 OIDC(OpenID Connect) 모듈을 사용할 수 있음을 발표하고자 합니다. 기본 모듈은 단순화된 구성과 더 나은 성능을 제공하는 동시에 기존 njs 기반 솔루션의 많은 복잡성을 해결합니다. 

SSL 동적 인증서 캐싱: NGINX Plus R34는 R32의 향상된 인증서 캐싱을 기반으로 하며 동적 인증서 캐싱 및 구성 다시 로드 시 이 캐시 보존을 지원합니다.

 

동작의 중요한 변경 사항

OpenTracing 모듈 제거: NGINX Plus R32에서는 NGINX Plus R29에 도입된 OpenTelemetry 모듈을 위해 OpenTracing 모듈의 사용 중단을 발표했습니다. , NGINX Plus R34에서 제거되도록 표시되었습니다. OpenTracing은 이번 릴리스부터 NGINX Plus에서 제거됩니다.

 

플랫폼 지원 변경 사항

추가된 플랫폼:

  • 알파인 리눅스 3.21

제거된 플랫폼:

  • 알파인 리눅스 3.17
  • SLES12

더 이상 사용되지 않는 플랫폼:

  • 알파인 리눅스 3.18
  • 우분투 20.04


 

새로운 기능 세부 정보


 NGINX 사용량 보고에 대한 정방향 프록시 지원 

이전 NGINX Plus 릴리스(NGINX Plus R33)에서는 모든 NGINX 고객이 상용 NGINX 사용량을 F5에 보고하도록 요구하는 NGINX Plus 라이선스에 대한 주요 변경 사항을 도입했습니다. 이 기능에 대해 받은 주요 피드백 중 하나는 주로 NGINX 인스턴스가 F5 라이선스 엔드포인트에 직접 연결할 수 없는 환경에서 기존 아웃바운드 프록시를 통해 원격 분석을 보낼 수 있도록 NGINX 인스턴스를 활성화해야 한다는 것이었습니다.  

NGINX Plus R34는 F5에 라이선스 텔레메트리를 보내기 위해 고객 환경에서 기존 정방향 프록시 솔루션을 사용할 수 있는 지원을 도입하게 되어 기쁩니다. 이 업데이트를 통해 이제 HTTP CONNECT 프록시를 사용하여 F5 라이선싱 엔드포인트에 대한 터널을 설정하여 사용 원격 분석을 보내도록 NGINX Plus를 구성할 수 있습니다.

구성

다음 스니펫은 정방향 프록시 솔루션을 통해 NGINX 사용 텔레메트리를 전송하기 위해 ngx_mgmt_module 모듈에 필요한 기본 NGINX 구성을 보여줍니다.

mgmt {
proxy HOST:PORT;
proxy_username USER; #optional
proxy_password PASS; #optional
}


 

 

OpenID Connect 구성에 대한 기본 지원

현재 NGINX Plus는 오류가 발생하기 쉬운 복잡한 JavaScript 파일과 고급 설정 단계를 포함하는 OIDC(OpenID Connect) 구현을 위한 njs 기반 솔루션에 의존합니다. NGINX Plus R34를 통해 NGINX Plus에 기본 OIDC 지원을 도입하게 되어 기쁩니다. 이 기본 구현은 njs 기반 접근 방식의 많은 복잡성을 제거하여 njs 모듈을 유지 관리하고 업그레이드하는 데 부담이 되지 않는 부담 없이 더 빠르고 효율적이며 매우 쉽게 구성할 수 있습니다. 

이를 위해 NGINX Plus R34에는 인증 코드 흐름을 사용하여 OIDC에서 신뢰 당사자로 인증을 구현하는 새로운 모듈 ngx_http_oidc_module 도입되었습니다. 기본 구현을 통해 OIDC 인증을 전역적으로 또는 보다 세분화된 서버별 또는 위치별 수준으로 활성화할 수 있는 유연성을 제공합니다. 또한 각 ID 공급자(IdP)에 대한 복잡한 외부 스크립트 없이 OpenID 공급자의 구성 메타데이터를 손쉽게 자동 검색 및 검색할 수 있으므로 구성 프로세스가 크게 간소화됩니다. NGINX Plus에서 OIDC의 기본 구현에 있는 기능에 대한 전체 개요 및 예제와 njs 기반 구현에서 개선되는 방법은 블로그를 참조하십시오.  

 

구성

NGINX Plus에서 기본적으로 OIDC를 설정하는 구성은 njs 기반 구현과 비교할 때 최소한의 지시문이 필요한 비교적 간단합니다.

http {
resolver 10.0.0.1;

oidc_provider my_idp {
issuer "https://provider.domain";
client_id "unique_id";
client_secret "unique_secret";
}

server {
location / {
auth_oidc my_idp;

proxy_set_header username $oidc_claim_sub;
proxy_pass http://backend;
}
}
}


 

이 예제에서는 "https://<nginx-host>/oidc_callback" 리디렉션 URI가 OpenID 공급자 측에 구성되어 있다고 가정합니다. 

다양한 ID 공급자에 대해 네이티브 OIDC 모듈을 구성하는 방법에 대한 지침은 NGINX 배포 가이드를 참조하세요.  

 

SSL 인증서 캐싱 개선 사항 

NGINX Plus R32에서는 다양한 SSL 개체를 캐시하고 캐시된 개체를 구성의 다른 곳에서 재사용하도록 변경 사항을 도입했습니다. 이로 인해 초기 구성 로드 시간이 눈에 띄게 개선되었으며, 주로 소수의 고유한 개체가 여러 번 참조되었습니다. 

R34에서는 캐시된 SSL 개체가 구성 다시 로드에서 재사용되는 이 기능에 대한 추가 개선 사항을 추가하여 다시 로드를 더욱 빠르게 만듭니다. 또한 변수가 있는 SSL 인증서도 이제 캐시됩니다. 이 기능 구현에 대한 자세한 개요는 블로그를 참조하세요. 

 

다른 개선 사항 및 버그 수정

 

Keepalive 시간 초과 개선

이 릴리스 이전에는 다른 클라이언트에 연결을 재사용해야 하거나 작업자가 정상적으로 종료될 때 유휴 keepalive 연결을 닫을 수 있었습니다.  

NGINX Plus R34에서는 새로운 지시문 keepalive_min_timeout이 도입되었습니다. 이 지시문은 연결 재사용 또는 정상적인 작업자 종료를 위해 NGINX에 의해 keepalive 연결이 닫히지 않는 시간 초과를 설정합니다. 이 변경으로 인해 동일한 연결을 통해 지연 없이 또는 둘 사이에 약간의 지연을 두고 여러 요청을 보내는 클라이언트는 네트워크 이유 또는 비정상적인 작업자 종료가 아닌 경우 그 중 하나에 대한 응답으로 TCP RST를 수신하지 않도록 할 수 있습니다.  

부작용으로, 마지막으로 전송된 HTTP 응답이 후속 TCP RST에 의해 손상될 수 있는 경우 RFC 9112, 섹션 9.6에 설명된 TCP 재설정 문제도 해결합니다. 클라이언트에서 다시 시도할 수 없는 멱등성이 아닌 요청에 중요합니다.  

그러나 작업자 프로세스 종료 중에 추가 지연이 발생할 수 있고 NGINX의 효과적인 연결 재사용을 제한할 수 있으므로 keepalive_min_timeout 큰 값으로 설정하지 않는 것이 좋습니다. 

 

상태 확인 로깅 개선

NGINX Plus R34는 업스트림 상태 확인 실패를 해결하는 동안 더 나은 가시성을 위해 오류 로그에 로깅 개선 사항을 추가합니다. 이제 서버 상태 코드가 상태 확인 실패에 기록됩니다.

 

세션 키 크기 증가

R34 이전에는 NGINX가 최대 4k (4096) 바이트의 SSL 세션을 허용했습니다. NGINX Plus R34를 사용하면 세션이 4k 바이트보다 클 수있는 사용 사례를 수용하기 위해 최대 세션 크기가 8k (8192) 바이트로 증가했습니다. 예를 들어, 클라이언트 인증서가 티켓(TLS v1.2 또는 이전 버전) 또는 상태 비저장 티켓(TLS v1.3)과 함께 세션에 저장된 경우 세션의 크기가 눈에 띄게 클 수 있습니다. 특정 상태 비저장 세션 재개 구현은 추가 데이터도 저장할 수 있습니다. 이러한 사례 중 하나는 세션 티켓 데이터에 서버 인증서를 포함하는 것으로 알려진 JDK를 사용하는 경우이며, 이는 디코딩된 세션 크기를 약 두 배로 증가시킵니다.

변경 사항에는 크기 때문에 세션이 공유 메모리에 저장되지 않는 경우를 캡처하기 위한 향상된 로깅도 포함됩니다.

 



Open Telemetry 모듈의 변경 사항

OTEL 추적에서 TLS 지원:

이제 NGINX를 사용하면 OTEL 추적 전송에 TLS를 활성화할 수 있습니다. 그림과 같이 엔드포인트에서 "https" 스킴을 지정하여 활성화할 수 있습니다.

otel_exporter { endpoint "https://otel.labt.fp.f5net.com:4433"; trusted_certificate “path/to/custom/ca/bundle“; # optional }

 

기본적으로 시스템 CA 번들은 엔드포인트의 인증서를 확인하는 데 사용되며, 필요한 경우 "trusted_certificate" 지시문으로 재정의할 수 있습니다.

OTEL 모듈의 전체 변경 사항 목록은 NGINX OTEL 변경 로그를 참조하세요. 

  

NGINX 오픈 소스에서 상속된 변경 사항

NGINX Plus R34는 NGINX 메인라인 릴리스를 기반으로 하며 NGINX Plus R33이 출시된 이후의 모든 기능 변경 사항, 기능 및 버그 수정을 상속합니다(NGINX 오픈 소스 1.27.3 및 1.27.4 메인라인 버전).

기능:

  • SSL 인증서 캐싱
  • "keepalive_min_timeout" 지시문
  • "upstream" 블록의 "server" 지시문은 "resolve" 매개 변수를 지원합니다.
  • "upstream" 블록의 "resolver" 및 "resolver_timeout" 지시문입니다.
  • 메일 프록시 모듈에서 태그가 지정되지 않은 CAPABILITY 응답이 있는 IMAP LOGIN에 대한 SmarterMail 특정 모드 지원.

변경:

  • 이제 TLSv1 및 TLSv1.1 프로토콜은 기본적으로 비활성화되어 있습니다.
  • 포트가 없는 대괄호 안의 IPv6 주소는 "proxy_bind", "fastcgi_bind", "grpc_bind", "memcached_bind", "scgi_bind" 및 "uwsgi_bind" 지시문에 지정할 수 있으며 ngx_http_realip_module에서는 클라이언트 주소로 지정할 수 있습니다.

버그 수정:

  • gzip filter failed to use preallocated memory" 경고가 zlib-ng를 사용할 때 로그에 표시됩니다.
  • nginx는 --with-libatomic=DIR 옵션이 사용된 경우 라이브러리 소스를 사용하여 libatomic 라이브러리를 빌드할 수 없습니다.
  • 0-RTT를 사용할 때 QUIC 연결이 설정되지 않을 수 있습니다. 이 버그는 1.27.1에 나타났습니다.
  • NGINX는 이제 클라이언트의 QUIC 버전 협상 패킷을 무시합니다.
  • NGINX는 ngx_http_v3_module와 함께 Solaris 10 및 이전 버전에서 빌드할 수 없습니다.
  • HTTP/3의 버그 수정.
  • ngx_http_mp4_module의 버그 수정.
  • "listen" 지시문의 "so_keepalive" 매개변수는 DragonFly BSD에서 잘못 처리될 수 있습니다.
  • proxy_store 지시문의 버그 수정.

안전:

  • 클라이언트 SSL 인증서 확인을 우회하기 위해 다른 가상 서버에서 SSL 세션을 재사용할 수 있도록 허용된 TLSv1.3 SNI로 처리하는 가상 서버의 체크인 불충분(CVE-2025-23419).

 

최신 릴리스에서 상속된 새로운 변경 사항, 기능, 버그 수정 및 해결 방법의 전체 목록은 NGINX 변경 사항을 참조하십시오.

 

NGINX 자바스크립트 모듈 변경 사항

NGINX Plus R34는 NGINX JavaScript(njs) 모듈 버전 0.8.9의 변경 사항을 통합합니다. 다음은 0.8.7 (NGINX Plus R33과 함께 제공되는 버전) 이후 njs의 주목할만한 변경 사항 목록입니다.

기능:

  • QuickJS 엔진용 fs 모듈이 추가되었습니다.
  • QuickJS 엔진에 대한 프로세스 개체를 구현했습니다.
  • process.kill() 메소드를 구현했습니다.

버그 수정:

  • 서버당 추가 VM 생성이 제거되었습니다. 이전에는 js_import http 또는 stream 블록에서 선언될 때 각 서버 블록에 대해 VM 인스턴스의 추가 복사본이 생성되었습니다. 이는 필요하지 않았으며 많은 서버 블록이 있는 구성의 경우 많은 메모리를 소비했습니다. 이 문제는 9b674412(0.8.6)에서 도입되었으며 685b64f0(0.8.7)에서만 위치 블록에 대해서만 부분적으로 수정되었습니다.
  • libxml2 2.13 이상을 사용한 XML 테스트를 수정했습니다.
  • Promise가 상속될 때 해결되는 promise를 수정했습니다.
  • 복제된 VM의 절대 범위를 수정했습니다.
  • 고정 한계 정격 출력.
  • js_fetch_trusted_certificate 지시문에 대한 SSL 컨텍스트의 사용을 최적화했습니다.

 

모든 기능, 변경 사항 및 버그 수정에 대한 포괄적인 목록은 njs 변경 로그를 참조하십시오.