-
[Nginx] Nginx의 5가지 주요 기능에 대해서 알아보자. (로드 밸런싱, 캐싱, 장애 대응, 가상 호스팅, Keep Alive 제어)Programing Study/E.T.C 2022. 12. 30. 20:17728x90반응형
Nginx에 주요 기능이 총 5가지가 있다.
- 장애를 대응하는 방법
- 로드 밸런싱으로 부하분산을 수행하기
- Keep Alive로 자원을 효율적으로 이용하기
- Sub-Domain으로 다양한 서버 호스팅
- 캐싱 처리로 더 빠른 속도를 제공
장애 대응
장애 대응은 Backend 서버에 대한 요청과 응답을 토대로 장애를 판단하는 서비스이다.
장애 대응을 위해서는 Upstream Module을 사용하는데, max_fails, fail_timeout으로 서버의 상태를 확인한다.
그 설정으로 서버 상태를 확인해서 설정 값을 초과하면 백업 서버로 서비스가 활성화되게 하며 장애를 대응한다.
- max_fails=n : n으로 지정된 횟수만큼 연결 실패하면 서버 다운된 것으로 판단.
- fail_timeout=n : max_fails가 지정된 상태에서 n값이 설정만큼 서버가 응답하지 않으면 서버가 다운된 것으로 판단.
upstream service { ip_hash; server 192.168.0.121:80 server 192.168.0.188:80 max_fails=5 fail_timeout=15s; }
로드 밸런싱
클러스터에 설정되는 서버 정보와 포트를 upstream 모듈로 설정해서 첫 번째 설정된 서버가 우선으로 처리
upstream myservice { ip_hash; server 192.168.0.121:80; server 192.168.0.188:80; } server { listen 80; server_name localhost; location / { proxy_pass http://myservice; }
Keep Alive 제어
Keep Alive는 Http 소켓 연결이 종료된 시점부터 웹 서버에 설정된 Timeout 까지 기존 소켓을 유지하는 기능으로, Keep-Alive 옵션으로 0이 가면 비활성화 1이면 활성화로 설정할 수 있다.
keepalive_timeout 으로 커넥션 시간을 설정하고 해당 설정 시간이 만료되면 Keep Alive 소켓 연결을 해제한다.upstream myservice { server 192.168.0.121:80; keepalive 1 } Server { keepalive_timeout 10 }
Sub-Domain
가상호스트 방식으로 두 개의 server을 하나의 웹서버에서 호스팅할 수 있게 해준다.
server { listen 80; server_name test1.mydomain.com location / { root /var/www/test1/public_html; } server { listen 80; server_name test2.mydomain.com location / { root /var/www/test2/public_html; }
캐싱 처리
캐싱이란 웹 서비스의 이미지,CSS, 자바스크립트 같은 정적인 데이터를 저장하여
웹 서비스의 응답 속도를 보다 빠르게 처리 가능하다- location : 캐시로 저장할 파일 설정
- expires : 데이터의 저장 기간 설정
- expires 1 (m, y) 설정 기간 동안 정적 데이터를 보관하는 설정으로 m은 달 y는 년
location ~* \.(?:jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|mp4|ogg|ogv|webm|htc)$ { expires 1M; access_log off; add_header Cache-Control "public"; }
오늘은 Nginx의 대표적인 기능 5가지에 대해서 알아보았다.
도움되셨으면 하단의 광고 클릭!
728x90반응형'Programing Study > E.T.C' 카테고리의 다른 글
Yarn 설치 (0) 2022.12.28 Ubuntu18.04 - nvm 및 nodejs 최신버전설치 (0) 2022.12.28 E.T.C) HTTP 상태코드 (0) 2022.02.18 Git) ignore 안될때 (node_modules 제거) (0) 2022.01.27 Node / Express: EADDRINUSE, Address already in use - Kill server (0) 2022.01.26