블로그 | NGINX

NGINX 1.15.2를 사용하여 동일한 포트에서 SSL 및 비 SSL 프로토콜 실행

NGINX-F5-수평-검정-유형-RGB의 일부
파이살 메몬 썸네일
파이살 메몬
2018년 7월 24일 게시

오늘 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의 최신 버전은 항상 공식 저장소의 메인라인 브랜치 에서 사용할 수 있습니다.

더 알아보기

NGINX 오픈 소스 1.15.2에는 추가 향상 기능과 버그 수정이 포함되어 있습니다. 새로운 기능의 전체 목록을 보려면 NGINX 변경 로그를 참조하세요.


"이 블로그 게시물에는 더 이상 사용할 수 없거나 더 이상 지원되지 않는 제품이 참조될 수 있습니다. 사용 가능한 F5 NGINX 제품과 솔루션에 대한 최신 정보를 보려면 NGINX 제품군을 살펴보세요. NGINX는 이제 F5의 일부가 되었습니다. 이전의 모든 NGINX.com 링크는 F5.com의 유사한 NGINX 콘텐츠로 리디렉션됩니다."