Nginx를 사용하기 위해 먼저 proxy server를 이해하고자 한다.
1. Proxy Server
먼저 proxy server는 다음과 같다.
A proxy server is a system or router that provides a gateway between users and the internet. Therefore, it helps prevent cyber attackers from entering a private network. It is a server, referred to as an “intermediary” because it goes between end-users and the web pages they visit online...
Proxies provide a valuable layer of security for your computer. They can be set up as web filters or firewalls, protecting your computer from internet threats like malware.(출처)
다음으로 forward proxy, reverse proxy에 대해 이해해보자. 핵심은 다음과 같다.
The key difference between a reverse proxy and a forward proxy is that a forward proxy enables computers isolated on a private network to connect to the public internet, while a reverse proxy enables computers on the internet to access a private subnet.(출처)
(1) Forward Proxy
Forward Proxy(a.k.a proxy, proxy server, web proxy)는 클라이언트 그룹(e.g. 기관이나 회사)앞에 위치하는 서버로, 그룹 내 속해있는 클라이언트가 외부 인터넷에 요청을 보내면 프록시 서버가 그 요청을 먼저 받고, 클라이언트를 대신하여 외부와 통신한다. Forward Proxy는 클라이언트 쪽 네트워크에서 시작된 요청을 처리한다고 생각하면 된다.
위 그림에서 처럼 특정 소속 컴퓨터를 A, forward proxy 서버를 B, 접속하고자 하는 외부 사이트(또는 서버)를 C라고 하자. 원래는 A가 C에게 직접 요청을 보내지만, forward proxy가 설정되어 있으면 A가 B에게 요청을 보내고 B가 요청을 C로 전달한다. 이후 B가 C에게 응답을 받고 해당 응답을 다시 A에게 보내준다.
Forward Proxy를 사용하는 상황은 다음과 같다.
- 특정 컨텐츠에 대한 액세스 차단: 기관에 속한 사용자 그룹이 특정 사이트에 접근하는 것을 차단할 수 있다. 예를 들어 학교 네트워크에서 컨텐츠 필터링 규칙이 적용된 proxy server를 활성화하면 SNS 접속 등을 차단할 수 있다.
- 네트워크에서 개인의 신원을 보호하기 위해: proxy server를 두면 특정 사이트에 접근하는 ip 기록이 개인의 ip주소가 아닌 proxy server의 ip 주소만 남게 된다. 이를 통해 개인의 ip 정보를 남기지 않고 활동할 수 있다.
(2) Reverse Proxy
Reverse Proxy는 웹 서버 앞에 위치하며, 외부 클라이언트의 요청을 받으면 해당 요청을 서버 네트워크 내에 요청을 보내고 응답을 받아 외부로 보내는 역할을 한다. Reverse Proxy는 서버 쪽으로 들어오는 요청을 처리한다고 생각하면 된다.
위 그림에서 처럼 외부 사용자를 D, reverse proxy 서버를 E, 응답을 내어줄 서버를 F라고 하자. 일반적으로는 D가 직접 F에게 요청하지만 reverse proxy를 사용하면 D의 요청을 E가 받고, E가 F에게 요청을 보낸다. 이후 받은 응답을 E가 다시 D에게 보내게 된다.
Reverse Proxy를 사용했을 때의 이점은 Load Balancing, Caching, SSL 암호화, DDoS 공격(원본서버의 IP 주소를 공개하지 않으므로)으로부터의 방어 등이 있다.
[참고]
- https://www.theserverside.com/feature/Forward-proxy-vs-reverse-proxy-Whats-the-difference
- https://www.cloudflare.com/ko-kr/learning/cdn/glossary/reverse-proxy/
'개발' 카테고리의 다른 글
Gunicorn & Uvicorn (0) | 2023.07.09 |
---|---|
[Nginx] 맥os에 Nginx 설치하기 (0) | 2023.07.08 |
[fastapi] logging format 설정 (0) | 2023.07.08 |
[Miniconda] CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'. 에러 (0) | 2023.07.08 |
TensorRT와 Triton (1) | 2023.06.25 |