NGINX, Inc.에서는 애플리케이션 전송 플랫폼의 최신 릴리스인 NGINX Plus Release 7(R7)의 출시를 발표하게 되어 기쁘게 생각합니다. 이 업데이트는 주요 웹 서버 중 최초로 새로운 HTTP/2 웹 표준을 완벽하게 지원하는 구현을 제공합니다. NGINX Plus는 새 웹 서비스와 기존 웹 서비스 모두에 대한 프런트엔드 HTTP/2 게이트웨이 및 가속기로 배포될 수 있습니다.
[편집자 - 이 게시물은 원래 게시물 버전에서 언급된 별도의 상태 모듈을 대체하고 더 이상 사용되지 않는 NGINX Plus API를 참조하도록 업데이트되었습니다.]
최신 업데이트에는 기업이 엔터프라이즈 애플리케이션에 필요한 성능, 보안 및 안정성을 갖춘 애플리케이션을 제공할 수 있도록 획기적인 개선 사항과 추가 기능이 추가되었습니다. 여기에는 애플리케이션 모니터링, 관리 및 디버깅을 보다 쉽게 만들어 주는 상당한 개선 사항과 추가적인 보안 및 성능 최적화 기능이 포함됩니다.
편집자 – NGINX Plus R7 의 주요 새로운 기능에 대한 자세한 내용은 다음 관련 블로그 게시물을 참조하세요.
또한 NGINX Plus R7의 새로운 기능을 소개하는 주문형 웨비나도 확인해 보세요.
이번 릴리스의 주요 기능은 다음과 같습니다.
메모 : 알파 수준 패치 의 사용자 테스트와 기업 공동 스폰서인 Automattic과 Dropbox의 초기 지원을 바탕으로 HTTP/2의 최종 오픈 소스 버전은 R7 출시에 이어 출시될 예정입니다.
SO_REUSEPORT
옵션을 사용하며 현재 Linux 3.9 이상 또는 DragonFly BSD가 필요합니다.NGINX, Inc.의 CEO인 Gus Robertson은 "지난해에 저희는 수백 명의 신규 고객이 NGINX Plus를 사용하여 애플리케이션을 배포하도록 도왔으며, 최신 릴리스는 사용자에게 최상의 경험을 보장하기 위한 더 많은 도구를 제공하는 데 중점을 두고 있습니다."라고 말했습니다. "우리는 고객 인프라의 구성 요소이며, 이를 통해 고객이 배포하는 애플리케이션에 대한 탁월한 가시성과 제어를 제공할 수 있는 독보적인 위치에 있습니다. "저희는 고객 사업에서 중요한 역할을 진지하게 받아들이고 있으며 NGINX Plus R7의 새로운 기능은 이를 반영합니다."
최근 몇 달 동안 NGINX 채택이 상당히 늘어났습니다. NGINX는 상위 10만 개 웹사이트에서 1위 웹 서버 이며, 세계에서 가장 바쁜 사이트의 거의 절반이 NGINX를 사용하여 수십억 명의 사용자에게 애플리케이션을 제공합니다. NGINX, Inc.는 모든 사람이 완벽한 애플리케이션을 쉽게 제공할 수 있도록 오픈 소스와 상업적으로 지원되는 도구에 지속적으로 많은 투자를 하고 있습니다. 가장 작고 가벼운 앱부터 세계에서 가장 큰 플랫폼에 이르기까지 말입니다.
NGINX Plus R7 기능 세부 정보
이 섹션에서는 NGINX Plus R7 의 모든 새로운 기능과 기능에 대한 자세한 개요를 제공합니다.
NGINX Plus R7은 새로운 nginx-plus-http2 패키지를 통해 HTTP 프로토콜의 최신 버전인 HTTP/2를 지원합니다. HTTP/2는 최신 웹 애플리케이션의 성능과 보안을 향상시킵니다. NGINX Plus의 HTTP/2 지원은 기존 사이트와 앱과 원활하게 작동하며, 기존 사이트와 앱을 전혀 변경할 필요가 없으며 NGINX Plus 구성을 최소한으로만 변경하면 됩니다. NGINX Plus R7은 이전 버전과 완벽하게 호환되며, 사용자가 어떤 브라우저를 선택하든 최상의 경험을 위해 HTTP/1.x 및 HTTP/2 트래픽을 모두 병렬로 전송할 수 있습니다.
HTTP/2로의 전환을 용이하게 하기 위해 NGINX Plus는 "HTTP/2 게이트웨이" 역할을 합니다. 프런트 엔드에서 NGINX Plus는 이를 지원하는 클라이언트 웹 브라우저에 HTTP/2를 전달하고 백엔드에서는 이전과 마찬가지로 HTTP/1.x(또는 FastCGI, SCGI, uWSGI 등)를 전달합니다. 즉, NGINX Plus에서 프록시하는 서버와 애플리케이션은 HTTP/2로의 전환에 영향을 받지 않으며 클라이언트가 사용하는 HTTP 버전을 알 필요도 없습니다.
HTTPS와 HTTP/2를 나란히 지원하기 위해 NGINX Plus는 TLS에서 NPN(Next Protocol Negotiation) 및 ALPN(Application‑Layer Protocol Negotiation) 확장을 모두 지원합니다. 이러한 확장은 클라이언트와 서버가 모두 HTTP/2를 지원하는 경우 HTTPS 연결을 HTTP/2로 원활하게 업그레이드하는 데 사용됩니다.
필요한 유일한 구성 변경 사항은 기존 수신
지시문에 http2
매개변수를 추가하는 것입니다. ssl
매개변수도 포함된 경우에만 HTTP/2가 지원됩니다.
서버 { listen 443 ssl http2 default_server; }
HTTP/2 지원을 활성화하려면 NGINX Plus 저장소에서 nginx-plus-http2 패키지를 설치하세요. 이 패키지는 SPDY/3.1을 지원하지 않습니다. 표준 nginx-plus 및 nginx-plus-extras 패키지는 HTTP/2보다는 SPDY/3.1을 지원하며, 더 폭넓은 브라우저 지원과 코드 성숙도로 인해 현재 프로덕션 사이트에 권장됩니다. 현재 nginx-plus-extras 패키지의 HTTP/2 지원 버전은 빌드하지 않습니다.
HTTP/2에 대해 자세히 알아보려면:
NGINX Plus R7 에는 애플리케이션 성능을 더욱 향상시키는 데 도움이 되는 여러 가지 성능 향상 기능이 포함되어 있습니다. 이 기능은 스레드 풀 최적화 에 대한 지원을 추가하여 잠재적으로 차단되는 디스크 작업의 부하를 줄이고 대량의 디스크 I/O가 관련된 작업 부하(예: 콘텐츠 캐싱)의 성능을 개선합니다. NGINX Plus R7 에는 소켓 샤딩 최적화 (Linux 3.9 이상 또는 Dragonfly BSD 필요) 기능이 포함되어 있어 많은 수의 nginx 프로세스가 트래픽을 처리하는 대규모 멀티코어 서버에서 효율성을 높여줍니다. 이러한 기능은 NGINX 오픈 소스 배포 환경에서 실제로 테스트되었으며, 이제 NGINX Plus의 일부로 완벽하게 지원됩니다.
NGINX Plus에서 스레드 풀을 사용하면 성능이 9배 더 향상될 수 있습니다. NGINX가 연결을 처리하기 위해 비동기, 이벤트 기반 접근 방식을 사용한다는 것은 잘 알려진 사실입니다. 하지만 비동기 이벤트 기반 접근 방식에는 여전히 차단이라는 문제가 있습니다. Linux에서는 디스크 작업이 차단되기 때문에, 많은 디스크 I/O가 관련된 작업 중에 NGINX는 생산적인 작업을 하는 대신 차단하는 데 많은 시간을 소비할 수 있습니다.
디스크 I/O를 처리하는 스레드 풀을 할당하면 이러한 문제가 완화됩니다. NGINX 작업자 프로세스는 디스크 자체로 이동하는 대신 풀 내의 사용 가능한 스레드에 I/O 작업을 넘겨주고 평소처럼 트래픽을 처리합니다. 디스크 작업이 완료되면 NGINX 작업자 프로세스에 알림이 전달되고 요청을 충족하기 위해 남아 있는 작업을 계속 진행할 수 있습니다.
스레드 풀을 활성화하려면 location
블록에 aio
threads
지시문을 추가하기만 하면 됩니다.
위치 / { 루트 / 저장소; aio 스레드 ; }
NGINX의 스레드 풀에 대한 자세한 개요는 이 블로그 게시물을 참조하세요.
소켓 샤딩은 NGINX 1.9.1에서 처음 도입되었습니다. 이 기능은 Linux 커널 버전 3.9에 도입된 SO_REUSEPORT
소켓 옵션을 활용합니다. 해당 옵션을 활성화하면 Linux 커널 자체가 라운드 로빈 방식으로 새로운 연결을 여러 NGINX 작업자 프로세스에 균등하게 분산합니다. 그러면 작업자 프로세스가 요청 제한, 캐싱, 부하 분산 및 사용자가 구성한 모든 작업을 수행합니다.
SO_REUSEPORT
가 없으면 사용 가능한 모든 작업자 프로세스에 대한 새로운 연결이 제공됩니다. 대기열에서 가장 먼저 연결을 제거하는 사람이 연결을 얻습니다. 부하를 균등하게 분산하는 알고리즘이 없기 때문에 일부 작업자 프로세스가 대부분의 부하를 맡고 다른 작업자 프로세스는 활용도가 낮아지는 상황이 쉽게 발생할 수 있습니다. 패킷을 놓고 프로세스가 서로 다투는 것도 비효율적입니다. 왜냐하면 이로 인해 잠금 경합이 발생할 수 있기 때문입니다.
소켓 샤딩은 작업이 NGINX 작업자 프로세스에 균등하게 분산되도록 보장하여 성능을 최대 3배까지 향상시킬 수 있습니다. 이 기능을 사용하려면 기존 listen
지시문에 새로운 reuseport
매개변수를 추가해야 합니다.
서버 { 수신 12345 재사용 포트 ; # ... }
이 기능에 대해 자세히 알아보려면 이 블로그 게시물을 참조하세요.
메모 : 이 기능을 사용하려면 Linux 커널 버전 3.9 이상이 필요합니다. Ubuntu 13.10 이상 및 Red Hat Enterprise Linux 7 이상에는 필요한 기능이 포함되어 있습니다.
NGINX Plus R7은 애플리케이션의 보안을 강화하기 위해 더 많은 기능을 추가했습니다. 이 섹션에서는 이러한 기능에 대한 개요를 제공합니다.
TCP 프록시 및 부하 분산을 위한 새로운 기능은 액세스 제어(IP 주소로 제한), 연결 제한(클라이언트 또는 서비스당 동시 연결 수 제한), 대역폭 사용(연결당 업스트림 또는 다운스트림 대역폭 제한)을 개선합니다. 이러한 기능은 이미 HTTP 부하 분산에 사용할 수 있으며, API 측정 및 DDoS 보호에 큰 성공을 거두고 있습니다.
자세한 내용은 관련 블로그 게시물인 NGINX Plus R7의 TCP 부하 분산<.htmlspan>을 참조하세요.
많은 요구에 부응하여 NGINX Plus R7은 인증을 위해 Microsoft NT LAN Manager( NTLM )를 사용하는 애플리케이션의 프록시 및 부하 분산을 수행할 수 있습니다. NTLM은 많은 Microsoft 제품, 특히 레거시 애플리케이션에서 사용되는 인증 프로토콜입니다.
NTLM에 대한 지원은 백엔드 서버에 대한 연결이 다중화되지 않고 활성 상태로 유지되어야 한다는 보안 요구 사항을 충족합니다. 즉, NTLM으로 인증된 각 클라이언트는 백엔드 서버에 대한 고유한 전용 연결을 갖습니다.
NTLM 지원을 활성화하려면 HTTP 업스트림 그룹 구성에 ntlm
지시문을 추가합니다.
업스트림 백엔드 { 서버 192.168.1.10; 서버 192.168.1.11; ntlm ; }
이제 NGINX를 Microsoft 애플리케이션 앞에 프록시, 부하 분산 장치, HTTP/2 가속기로 자신 있게 배포하여 가능한 가장 광범위한 클라이언트 장치를 지원할 수 있습니다.
NGINX Plus는 애플리케이션과 인프라를 쉽게 관찰, 최적화, 디버깅할 수 있도록 자세한 모니터링과 통계를 제공합니다. 이러한 기능을 기반으로 NGINX Plus R7에는 새로운 카운터와 통계가 가득 담겨 있습니다. 이러한 카운터는 NGINX Plus 배포를 조정하고 더 많은 부하를 처리하기 위해 언제 확장 또는 확장해야 하는지에 대한 정보에 입각한 결정을 내리는 데 도움이 됩니다. 새로운 통계와 카운터는 다음과 같습니다.
499
오류 – 추적하는 서버당 카운터499
백엔드 서버가 요청 처리를 마치기 전에 클라이언트가 연결을 닫을 때 발생하는 오류입니다. 몇 가지499
오류는 허용 가능합니다(사람들은 종종 세션 중간에 웹 브라우저를 닫습니다). 하지만 오류 수가 많으면 서버가 과부하되어 요청을 처리하는 데 시간이 오래 걸린다는 것을 나타낼 수 있습니다.다른 모든 카운터와 마찬가지로 구성에 api
지침을 포함하여 새 카운터를 활성화합니다.
NGINX Plus 대시보드는 R7에서 크게 개선되어 크고 복잡한 구성에서도 핵심 시스템 정보를 간결한 형식으로 표시합니다.
자세한 내용은 관련 블로그 게시물인 새로운 NGINX Plus 대시보드<.htmla>를 참조하세요.
NGINX Plus R7 에는 위 카테고리에 속하지 않는 여러 가지 추가 개선 사항이 있습니다.
start
, end
, offset
인수를 지원합니다. 이를 통해 콘텐츠 게시자는 비디오 스트림의 일부에 대한 링크를 쉽게 게시할 수 있습니다.콘텐츠 수정 – 이전에는 NGINX Plus에서 응답 콘텐츠에 간단한 콘텐츠 변경을 하나만 할 수 있었고, 한 문자열을 다른 문자열로 대체할 수 있었습니다. sub_filter
지시어는 변수와 대체 체인을 지원하도록 확장되어 더 복잡한 변경이 가능해졌습니다.
확장된 콘텐츠 수정 기능을 통해 웹 콘텐츠를 쉽게 조정할 수 있습니다. 예를 들어 메시지 콘텐츠의 하이퍼링크에서 메서드( http:// 대신 https:// ), 도메인 또는 기타 경로 요소를 변경할 수 있습니다. 원래 HTML 콘텐츠를 수정하지 않고도 보일러플레이트 텍스트나 JavaScript 스니펫과 같은 콘텐츠를 HTML 페이지에 삽입하는 데 사용할 수도 있습니다.
$upstream_connect_time
변수 – 백엔드 서버에 연결하는 데 걸리는 시간을 추적하는 새로운 NGINX 변수 로, 느린 서버를 더 쉽게 식별할 수 있습니다.nginx
명령의 새로운 ‑T
플래그는 구문 분석된 NGINX 구성을 명확하고 표준화된 형식으로 stdout에 덤프합니다. 이는 보관 목적이나 지원 티켓을 제출할 때 유용합니다.proxy_bind
, proxy_protocol
, tcp_nodelay
지시문과 listen
지시문에 대한 backlog
매개변수가 이제 HTTP 트래픽뿐 아니라 TCP 트래픽( stream 모듈)에도 지원됩니다. 자세한 내용은 NGINX Plus R7 의 TCP 부하 분산을 참조하세요.NGINX Plus와 함께 Phusion Passenger Open Source를 사용하는 경우( passenger_root
지시문이 구성에 포함되어 있음), NGINX Plus R7 nginx-plus-extras 패키지로 업그레이드하는 동시에 Passenger 런타임을 버전 5.0.15로 업그레이드해야 합니다. 다음 단계를 수행하세요(명령어는 Ubuntu에 적합합니다):
NGINX Plus 중지:
# 서비스 nginx 중지
Phusion Passenger 런타임을 5.0.15로 업그레이드하세요.
# apt-get 설치 승객
NGINX Plus Extras 패키지를 R7로 업그레이드하세요.
# apt-get nginx-plus-extras 설치
Phusion Passenger 업그레이드 참고 사항 에 설명된 대로 NGINX Plus 구성 지침에 필요한 업데이트를 적용합니다.
NGINX Plus 시작:
# 서비스 nginx 시작
전체 설치 및 업그레이드 지침은 NGINX Plus 고객 포털 에서 확인할 수 있습니다.
NGINX Plus를 사용하고 계시다면 가능한 한 빨리 릴리스 7로 업그레이드하시기 바랍니다. 여러분은 많은 수정 사항과 개선 사항을 접하게 될 것이고, 여러분이 지원 티켓을 제출해야 할 경우 우리가 여러분을 도울 수 있을 것입니다. 설치 및 업그레이드 지침은 고객 포털 에서 확인할 수 있습니다.
NGINX Plus를 사용해보지 않으셨다면 웹 가속, 부하 분산, 애플리케이션 전송을 위해 사용해보세요. 아니면 향상된 모니터링 과 관리 API를 갖춘 완벽히 지원되는 웹 서버로 사용해보는 것도 좋습니다. 오늘부터 30일 평가판을 통해 무료로 시작하면서 NGINX Plus가 어떻게 애플리케이션을 확장하고 제공하는 데 도움이 될 수 있는지 직접 확인하세요.
listen
지시문에서 spdy
매개변수를 제거해야 합니다(HTTP/2 지원을 활성화하려면 http2
및 ssl
매개변수로 바꿔야 합니다). nginx-plus-http2 패키지를 사용하는 경우, listen
지시문에 spdy
매개변수가 있으면 NGINX Plus가 시작되지 않습니다."이 블로그 게시물에는 더 이상 사용할 수 없거나 더 이상 지원되지 않는 제품이 참조될 수 있습니다. 사용 가능한 F5 NGINX 제품과 솔루션에 대한 최신 정보를 보려면 NGINX 제품군을 살펴보세요. NGINX는 이제 F5의 일부가 되었습니다. 이전의 모든 NGINX.com 링크는 F5.com의 유사한 NGINX 콘텐츠로 리디렉션됩니다."