티스토리 뷰
What is NginX?
NGINX 는 웹 서비스
, 리버스 프록시
, 캐싱
, 로드 밸런싱
, 미디어 스트리밍
등을 위한 오픈 소스 소프트웨어이며
최대 성능과 안정성을 위해 설계된 웹 서버 서비스이다.
HTTP 서버 기능 외에도 NGINX는 이메일(IMAP, POP3 및 SMTP)용 프록시 서버와 HTTP, TCP 및 UDP 서버용 리버스 프록시 및 로드 밸런서로도 사용할 수 있습니다.
프록시
두 PC가 통신을 할 때 직접 하지 않고 중간에서 대리로 통신을 하는 것을 프록시
라고 하고, 중계 역할을 하는 것을 프록시 서버
라고 한다.
리버스 프록시
애플리케이션 서버의 앞에 위치하여 클라이언트가 서버를 요청할 때 리버스 프록시를 호출하고,
리버스 프록시가 서버로부터 응답을 전달받아 다시 클라이언트에게 전송하는 역할을 한다.
이 경우, 클라이언트는 애플리케이션 서버를 직접 호출하는 것이 아니라 프록시 서버를 통해 호출하기 때문에
리버스 프록시는 애플리케이션 서버를 감추는 역할을 하게 된다.
EX) NginX, Apache Web Server
- 로드밸런싱
- 리버스 프록시 뒤에 여러 개의 WAS를 둠으로써, 사용자 요청을 분산할 수 있다.
- End-point 마다 호출 서버를 설정할 수 있어 역할에 따라 서버의 트래픽을 분산할 수도 있다.
- 보안 : 서버에 직접 접근하는 것을 방지하고 네트워크에 리버스 프록시를 구성하여 접근하도록 한다.
포워드 프록시
클라이언트에서 서버로 리소스를 요청할 때 직접 요청하지 않고 프록시 서버를 거쳐서 요청한다.
이 경우 서버에서 받는 IP는 클라이언트의 IP가 아닌 프록시 서버의 IP 이기 때문에 서버는 클라이언트가 누군지 알 수 없다.
즉, 서버에게 클라이언트의 익명성을 보장한다.
캐싱
- 포워드 프록시는 정적 데이터를 저장해두고 동일한 요청의 경우 웹서버 까지 가지 않고 포워드 프록시에서 처리할 수 있는 캐싱 역할을 수행한다.
IP우회
제한
- 보안이 중요한 사내망에서 정해진 사이트에만 연결 할 수 있도록 설정하는 등 웹 사용 환경을 제한할 수 있다.
- 보안이 중요한 사내망에서 정해진 사이트에만 연결 할 수 있도록 설정하는 등 웹 사용 환경을 제한할 수 있다.
로드 밸런싱
서버가 부담하는 부하를 분산해주는 장치 혹은 기술이다.
네트워크에서 IP 주소와 MAC 주소를 이용해 목적지 IP 주소를 찾아가고 출발지로 되돌아오는 구조이다.
부하 분산 방식은 크게 두가지 HW방식
과 SW방식
으로 구분된다.
HW 방식
- Layer 4 (전송계층) 로드 밸런싱
- 네트워크 계층 layer4(전송)에서 실행
- TCP/UDP 포트 정보를 바탕으로 진행
- 데이터 안을 보지 않고 패킷 레벨에서만 진행
- 속도 빠르고 효율 높다
- 데이터 내용을 부호화하지 않아 안전하다
- L7보다 저렴하다
- 사용자의 IP가 수시로 바뀌는 경우 연속적인 서비스 제공이 어렵다.
- layer 7 (응용계층) 로드 밸런싱
- 네트워크 계층 layer7(응용)에서 실행
- TCP/UDP + HTTP의 URI, FTP 파일명, 쿠키 정보 등을 바탕으로 진행
- 캐싱 기능을 제공
- 상세한 라우팅이 가능
- 비정상적인 트래픽은 사전에 필터링 > 안전성 높아짐
- 비용은 L4보다 높다.
SW 방식
리버스 프록시
기반의 로드밸런싱
- HAProxy
- HV, Proxy, TCP/HTTP 로드 밸런싱을 지원하는 제품. Airbnb, Github, naver ncloud에서 사용중.
- Seeasaw
- 구글에서 GO언어로 개발하였으며, 우분투/데비안과 같은 리눅스 배포판에서도 잘 동작됨. Anycast, DSR을 지원함. 기본적으로 L4 network에서 작동하며, L7에서 로드 밸런싱도 가능함.
- KEMP
- AWS 또는 Azure와 같은 클라우드 데이터센터에 배포하여 사용 가능함. 무료이지만 사용 수준의 기능을 제공하며 Apple, Sony 등에서 사용함.
- Nginx
- 기본 수준의 컨텐츠 스위칭 및 여러 서버에 대한 라우팅 지원함
Reference
'Docker 🐋' 카테고리의 다른 글
Nginx 로드 밸런싱 방식 (0) | 2022.06.23 |
---|---|
이미시 build 시 생성되는 <none> image (0) | 2022.06.22 |
nginx.conf 와 default.conf 의 차이점 (0) | 2022.06.20 |
Docker network (0) | 2022.06.19 |
Docker Logging - elk (0) | 2022.06.18 |
- Total
- Today
- Yesterday
- Spring
- docker
- 매트랩
- 자바
- security
- OOP
- Matlab
- 그래프
- spring-cloud
- java
- 면접
- C언어
- 자격증
- 디자인패턴
- 백준
- Solid
- JPA
- interview
- CS
- ajax
- kakao
- springboot
- 스프링부트
- nginx
- 알고리즘
- 릿코드
- 수학
- 프로그래머스
- 스프링
- Algorithm
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |