NGINX 애플리케이션 가속화 및 성능 향상시키기
전 세계에서 가장 인기 있는 웹사이트의 40% 이상이 사용하는 최신 웹 서버이자 로드 밸런서인 NGINX 와 NGINX Plus 는 애플리케이션의 전송과 성능을 최적화하는 데 도움이 될 수 있습니다. NGINX는 단일 웹 서버 인스턴스에서 10,000명의 동시 사용자에게 서비스를 제공해야 하는 C10K 문제를 해결하기 위해 만들어졌습니다.
기술은 전례 없는 속도로 발전하고 있으며, 사용자들은 그 어느 때보다 앱 가속화를 요구하고 있습니다. 연구에 따르면 웹 페이지 로딩 시간이 1초 증가하면 페이지 조회수는 11% 감소하고 전환율은 7% 감소하며 고객 만족도는 16% 감소합니다. 사용자는 웹사이트나 앱이 느리면 귀중한 시간이나 돈을 소비하지 않습니다. 콘텐츠를 빠르게 전송하지 못하면 고객에게 서비스를 제공할 수 없습니다. 결론은 애플리케이션 성능과 애플리케이션의 생존은 모두 사용자가 만족할 만한 서비스를 제공하는 데 달려 있다는 것입니다.

NGINX는 이벤트 중심, 모듈식, 단일 스레드, 비동기 아키텍처로 상용 하드웨어에서 매우 잘 확장됩니다. NGINX는 Linux와 같은 최신 운영체제의 기본 성능을 사용하여 메모리, CPU, 네트워크 대역폭의 사용량을 효율적으로 관리하여 앱 가속을 극대화합니다. 이러한 최적화를 통해 기존 솔루션에 비해 서버당 최소 10배(많게는 100~1,000배) 더 많은 요청을 처리할 수 있습니다.
목차
1. 애플리케이션 속도 및 성능을 개선하는 간단한 방법
1-1. NGINX 및 NGINX Plus 캐싱과 로깅
1-2. NGINX 및 NGINX Plus Keepalive 활성화
1-3. 파일 압축
1. 애플리케이션 속도 및 성능을 개선하는 간단한 방법
1-1. NGINX 및 NGINX Plus 캐싱과 로깅
JavaScript, CSS, Images와 같은 정적 파일을 사용자의 브라우저 캐시에 캐싱하면 성능에 큰 도움이 될 수 있습니다. 정적 파일 요청의 응답 헤더에 만료 시간을 추가하면 쉽게 구현할 수 있습니다.
정적 파일 관리를 더욱 최적화할 수 있습니다. 스타일시트나 이미지와 같은 정적 파일에 대한 파일 로깅을 비활성화하면 disk I/O를 크게 개선할 수 있습니다. 대부분의 경우 정적 파일 요청을 기록할 필요가 없으므로 access_log 지시문을 사용하여 비활성화할 수 있습니다.
location ~* .(ico|js|css|png|gif|jpe?g)$ {
expires 7d;
access_log off;
}
NGINX 는 정적이지 않은 요청을 캐싱하고 로드 밸런서를 통해 요청을 분산하는 데도 유용합니다. 이는 워드프레스나 NodeJS와 같은 웹사이트와 애플리케이션의 속도와 성능을 개선하는 데 유용합니다. 캐싱 옵션은 사용자 정의할 수 있으며, 캐싱할 요청, 캐싱을 제한하거나 우회할 시기 등을 지정할 수 있습니다.
1-2. NGINX 및 NGINX Plus Keepalive 활성화
웹 가속을 위해 keepalive 연결을 활성화하는 것은 웹사이트 및 애플리케이션 성능을 향상시키는 또 다른 중요한 방법입니다. NGINX 를 사용하면 약 2.5MB의 메모리로 10,000개의 연결을 유지할 수 있습니다. 이는 메모리 부족에 대한 걱정 없이 keepalive_timeout 지시문의 값을 크게 늘릴 수 있음을 의미합니다.
keepalive_timeout 65;
사용자 성능 관점에서 목표는 가능한 많은 keepalive 연결을 허용하는 것입니다. 이 주제에 대해 자세히 알아보려면 HTTP Keepalive 연결 및 웹 성능을 위해 NGINX 를 사용한 HTTP Keepalive 연결을 참조하세요.

1-3. 파일 압축
GZIP은 자산을 요청한 사용자에게 배포하기 전에 압축합니다. 이는 페이지와 스타일시트의 크기를 최대 70%까지 크게 줄일 수 있기 때문에 웹 가속의 중요한 구성 요소입니다. 이렇게 하면 대역폭을 절약할 수 있지만 더 중요한 것은 자산의 물리적 크기가 작아지기 때문에 웹 자산이 사용자에게 도달하는 데 걸리는 시간이 줄어든다는 것입니다.
득별한 요구 사항이 없는 한 구성에 gzip on 지시문을 포함하는 것이 가장 효과적입니다. gzip_comp_level 지시문을 사용하여 더 높은 압축 수준(예: 6)을 설정할 수 있지만 반드시 성능이 향상되지는 않습니다. 압축 레벨 6은 1보 약 2배 느리지만 복사 압축률의 차이는 약 4%에 불과합니다. 기본적으로 NGINX 는 text/html MIME 유형에 대해서만 응답을 압축합니다. gzip_types 지시문을 사용하여 압축할 추가 MIME을 지정할 수 있습니다. GZIP 최적화에 대한 자세한 내용은 NGINX Plus 관리 가이드에서 압축 및 압축 해제를 참조하세요.
server {
gzip on;
gzip_comp_level 1;
gzip_types text/plain text/css application/json application/x-javascript text/xml
application/xml application/xml+rss text/javascript;
}
Remider: 다른 구성 변경과 마찬가지로 이러한 설정을 적용하려면 NGINX 구성을 reload 해야 합니다.
NGINX와 NGINX Plus 는 단순한 웹 서버로 사용하든 복잡한 로드 밸런싱 설정에서 사용하든 사용자의 요구에 맞게 앱을 가속화하는 데 도움이 될 수 있습니다. 애플리케이션의 성능을 개선할 수 있는 몇 가지 방법에 대해 설명했습니다. 느린 애플리케이션이 비즈니스에 미치는 영향에 대해 자세히 알아보려면 “It’s All About the User… And Other Facts You Can’t Ignore” ebook을 다운로드하여 다음의 간단한 단계를 시도해보세요!
NGINX Plus를 직접 사용해 보시려면 30일 무료 평가판을 신청하거나, NGINX STORE에 연락하여 문의하십시오.
NGINX에 대한 최신 정보들을 빠르게 전달받고 싶으시다면, 아래의 뉴스레터를 구독하세요.
댓글을 달려면 로그인해야 합니다.