Nginx와 웹 서버의 역할

업데이트:

Nginx

위키백과

Nginx(엔진 x라 읽는다)는 웹 서버 소프트웨어로, 가벼움과 높은 성능을 목표로 한다. 웹 서버, 리버스 프록시 및 메일 프록시 기능을 가진다.

Nginx는 요청에 응답하기 위해 비동기 이벤트 기반 구조를 가진다. 이것은 아파치 HTTP 서버의 스레드/프로세스 기반 구조를 가지는 것과는 대조적이다. 이러한 구조는 서버에 많은 부하가 생길 경우의 성능을 예측하기 쉽게 해준다.

비동기 처리방식

Basic HTTP server features

  • 정적 파일, 인덱스 파일을 서빙한다. 오토인덱싱, 파일 캐싱

img

  • 캐싱을 통한 reverse proxying의 가속화, load balancing, fault tolerance

스크린샷, 2017-07-03 20-49-56

  • SSL과 TLS, SNI ,즉 HTTPS를 지원
  • HTTP/2를 지원한다.

Other HTTP server features

  • name-based / ip-based 가상 서버
server {
    listen      80;
    server_name example.org www.example.org;
    ...
}

server {
    listen      80;
    server_name example.net www.example.net;
    ...
}

server {
    listen      80;
    server_name example.com www.example.com;
    ...
}
  • Keep-alive timeout과 파이프라인 연결 지원
  • 접근 로그 포맷 설정, buffered log writing, 빠른 log rotation, 시스템 로그 logging
  • 3xx ~ 5xx 에러 코드 redirection
  • rewite 모듈 : 정규표현식을 이용한 URI 변경
  • client 주소에 따라 다른 function 실행
  • client ip 주소 / password, subrequest의 결과에 기반한 접근 제어
  • HTTP referer 검증
  • PUT, DELETE, MKCOL, COPY, MOVE 메서드
  • FLV와 MP4 스트리밍
  • response 속도를 제한
  • 하나의 주소에서 발생하는 동시접속과 동시요청을 제한
  • ip 기반 geolocation
  • A / B 테스팅
  • request mirroring
location / {
    mirror /mirror;
    proxy_pass http://backend;
}

location = /mirror {
    internal;
    proxy_pass http://test_backend$request_uri;
}
  • embedded Perl
  • njs 스크립트 언어
    • Nginx 기능을 확장할 수 있는 JavaScript언어의 subset.

Mail proxy server features

  • 외부 HTTP 인증 서버를 이용해 IMAP과 POP3서버로 user를 redirection
  • 외부 HTTP 인증 서버를 이용한 유저 인증과 내부 SMTP 서버로의 연결 redirection
  • Authentication methods:
    • POP3: USER/PASS, APOP, AUTH LOGIN/PLAIN/CRAM-MD5;
    • IMAP: LOGIN, AUTH LOGIN/PLAIN/CRAM-MD5;
    • SMTP: AUTH LOGIN/PLAIN/CRAM-MD5;
  • SSL 지원
  • STARTTLS와 STLS의 지원

TCP/UDP proxy server features

  • 일반적인 TCP와 UDP 프록싱
  • TCP를 위한 SSL와 TLS SNI 지원
  • 로드밸런싱, fault tolerance
  • 클라이언트 주소를 기반으로 한 접근 제어
  • 클라이언트 주소에 따라 다른 함수를 실행
  • 하나의 주소로부터 들어오는 동시접속, 제한
  • 접근 로그 포맷 설정, buffered log writing, 빠른 log rotation, 시스템 로그 logging
  • ip 기반 geolocation
  • A / B 테스팅
  • njs 스크립트 언어

Architecture and scalablity

  • 하나의 master와 여러 worker process.
    • 워커 프로세스는 권한 없는 사용자에서 실행
  • 유연한 configuration
  • 클라이언트 서비스 중단없이 실행 파일의 재구성 및 업그레이드
  • 데이터 복사 연산은 최소로 유지
  • 등등 …

Reference

https://nginx.org/en/

https://whatisthenext.tistory.com/123

https://ko.wikipedia.org/wiki/Nginx

태그:

카테고리:

업데이트:

댓글남기기