Proxy & Nginx란?
📌 Nginx
Nginx는 경량 웹 서버입니다. 클라이언트로부터 요청을 받았을 때 요청에 맞는 정적 파일을 응답해주는 HTTP Web Server로 활용되기도 하고, Reverse Proxy Server로 활용하여 WAS 서버의 부하를 줄일 수 있는 로드 밸런서로 활용되기도 합니다.
Nginx는 Event-Driven 구조로 동작하기 때문에 한 개 또는 고정된 프로세스만 생성하여 사용하고, Nginx는 새로운 요청이 들어오더라도 새로운 프로세스와 쓰레드를 생성하지 않기 때문에 프로세스와 쓰레드 생성 비용이 존재하지 않고, 적은 자원으로도 효율적인 운용이 가능합니다.
이러한 Nginx의 장점 덕분에 단일 서버에서도 동시에 많은 연결을 처리할 수 있습니다.
- Apache 의 C10K 문제점 해결(한 시스템에 동시 접속자수가 1만명이 넘어갈 때 효율적방안)을 위해 만들어진 Event-Driven 구조의 웹서버SW 라고 합니다.
OSI7 Layer 중 application Level 아래의 Level 에서 Nginx 같은 웹서버가 HTTP 통신을 담당합니다.
프록시(Proxy)
프록시의 사전적 의미는 ‘대신’, ‘대리’이다. 말 그대로 두 PC가 통신을 할 때 직접 하지 않고 중간에서 대리로 통신을 하는 것을 ‘프록시’라고 하고, 중계 역할을 하는 것을 ‘프록시 서버’ 라고 부른다. 즉, 클라이언트와 서버 사이의 ‘중계 서버’라고 생각하면 된다. 프록시 서버는 보안 목적이나 캐싱 등의 기능을 제공한다.
프록시 서버는 서버가 어디에 위치하느냐에 따라 포워드 프록시와 백워드 프록시로 나뉜다. 각각의 경우에, 위치 뿐만 아니라 용도와 역할이 서로 달라지는데 자세히 알아보도록 하겠다.
1. 포워드 프록시 (Forward Proxy)
일반적으로 프록시라고 말하면 포워드 프록시를 말한다.
클라이언트에서 서버로 리소스를 요청할 때 직접 요청하지 않고 프록시 서버를 거쳐서 요청한다. 이 경우 서버에서 받는 IP는 클라이언트의 IP가 아닌 프록시 서브의 IP이기 때문에 서버는 클라이언트가 누군지 알 수 없다. 즉, 서버에게 클라이언트가 누구인지 감춰주는 역할을 한다.
이러한 특징 때문에 기업 사내망에서 주로 사용된다.
1.1 포워드 프록시의 특징/역할
- 캐싱 : 첫 번째 요청 이후부터는 동일한 요청이 들어올 경우, 프록시 서버에 캐싱된 내용을 전달해줌으로써 성능을 향상시킬 수 있다.
- 웹 서비스에서 요청이 발생할 때마다 1) 요청 → 2) 요청 전송 → 3) 요청 접수 → 4) 응답 생성 → 5) 응답 전송 → 6) 응답 수신 과 같은 과정을 반복해서 거친다. 요청이 한 번 뿐일 때는 괜찮지만, 중복되는 요청을 매번 처리하기에는 심한 자원낭비가 생기고, 웹 서버의 부하가 증가할 것이다. 이를 위해 포워드 프록시는 정적 데이터를 저장해두고 동일한 요청의 경우 웹서버 까지 가지 않고 포워드 프록시에서 처리할 수 있는 캐싱 역할을 수행한다.
- IP 우회 : 위에 언급했듯이 클라이언트 측에서 프록시 서버를 거쳐 웹 서비스를 이용할 경우, 서버 측에서는 요청을 받을 때 클라이언트의 IP가 아닌 프록시 서버의 IP를 전달받게 된다. 즉, 서버 측에 클라이언트의 정보를 숨길 수 있게 되는 것이다.
- 제한 : 보안이 중요한 사내망에서 정해진 사이트에만 연결 할 수 있도록 설정하는 등 웹 사용 환경을 제한할 수 있다.
2.리버스 프록시(Reverse Proxy)
리버스 프록시는 애플리케이션 서버의 앞에 위치하여 클라이언트가 서버를 요청할 때 리버스 프록시를 호출하고, 리버스 프록시가 서버로부터 응답을 전달받아 다시 클라이언트에게 전송하는 역할을 한다.
이 경우, 클라이언트는 애플리케이션 서버를 직접 호출하는 것이 아니라 프록시 서버를 통해 호출하기 때문에 리버스 프록시는 애플리케이션 서버를 감추는 역할을 하게 된다.
2.1 Reverse Proxy 사용으로 얻는 장점은 크게 아래와 같다.
- 보안 : 외부 사용자는 실제 내부망에 있는 서버의 존재를 모른다. 모든 접속은 Reverse Proxy 서버에게 들어오며, Reverse Proxy는 요청에 맵핑되는 내부 서버의 정보를 알고 요청을 넘겨준다. 따라서 내부 서버의 정보를 외부로부터 숨길 수 있다.
- 로드밸런싱 : 리버스 프록시 뒤에 여러 개의 WAS를 둠으로써, 사용자 요청을 분산할 수 있다. End-point 마다 호출 서버를 설정할 수 있어 역할에 따라 서버의 트래픽을 분산할 수도 있다.
'System > 네트워크' 카테고리의 다른 글
HTTP vs HTTPS (0) | 2022.04.12 |
---|---|
Nginx와 Certbot(Let's Encrypt)으로 HTTPS 설정하기 (0) | 2022.03.31 |
교차 출처 리소스 공유 (CORS) 이해하기 (0) | 2022.03.31 |
XSS, CSRF 이해하기 (0) | 2022.02.20 |
웹 페이지 렌더링 방식(CSR vs SSR vs SSG) (0) | 2022.01.26 |