Nginx와 웹 서버의 역할
업데이트:
Nginx
위키백과
Nginx(엔진 x라 읽는다)는 웹 서버 소프트웨어로, 가벼움과 높은 성능을 목표로 한다. 웹 서버, 리버스 프록시 및 메일 프록시 기능을 가진다.
Nginx는 요청에 응답하기 위해 비동기 이벤트 기반 구조를 가진다. 이것은 아파치 HTTP 서버의 스레드/프로세스 기반 구조를 가지는 것과는 대조적이다. 이러한 구조는 서버에 많은 부하가 생길 경우의 성능을 예측하기 쉽게 해준다.
Basic HTTP server features
- 정적 파일, 인덱스 파일을 서빙한다. 오토인덱싱, 파일 캐싱
- 캐싱을 통한 reverse proxying의 가속화, load balancing, fault tolerance
- 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:
- 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
댓글남기기