NGINX Plus 릴리스 32(R32)의 출시를 발표하게 되어 기쁘게 생각합니다.
NGINX 오픈 소스를 기반으로 하는 NGINX Plus는 유일한 올인원 소프트웨어 웹 서버, 로드 밸런서, 리버스 프록시,
콘텐츠 캐시 및 API 게이트웨이입니다.
NGINX Plus R32의 새롭고 향상된 기능은 다음과 같습니다:
- SSL 인증서 캐싱 - SSL 인증서/키 쌍이 반복되는 위치가 많은 구성의 경우 NGINX Plus R32의 시작 시간 및 메모리 사용량이 크게 개선되었습니다.
- Stream_pass 모듈 - 이제 스트림 모듈이 라우터 역할을 할 수 있으므로 스트림 모듈에서 HTTP, 메일 등의 다른 모듈로 연결을 조건부로 전달하거나 다시 스트림 자체로 연결할 수 있습니다.
- NGINX Plus 공식 컨테이너 이미지 - NGINX Plus R32는 권한이 있는 컨테이너 런타임과 권한이 없는 컨테이너 런타임 모두에 대해 공식 NGINX Plus 컨테이너 이미지를 사용할 수 있는 기능을 도입합니다. 또한 두 배포 방식 모두 NGINX 관리 플레인 솔루션과 원활하게 통합할 수 있는 컴패니언 데몬인 NGINX 에이전트가 포함된 컨테이너 이미지 옵션이 함께 제공됩니다.
이번 릴리스의 마무리에는 NGINX 오픈 소스에서 상속된 새로운 기능과 버그 수정 및 NGINX JavaScript 모듈에 대한 업데이트가 포함되어 있습니다.
동작의 중요한 변경 사항
참고: NGINX Plus R31 이외의 릴리스에서 업그레이드하는 경우, 현재 버전과 이 버전 사이의 모든 릴리스에 대해 이전 공지 블로그의 중요 동작 변경 사항> 섹션에서 확인해야 합니다.
OpenTracing 모듈의 사용 중단
NGINX Plus R18에 도입된 OpenTracing 모듈은 더 이상 사용되지 않으며 NGINX Plus R34에서 제거될 예정입니다. 관련 패키지는 그때까지 모든 NGINX Plus 릴리스에서 제공될 예정입니다. OpenTracing 모듈 사용은 NGINX Plus R29에 도입된 OpenTelemetry 모듈로 대체할 것을 강력히 권장합니다.
모드보안 모듈 제거
모드보안 모듈은 2024년 3월 31일에 지원이 종료됩니다. 따라서 모드보안 패키지는 NGINX Plus 리포지토리에서 제거되며 앞으로 더 이상 NGINX Plus 리포지토리에서 사용할 수 없습니다.
PGP 키 업데이트
NGINX 오픈 소스 및 NGINX Plus 패키지는 PGP 키를 사용하여 서명됩니다. 이 키는 2024년 6월 16일에 만료되도록 설정되어 있습니다. 2024년 6월 16일 이후에도 기존 패키지를 계속 인증할 수 있도록 키의 만료일을 업데이트했습니다. 향후 릴리스에 대한 패키지 서명을 위해 새로운 키 쌍을 생성할 예정입니다.
모든 nginx 사용자는 다음 단계에 따라 업데이트된 PGP 키를 다운로드하여 설치해야 합니다:
우분투/데비안에서:
wget -qO - https://nginx.org/keys/nginx_signing.key | gpg --친애하는 | sudo 티 /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
RHEL/CentOS에서:
sudo rpm -e gpg-pubkey-7bd9bf62-5762b5f8 sudo rpm --import https://nginx.org/keys/nginx_signing.key
2024년 6월 16일 이후에는 키를 업데이트할 때까지 소프트웨어 서명을 확인할 수 없습니다.
향후 패키징 및 릴리스 정책
향후 NGINX Plus 릴리스에서는 패키징 및 릴리스 정책을 간소화할 예정입니다. 지원되는 운영 체제 배포판의 최신 버전에서만 NGINX Plus를 빌드하고 테스트할 것입니다. 이전 배포판에 NGINX Plus를 설치하는 경우 패키지 관리자가 종속 라이브러리 및 패키지를 업데이트할 것을 제안할 수 있습니다.
플랫폼 지원 변경 사항
이번 릴리스에서 지원되는 플랫폼은 다음과 같이 변경되었습니다.
새로운 운영 체제가 지원됩니다:
- 2023년 12월 31일에 EOL에 도달한 FreeBSD 12
- 구형 운영 체제는 더 이상 사용되지 않으며 NGINX Plus R33에서 제거될 예정입니다:
- CentOS7/RHEL7/오라클 리눅스 7
- 알파인 리눅스 3.16
새로운 기능 상세 정보
SSL 인증서 캐싱을 통한 NGINX 로드 동작 개선
이전에는 인증서, 키 또는 인증서 해지 목록이 NGINX 구성에서 참조될 때마다 NGINX가 로드되었습니다.
즉, 동일한 개체를 여러 번 참조하면 해당 개체를 동일한 횟수만큼 다시 로드해야 했습니다.
이 지연 시간은 신뢰할 수 있는 인증서 목록과 같은 지시문을 상속할 때 더 커집니다.
특정 조건에서 이 동작은 NGINX 시작 시간에 상당한 영향을 미치며 구성을 저장하는 데 많은 양의 메모리가 필요할 수 있습니
새로운 동작에 따라 SSL 지시어는 이제 캐시된 인증서 파일 및 관련 개체를 참조합니다.
그 결과 동일한 인증서 개체를 반복적으로 참조하는 구성의 메모리 사용량과 로드 시간이 크게 줄어듭니다.
이 이점은 많은 수의 위치 블록에서 신뢰할 수 있는 작은 인증서 집합을 참조하는 대규모 NGINX 구성의 경우에 가장 분명합니다.
다음은 약 5400개의 위치 블록(최상위 및 중첩)과 878개의 인증서로 NGINX를 구성한 경우의 로드 시간 개선에 대한 시각화입니다.

