1. nginx란?
NGINX is open source software for web serving, reverse proxying, caching, load balancing, media streaming, and more. It started out as a web server designed for maximum performance and stability. In addition to its HTTP server capabilities, NGINX can also function as a proxy server for email (IMAP, POP3, and SMTP) and a reverse proxy and load balancer for HTTP, TCP, and UDP servers.(공식문서)
- nginx는 역방향 프록시이다.
- 서버와 클라이언트 사이에 존재하는 서버
2. nginx 전체 흐름
http(80), https(443) --- nginx ---- was(web application server) --- Database
- nginx는 클라이언트의 request를 받아 웹서버로 전달한다.
- nginx는 response 받은 후 다시 클라이언트한테 전달하는 역할을 한다.
1) nginx 통신의 예
- was가 tomcat이라고 가정
- nginx가 https request를 443 port로 받아서 tomcat으로 요청을 보낼 수 있도록 443 port를 server port로 request를 리다이렉트 해준다.
3. nginx 목표
- 가장 빠른 웹 서버를 만드는 것
4. nginx 나온 배경
1) C10K 문제(Connection 10000 Problem)
: 서버 트래픽이 높아져서 서버에 동시 연결된 커넥션이 많아졌을 때 더 이상 커넥션을 형성하지 못하는 문제
2) 아파치 서버의 문제점
[1] 프로세스 할당하기에 메모리 부족
[2] 많은 커넥션 요청이 들어오면 CPU 부하가 높아짐 (컨텍스트 스위칭)
즉, 수많은 동시 커넥션을 감당하기엔 아파치 서버의 구조가 적합하지 않았다.
5. C10K 문제 해결방법
- nginx
6. nginx 장점
[1]수많은 동시 커넥션을 유지
[2]웹서버이므로 정적 파일에 대한 요청은 스스로 처리
[3]웹 서버 역할의 nginx는 클라이언트로부터 동적 파일 요청을 받았을 때만 서버와 커넥션 형성(이때에도 db 접근할 때에만)
[4]비동기 처리
7. nginx구조
1) master process
- 설정 파일 읽고 worker process 생성
2) worker process
- 이 워커에 listen 소켓을 배정 받음
- 이 소켓에 request가 들어오면 connection 형성하고 처리
- 이 커넥션에 요청이 없으면 다른 커넥션 요청부터 처리
- 커넥션은 keep alive 시간만큼 유치
- 이 커넥션은 queue로 관리
[1]event란
- nginx에서는 이런 커넥션 형성과 제거, 새로운 요청을 처리하는 것을 의미.
8. nginx를 사용하는 이유?
[1]빠르다
[2]리버스 프록시로 사용 가능(reverse proxy)
- 리버스 프록시(대신 처리해주는 것을 의미)는 인터넷과 백엔드 그 사이에 있는 서버를 의미
[3]ssl 지원
[4]웹페이지 접근 인증
[5]압축
[6]비동기 처리
대략 1만 개의 요청을 처리할 수 있다.
ps. apache는 동기 처리이다.*
references
1. nginx official reference
https://www.nginx.com/resources/glossary/nginx/
2. nginx 영상
https://www.youtube.com/watch?v=ZJpT-Wa-pZ8
'WebInfo' 카테고리의 다른 글
웹사이트 검색 노출 설정 방법 (0) | 2022.09.19 |
---|---|
proxy server 이해 (0) | 2022.07.10 |
서버를 어떻게 안전하게 운영할 수 있을까? (0) | 2022.05.13 |
JWT(Json Web Token) (0) | 2022.04.19 |
HTTP (0) | 2021.11.09 |