오늘 NGINX 오픈 소스 1.15.2가 출시되었다는 소식을 알려드리게 되어 기쁩니다. 이번 릴리스의 주요 기능 중 하나는 새로운 $ssl_preread_protocol
변수입니다. 이 변수를 사용하면 TCP( 스트림
) 프록시를 사용하여 트래픽을 전달할 때 SSL/TLS와 다른 프로토콜을 구별할 수 있습니다. 이것은 (예를 들어) 동일한 포트에서 SSL/TLS와 SSH 서비스를 실행하여 방화벽 제한을 피하려는 경우에 유용합니다.
이 새로운 기능은 곧 출시될 NGINX Plus R16 릴리스에서 NGINX Plus 고객에게도 제공될 예정입니다.
$ssl_preread_protocol을
사용하는 시기와 방법http
또는 stream
모듈을 사용하여 SSL/TLS 트래픽을 종료하고 해독하면 $ ssl_protocol
( http
, stream
) 변수는 클라이언트에서 사용하는 SSL 또는 TLS 버전을 캡처합니다. 그러나 때로는 스트림
모듈을 사용하여 기본 TCP 프록시나 부하 분산 장치를 구현하여 SSL/TLS 트래픽을 해독하지 않고 바로 전달하고 싶을 수도 있습니다.
stream_ssl_preread
모듈은 SSL 또는 TLS 연결에서 초기 ClientHello
메시지를 검사하고 연결을 관리하는 데 사용할 수 있는 여러 값을 추출합니다. 릴리스 1.15.2에 추가된 $ssl_preread_protocol
변수는 ClientHello
메시지의 client_version
필드에서 최신 SSL/TLS 버전 번호를 캡처합니다. ClientHello
메시지에 supported_versions
확장이 있으면 변수는 TLSv1.3
으로 설정됩니다.
연결에 SSL 또는 TLS 버전이 사용되지 않으면 $ssl_preread_protocol
변수가 비어 있으며, 이는 연결이 SSH와 같은 SSL/TLS가 아닌 다른 프로토콜을 사용하고 있음을 나타냅니다.
다음 구성 스니펫은 맵
블록에서 $ssl_preread_protocol
변수를 사용하여 연결에 사용되는 프로토콜에 적합한 업스트림 그룹의 이름으로 $upstream
변수를 설정합니다. 그러면 proxy_pass
지시어는 해당 요청을 선택된 업스트림 그룹으로 전달합니다. $ssl_preread_protocol
변수가 작동하려면 ssl_preread
on
지시어가 서버
블록에 포함되어야 합니다.
stream { upstream ssh { server 192.0.2.1:22; } upstream web { server 192.0.2.2:443; } map $ssl_preread_protocol $upstream { default ssh; "TLSv1.2" web; } # 동일한 포트에서 SSH 및 SSL server { listen 443; proxy_pass $upstream; ssl_preread on ; } }
구성을 효과적으로 적용하려면 클라이언트가 기본 포트 22 대신 포트 443에서 SSH 서버에 액세스해야 합니다. 예를 들어 MacOS 및 Linux의 기본 제공 SSH 클라이언트를 사용하면 -p
플래그를 사용하여 포트를 변경할 수 있습니다.
$ ssh ssh-서버-ip-주소 -p 443
NGINX의 최신 버전은 항상 공식 저장소의 메인라인 브랜치 에서 사용할 수 있습니다.
NGINX 오픈 소스 1.15.2에는 추가 향상 기능과 버그 수정이 포함되어 있습니다. 새로운 기능의 전체 목록을 보려면 NGINX 변경 로그를 참조하세요.
"이 블로그 게시물에는 더 이상 사용할 수 없거나 더 이상 지원되지 않는 제품이 참조될 수 있습니다. 사용 가능한 F5 NGINX 제품과 솔루션에 대한 최신 정보를 보려면 NGINX 제품군을 살펴보세요. NGINX는 이제 F5의 일부가 되었습니다. 이전의 모든 NGINX.com 링크는 F5.com의 유사한 NGINX 콘텐츠로 리디렉션됩니다."