그래프의 오른쪽에서 로드 시간이 크게 줄어든 것을 확인할 수 있으며,
평균 로드 시간은 변경 전 약 40초에서 새 동작에 따라 약 6초로 감소합니다.
스트림 모듈에서 다른 모듈로 연결 전달
NGINX Plus R32는 NGINX 오픈 소스 1.25.5의 기능을 상속받아 NGINX에 새로운 구성 기능을 추가했습니다. 특히 NGINX 스트림 모듈은 이제 라우터로 작동하여 스트림 컨텍스트에서 http, 메일 등의 다른 컨텍스트로 연결을 전달하거나 스트림 컨텍스트 자체 내에서 별도의 가상 서버로 연결을 전달하는 프록시 역할을 할 수 있습니다.
이 기능은 이번 릴리스에 도입된 ngx_stream_pass_module 모듈의 일부로 사용할 수 있습니다. 이 모듈에는 클라이언트 연결을 전달할 주소를 지정하는 데 사용할 수 있는 단일 지시어 "pass"가 있습니다. 주소는 IP 주소와 포트 조합, 소켓 경로로 지정하거나 NGINX 변수로 참조할 수 있습니다.
이 기능을 통해 단일 L4 엔드포인트를 통해 모든 트래픽을 실행하려는 고객은 이제 L4 스트림 컨텍스트에서 SSL 연결을 종료하고 스트림 컨텍스트 내의 다른 모듈(http, 메일) 또는 기타 가상 서버로 전달할 수 있습니다. 또한 서버 이름이나 프로토콜에 따라 SSL 연결을 조건부로 종료하고 나머지 트래픽을 다른 곳으로 프록시할 수 있습니다. 이로써 단일 엔드포인트에서 트래픽을 관리하기 위한 새로운 구성 동작이 가능해졌습니다.
다음 구성 스니펫은 스트림 모듈에서 SSL 연결을 종료하고 요청된 서버 이름에 따라 조건부로 스트림 컨텍스트의 http 컨텍스트 또는 다른 가상 서버로 전달합니다.
http { 서버 { listen 8000; 위치 / { return 200 foo; } } } stream { map $ssl_서버_이름 $pass_port { foo.example.com 8000; 기본값 9001; } server { listen 9000 ssl; ssl_인증서 도메인.crt; ssl_인증서_키 도메인.key; pass 127.0.0.1:$pass_port; } server{ listen 9001; return bar\n; } }
이 예제에서는 모든 SSL 연결이 스트림 서버 블록에서 종료됩니다. 수신 요청의 서버 이름에 따라 포트 8000에서 수신 대기 중인 http 서버 또는 포트 9001에서 수신 대기 중인 스트림 가상 서버로 연결이 전달됩니다.
.
이 모듈의 또 다른 애플리케이션은 타사 모듈이 SSL 종료를 지원하지 않는 사용 사례를 처리합니다. 이러한 시나리오에서 stream_pass 모듈은 타사 모듈에 전달하기 전에 TLS 암호화된 연결을 종료할 수 있습니다.
이 예는 기본적으로 SSL을 지원하지 않는 RTMP 모듈이 stream_pass 모듈을 사용하여 TLS 암호화된 트래픽을 수락하는 방법을 보여줍니다.
rtmp { 서버 { listen 1935;#rtmp application foo{ live on; } } } stream { server { listen 1936 ssl; #rtmps ssl_인증서 도메인.crt; ssl_인증서_키 도메인.key; pass 127.0.0.1:1935; } } }
이 구성 스니펫에서는 SSL 연결이 스트림 서버 블록에서 종료되고 RTMP로 전달됩니다. 연결은 RTMP 모듈에 암호화되지 않은 상태로 표시되므로 SSL 연결을 지원하기 위한 추가 사용자 지정이나 처리 오버헤드가 필요하지 않습니다.
NGINX Plus 컨테이너 이미지
NGINX Plus R32에는 권한이 있는 실행과 권한이 없는 실행 모두에 대한 NGINX Plus 컨테이너 이미지가 공식적으로 제공됩니다. 또한 두 컨테이너 유형 모두 NGINX 에이전트를 옵션으로 설치하여 NGINX 지원 관리 플레인에 쉽게 연결할 수 있습니다. 이미지는 NGINX 레지스트리(private-registry.nginx.com)에서 다운로드할 수 있습니다. 다음 지침에 따라 NGINX Plus 인증서 및 키 또는 JWT(JSON 웹 토큰)를 사용하여 이미지에 액세스하세요.
기타 개선 사항 및 버그 수정 NGINX Plus R32
MQTT 모듈의 버그 수정
- 기본 속성 사용 시 잘못된 패킷: 이 릴리스에는 NGINX Plus R29에 도입된 메시지 큐 원격 측정 전송(MQTT) 모듈에서 잘못된 패킷이 발생하는 문제에 대한 수정 사항이 포함되어 있습니다. 이전에는 속성 필드가 존재하고 MQTT Connect 메시지의 모든 속성에 대한 기본값이 포함된 경우, 발신 패킷의 길이가 속성 길이 필드(1바이트)를 고려하지 않았습니다. 이로 인해 패킷 길이가 예상보다 1바이트 짧아져 잘못된 패킷이 발생했습니다. R32의 이 수정은 이 문제를 해결합니다.
zone_sync 모듈의 버그 수정
- 구성 다시 로드 시 메모리 누수: 이전에는 보류 중인 큐 동기화 작업에서 해제되지 않은 별도의 풀에서 할당된 체인 링크를 사용했습니다. 이로 인해 마스터는 물론 모든 작업자 프로세스에서 메모리 누수가 발생했습니다. 이 릴리스의 수정 사항은 보류 중인 대기열에 사이클 풀을 사용하는 이전 영역 동기화 구현으로 되돌아갑니다.
보안 수정
다음과 같은 잠재적인 보안 문제가 실험적인 HTTP3/QUIC 구현에서 확인되어 수정되었습니다.
쓰기 시 힙 오버플로(CVE-2024-32760): 공개되지 않은 HTTP/3 인코더 명령어로 인해 NGINX 작업자 프로세스가 종료되거나 다른 영향을 미칠 수 있습니다.
스택 오버플로/프리 이후 사용(CVE-2024-31079): 공개되지 않은 HTTP/3 요청으로 인해 NGINX 워커 프로세스가 종료되거나 다른 가능한 영향을 미칠 수 있습니다. 이 공격은 공격자가 가시성이 없고 영향력이 제한적인 연결 드레이닝 프로세스 중에 요청의 특정 타이밍을 지정해야 합니다.
빈 헤더를 사용한 널 포인터 역참조(CVE-2024-35200): 공개되지 않은 HTTP/3 요청으로 인해 NGINX 작업자 프로세스가 종료되거나 다른 영향이 발생할 수 있습니다.
QUIC 핸드셰이크 중 메모리 공개(CVE-2024-34161): 네트워크 인프라가 조각화 없이 4096 이상의 최대 전송 단위(MTU)를 지원하는 경우, 공개되지 않은 QUIC 메시지로 인해 NGINX 워커 프로세스가 종료되거나 이전에 해제된 메모리가 누출될 수 있습니다.
NGINX 오픈 소스에서 상속된 변경 사항
NGINX Plus R32는 NGINX 오픈 소스 1.25.5를 기반으로 하며 NGINX Plus R31 출시 이후(NGINX 1.25.4 및 1.25.5)
이루어진 기능 변경, 특징 및 버그 수정 사항을 상속받습니다(NGINX 1.25.4 및 1.25.5에서).
기능:
기능: 스트림 모듈의 가상 서버.
ngx_stream_pass_module입니다.
스트림 모듈의 "listen" 지시어의 "deferred", "accept_filter", "setfib" 매개변수입니다.
일부 아키텍처에 대한 캐시 줄 크기 감지.
애플 실리콘에서 홈브루 지원.
버그 수정:
Windows 교차 컴파일 버그 수정 및 개선.
QUIC에서 0-RTT 사용 중 예기치 않은 연결 종료.
이전 작업자 프로세스를 정상적으로 종료하는 동안 보류 중인 AIO 작업과의 연결이 조기에 종료될 수 있습니다.
이전 작업자 프로세스를 정상 종료한 후 빠른 종료를 요청했을 때 소켓 누수 경고가 더 이상 기록되지 않습니다.
하위 요청에 AIO가 사용된 경우 작업자 프로세스에서 소켓 설명자 오류,
소켓 누수 또는 세그멘테이션 오류(SSL 프록시의 경우)가 발생할 수 있습니다.
SSL 프록시가 "image_filter" 지시어와 함께 사용되었고 코드 415의 오류가 "error_page" 지시어로 리디렉션된 경우
작업자 프로세스에서 세그멘테이션 오류가 발생할 수 있습니다.
HTTP/3의 버그 수정 및 개선.
보안:
HTTP/3을 사용할 때 특수하게 만들어진 QUIC 세션을 처리하는 동안 작업자 프로세스에서 세그먼트 분할 오류가 발생할 수 있습니다(CVE-2024-24989, CVE-2024-24990).
최근 릴리스에서 상속된 새로운 변경 사항, 기능, 버그 수정 및 해결 방법의 전체 목록은 NGINX 변경 사항 파일을 참조하세요.
NGINX JavaScript 모듈 변경 사항
NGINX Plus R32에는 NGINX JavaScript(njs) 모듈 버전 0.8.4의 변경 사항이 통합되어 있습니다. 다음은 0.8.2(NGINX Plus R31과 함께 제공된 버전) 이후 njs의 주목할 만한 변경 사항 목록입니다.
기능
기능: 발신 헤더에 대한 서버 헤더를 설정할 수 있습니다.
기능: CLI에서 QuickJS 엔진 지원.
변경 사항
- 개선: r.subrequest()에서 URI 및 args 인수의 유효성 검사.
- 개선: 중복된 js_set 변수가 있는지 확인합니다.
- 버그 수정
- 버그픽스: Headers.set()을 수정했습니다.
- 버그픽스: 버퍼 값으로 js_set을 수정했습니다.
- 버그픽스: 타임아웃이 지정되지 않은 경우 공유 딕셔너리의 clear() 메서드를 수정했습니다.
- 버그픽스: js_periodic이 활성화된 경우 stub_status 통계를 수정했습니다.
- 버그픽스: libxml2 2.12 이상에서 빌드를 수정했습니다.
- 버그픽스: 오버플로 및 NaN 값을 사용하는 Date 생성자를 수정했습니다.
- 버그픽스: querystring.parse()의 언더플로우를 고쳤습니다.
- 버그픽스: String.prototype.match()에서 잠재적인 버퍼 오버라이드를 수정했습니다.
- 버그픽스: for-in 루프의 구문 분석을 수정했습니다.
- 버그픽스: 자릿수가 없는 16진수, 8진수 및 이진 리터럴의 구문 분석을 수정했습니다.
- 버그픽스: 0.8.3에 도입된 타임아웃이 없는 공유 딕셔너리의 clear() 메서드를 수정했습니다.
- 버그픽스: Buffer 인자로 타임아웃이 없는 공유 딕셔너리의 r.send() 메서드를 수정했습니다.
- 버그픽스: 패딩되지 않은 base64 문자열이 있는 atob()을 수정했습니다.
- 모든 기능, 변경 사항 및 버그 수정에 대한 전체 목록은 njs 변경 로그를 참조하세요.
NGINX Plus 업그레이드 또는 체험
NGINX Plus를 실행 중인 경우 가능한 한 빨리 NGINX Plus R32로 업그레이드할 것을 강력히 권장합니다.
모든 훌륭한 새 기능 외에도 몇 가지 추가 수정 및 개선 사항이 적용되어
지원 티켓을 제기해야 하는 경우 NGINX에서 더 쉽게 도움을 받을 수 있습니다.
위 내용과 같이 NGINX Plus를 활용하여 Demo 가 필요하시면 하단의 전문가에게 상담받기 버튼을 클릭해주세요.
전문가에게 상담받기
NGINX Plus 릴리스 32(R32)의 출시를 발표하게 되어 기쁘게 생각합니다.
NGINX 오픈 소스를 기반으로 하는 NGINX Plus는 유일한 올인원 소프트웨어 웹 서버, 로드 밸런서, 리버스 프록시,
콘텐츠 캐시 및 API 게이트웨이입니다.
NGINX Plus R32의 새롭고 향상된 기능은 다음과 같습니다:
이번 릴리스의 마무리에는 NGINX 오픈 소스에서 상속된 새로운 기능과 버그 수정 및 NGINX JavaScript 모듈에 대한 업데이트가 포함되어 있습니다.
동작의 중요한 변경 사항
참고: NGINX Plus R31 이외의 릴리스에서 업그레이드하는 경우, 현재 버전과 이 버전 사이의 모든 릴리스에 대해 이전 공지 블로그의 중요 동작 변경 사항> 섹션에서 확인해야 합니다.
OpenTracing 모듈의 사용 중단
NGINX Plus R18에 도입된 OpenTracing 모듈은 더 이상 사용되지 않으며 NGINX Plus R34에서 제거될 예정입니다. 관련 패키지는 그때까지 모든 NGINX Plus 릴리스에서 제공될 예정입니다. OpenTracing 모듈 사용은 NGINX Plus R29에 도입된 OpenTelemetry 모듈로 대체할 것을 강력히 권장합니다.
모드보안 모듈 제거
모드보안 모듈은 2024년 3월 31일에 지원이 종료됩니다. 따라서 모드보안 패키지는 NGINX Plus 리포지토리에서 제거되며 앞으로 더 이상 NGINX Plus 리포지토리에서 사용할 수 없습니다.
PGP 키 업데이트
NGINX 오픈 소스 및 NGINX Plus 패키지는 PGP 키를 사용하여 서명됩니다. 이 키는 2024년 6월 16일에 만료되도록 설정되어 있습니다. 2024년 6월 16일 이후에도 기존 패키지를 계속 인증할 수 있도록 키의 만료일을 업데이트했습니다. 향후 릴리스에 대한 패키지 서명을 위해 새로운 키 쌍을 생성할 예정입니다.
모든 nginx 사용자는 다음 단계에 따라 업데이트된 PGP 키를 다운로드하여 설치해야 합니다:
우분투/데비안에서:
wget -qO - https://nginx.org/keys/nginx_signing.key | gpg --친애하는 | sudo 티 /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
RHEL/CentOS에서:
sudo rpm -e gpg-pubkey-7bd9bf62-5762b5f8 sudo rpm --import https://nginx.org/keys/nginx_signing.key
2024년 6월 16일 이후에는 키를 업데이트할 때까지 소프트웨어 서명을 확인할 수 없습니다.
향후 패키징 및 릴리스 정책
향후 NGINX Plus 릴리스에서는 패키징 및 릴리스 정책을 간소화할 예정입니다. 지원되는 운영 체제 배포판의 최신 버전에서만 NGINX Plus를 빌드하고 테스트할 것입니다. 이전 배포판에 NGINX Plus를 설치하는 경우 패키지 관리자가 종속 라이브러리 및 패키지를 업데이트할 것을 제안할 수 있습니다.
플랫폼 지원 변경 사항
이번 릴리스에서 지원되는 플랫폼은 다음과 같이 변경되었습니다.
새로운 운영 체제가 지원됩니다:
새로운 기능 상세 정보
SSL 인증서 캐싱을 통한 NGINX 로드 동작 개선
이전에는 인증서, 키 또는 인증서 해지 목록이 NGINX 구성에서 참조될 때마다 NGINX가 로드되었습니다.
즉, 동일한 개체를 여러 번 참조하면 해당 개체를 동일한 횟수만큼 다시 로드해야 했습니다.
이 지연 시간은 신뢰할 수 있는 인증서 목록과 같은 지시문을 상속할 때 더 커집니다.
특정 조건에서 이 동작은 NGINX 시작 시간에 상당한 영향을 미치며 구성을 저장하는 데 많은 양의 메모리가 필요할 수 있습니
새로운 동작에 따라 SSL 지시어는 이제 캐시된 인증서 파일 및 관련 개체를 참조합니다.
그 결과 동일한 인증서 개체를 반복적으로 참조하는 구성의 메모리 사용량과 로드 시간이 크게 줄어듭니다.
이 이점은 많은 수의 위치 블록에서 신뢰할 수 있는 작은 인증서 집합을 참조하는 대규모 NGINX 구성의 경우에 가장 분명합니다.
다음은 약 5400개의 위치 블록(최상위 및 중첩)과 878개의 인증서로 NGINX를 구성한 경우의 로드 시간 개선에 대한 시각화입니다.
그래프의 오른쪽에서 로드 시간이 크게 줄어든 것을 확인할 수 있으며,
평균 로드 시간은 변경 전 약 40초에서 새 동작에 따라 약 6초로 감소합니다.
스트림 모듈에서 다른 모듈로 연결 전달
NGINX Plus R32는 NGINX 오픈 소스 1.25.5의 기능을 상속받아 NGINX에 새로운 구성 기능을 추가했습니다. 특히 NGINX 스트림 모듈은 이제 라우터로 작동하여 스트림 컨텍스트에서 http, 메일 등의 다른 컨텍스트로 연결을 전달하거나 스트림 컨텍스트 자체 내에서 별도의 가상 서버로 연결을 전달하는 프록시 역할을 할 수 있습니다.
이 기능은 이번 릴리스에 도입된 ngx_stream_pass_module 모듈의 일부로 사용할 수 있습니다. 이 모듈에는 클라이언트 연결을 전달할 주소를 지정하는 데 사용할 수 있는 단일 지시어 "pass"가 있습니다. 주소는 IP 주소와 포트 조합, 소켓 경로로 지정하거나 NGINX 변수로 참조할 수 있습니다.
이 기능을 통해 단일 L4 엔드포인트를 통해 모든 트래픽을 실행하려는 고객은 이제 L4 스트림 컨텍스트에서 SSL 연결을 종료하고 스트림 컨텍스트 내의 다른 모듈(http, 메일) 또는 기타 가상 서버로 전달할 수 있습니다. 또한 서버 이름이나 프로토콜에 따라 SSL 연결을 조건부로 종료하고 나머지 트래픽을 다른 곳으로 프록시할 수 있습니다. 이로써 단일 엔드포인트에서 트래픽을 관리하기 위한 새로운 구성 동작이 가능해졌습니다.
다음 구성 스니펫은 스트림 모듈에서 SSL 연결을 종료하고 요청된 서버 이름에 따라 조건부로 스트림 컨텍스트의 http 컨텍스트 또는 다른 가상 서버로 전달합니다.
http { 서버 { listen 8000; 위치 / { return 200 foo; } } } stream { map $ssl_서버_이름 $pass_port { foo.example.com 8000; 기본값 9001; } server { listen 9000 ssl; ssl_인증서 도메인.crt; ssl_인증서_키 도메인.key; pass 127.0.0.1:$pass_port; } server{ listen 9001; return bar\n; } }
이 예제에서는 모든 SSL 연결이 스트림 서버 블록에서 종료됩니다. 수신 요청의 서버 이름에 따라 포트 8000에서 수신 대기 중인 http 서버 또는 포트 9001에서 수신 대기 중인 스트림 가상 서버로 연결이 전달됩니다.
.
이 모듈의 또 다른 애플리케이션은 타사 모듈이 SSL 종료를 지원하지 않는 사용 사례를 처리합니다. 이러한 시나리오에서 stream_pass 모듈은 타사 모듈에 전달하기 전에 TLS 암호화된 연결을 종료할 수 있습니다.
이 예는 기본적으로 SSL을 지원하지 않는 RTMP 모듈이 stream_pass 모듈을 사용하여 TLS 암호화된 트래픽을 수락하는 방법을 보여줍니다.
rtmp { 서버 { listen 1935;#rtmp application foo{ live on; } } } stream { server { listen 1936 ssl; #rtmps ssl_인증서 도메인.crt; ssl_인증서_키 도메인.key; pass 127.0.0.1:1935; } } }
이 구성 스니펫에서는 SSL 연결이 스트림 서버 블록에서 종료되고 RTMP로 전달됩니다. 연결은 RTMP 모듈에 암호화되지 않은 상태로 표시되므로 SSL 연결을 지원하기 위한 추가 사용자 지정이나 처리 오버헤드가 필요하지 않습니다.
NGINX Plus 컨테이너 이미지
NGINX Plus R32에는 권한이 있는 실행과 권한이 없는 실행 모두에 대한 NGINX Plus 컨테이너 이미지가 공식적으로 제공됩니다. 또한 두 컨테이너 유형 모두 NGINX 에이전트를 옵션으로 설치하여 NGINX 지원 관리 플레인에 쉽게 연결할 수 있습니다. 이미지는 NGINX 레지스트리(private-registry.nginx.com)에서 다운로드할 수 있습니다. 다음 지침에 따라 NGINX Plus 인증서 및 키 또는 JWT(JSON 웹 토큰)를 사용하여 이미지에 액세스하세요.
기타 개선 사항 및 버그 수정 NGINX Plus R32
MQTT 모듈의 버그 수정
zone_sync 모듈의 버그 수정
보안 수정
다음과 같은 잠재적인 보안 문제가 실험적인 HTTP3/QUIC 구현에서 확인되어 수정되었습니다.
쓰기 시 힙 오버플로(CVE-2024-32760): 공개되지 않은 HTTP/3 인코더 명령어로 인해 NGINX 작업자 프로세스가 종료되거나 다른 영향을 미칠 수 있습니다.
스택 오버플로/프리 이후 사용(CVE-2024-31079): 공개되지 않은 HTTP/3 요청으로 인해 NGINX 워커 프로세스가 종료되거나 다른 가능한 영향을 미칠 수 있습니다. 이 공격은 공격자가 가시성이 없고 영향력이 제한적인 연결 드레이닝 프로세스 중에 요청의 특정 타이밍을 지정해야 합니다.
빈 헤더를 사용한 널 포인터 역참조(CVE-2024-35200): 공개되지 않은 HTTP/3 요청으로 인해 NGINX 작업자 프로세스가 종료되거나 다른 영향이 발생할 수 있습니다.
QUIC 핸드셰이크 중 메모리 공개(CVE-2024-34161): 네트워크 인프라가 조각화 없이 4096 이상의 최대 전송 단위(MTU)를 지원하는 경우, 공개되지 않은 QUIC 메시지로 인해 NGINX 워커 프로세스가 종료되거나 이전에 해제된 메모리가 누출될 수 있습니다.
NGINX 오픈 소스에서 상속된 변경 사항
NGINX Plus R32는 NGINX 오픈 소스 1.25.5를 기반으로 하며 NGINX Plus R31 출시 이후(NGINX 1.25.4 및 1.25.5)
이루어진 기능 변경, 특징 및 버그 수정 사항을 상속받습니다(NGINX 1.25.4 및 1.25.5에서).
기능:
기능: 스트림 모듈의 가상 서버.
ngx_stream_pass_module입니다.
스트림 모듈의 "listen" 지시어의 "deferred", "accept_filter", "setfib" 매개변수입니다.
일부 아키텍처에 대한 캐시 줄 크기 감지.
애플 실리콘에서 홈브루 지원.
버그 수정:
Windows 교차 컴파일 버그 수정 및 개선.
QUIC에서 0-RTT 사용 중 예기치 않은 연결 종료.
이전 작업자 프로세스를 정상적으로 종료하는 동안 보류 중인 AIO 작업과의 연결이 조기에 종료될 수 있습니다.
이전 작업자 프로세스를 정상 종료한 후 빠른 종료를 요청했을 때 소켓 누수 경고가 더 이상 기록되지 않습니다.
하위 요청에 AIO가 사용된 경우 작업자 프로세스에서 소켓 설명자 오류,
소켓 누수 또는 세그멘테이션 오류(SSL 프록시의 경우)가 발생할 수 있습니다.
SSL 프록시가 "image_filter" 지시어와 함께 사용되었고 코드 415의 오류가 "error_page" 지시어로 리디렉션된 경우
작업자 프로세스에서 세그멘테이션 오류가 발생할 수 있습니다.
HTTP/3의 버그 수정 및 개선.
보안:
HTTP/3을 사용할 때 특수하게 만들어진 QUIC 세션을 처리하는 동안 작업자 프로세스에서 세그먼트 분할 오류가 발생할 수 있습니다(CVE-2024-24989, CVE-2024-24990).
최근 릴리스에서 상속된 새로운 변경 사항, 기능, 버그 수정 및 해결 방법의 전체 목록은 NGINX 변경 사항 파일을 참조하세요.
NGINX JavaScript 모듈 변경 사항
NGINX Plus R32에는 NGINX JavaScript(njs) 모듈 버전 0.8.4의 변경 사항이 통합되어 있습니다. 다음은 0.8.2(NGINX Plus R31과 함께 제공된 버전) 이후 njs의 주목할 만한 변경 사항 목록입니다.
기능
기능: 발신 헤더에 대한 서버 헤더를 설정할 수 있습니다.
기능: CLI에서 QuickJS 엔진 지원.
변경 사항
NGINX Plus 업그레이드 또는 체험
NGINX Plus를 실행 중인 경우 가능한 한 빨리 NGINX Plus R32로 업그레이드할 것을 강력히 권장합니다.
모든 훌륭한 새 기능 외에도 몇 가지 추가 수정 및 개선 사항이 적용되어
지원 티켓을 제기해야 하는 경우 NGINX에서 더 쉽게 도움을 받을 수 있습니다.
위 내용과 같이 NGINX Plus를 활용하여 Demo 가 필요하시면 하단의 전문가에게 상담받기 버튼을 클릭해주세요.
전문가에게 상담받기