프록시??
프록시 서버를 알아보기 전에 프록시(Proxy)라는 단어가 무엇을 의미하는지 먼저 알아보겠습니다. 프록시(Proxy)란 ‘대리’, ‘대신’이라는 뜻을 가집니다. 따라서 프록시 기능을 사용한다는 것은 누군가의 요청을 대신 전달한다는 뜻으로 알아두시면 됩니다. 만약 사용자가 인터넷을 통해 서버와 통신을 하는 경우에는 사용자의 요청을 중계하여 누군가가 대신 전달해줍니다.
프록시 서버란??
이러한 프록시 기능을 사용하여 클라이언트와 서버 사이에서 중계하는 역할을 하는 서버가 바로 프록시 서버입니다. 클라이언트와 서버 중간에 위치하여 클라이언트의 모든 요청을 프록시 서버가 목적지 서버에 대신 전달하는 것이죠. 만약 프록시 서버를 경유하여 구글에 접속하려는 경우 사용자의 요청은 구글 서버로 가는 것이 아니라 프록시 서버로 가게 되며 프록시 서버가 구글 서버에 요청을 대신 하게 됩니다. 구글 서버의 응답 또한 프록시 서버가 대신 응답을 받은 후 사용자에게 전달해주게 됩니다.

1. 클라이언트에서 프록시 서버로 웹 요청 데이터 전송
2. 프록시 서버에서 다시 구글 서버로 웹 요청 전송
(이때 출발지 IP가 클라이언트에서 프록시 서버로 변환되어 전송합니다.)
3. 구글 서버에서 프록시 서버로 웹 응답 전송
4. 프록시 서버에서 클라이언트로 응답 데이터 전송
(응답 데이터 또한 출발지 IP가 구글 서버에서 프록시 서버로 변환되어 전송합니다)
프록시 서버는 왜 사용하는가??
그렇다면 클라이언트는 그냥 구글 서버에게 바로 데이터를 보내면 될 텐데 굳이 프록시 서버를 왜 사용하는 걸까요?? 이는 여러 가지의 이유들이 있습니다.
첫번째는 캐시를 사용하기 위함입니다. 프록시 서버는 사용자의 요청된 내용을 자신의 캐시에 저장해 놓습니다.그러면 다른 클라이언트가 접속할 때 캐시된 웹 페이지가 있으면 인터넷으로 갈 필요없이 프록시 서버에서 캐시에 저장된 내용을 바로 클라이언트에게 전송해줍니다. 외부 트래픽을 줄임으로써 대역폭을 감소할 수 있습니다. 또한 자주 요청되는 컨텐츠라면 프록시 서버가 대신 응답 해줌으로써 속도를 향상 시킬 수 있는 효과가 있습니다.
두번째는 보안적인 목적으로 사용합니다. 프록시 서버를 경유함으로써 클라이언트의 IP주소를 외부에 노출되지 않을 수 있습니다. 클라이언트가 구글 서버에 요청을 하면 중간에서 프록시 서버가 대신 요청하기에 클라이언트의 IP가 아닌 프록시 서버의 IP로 보이게 됩니다. 실제 클라이언트의 IP가 전달되지 않기에 구글 서버는 실제 클라이언트의 IP를 알 수 없습니다. 또한 클라이언트가 외부로 보내는 컨텐츠를 검사함으로써 데이터 유출을 보호할 수도 있으며 반대로 외부에서 들어오는 컨텐츠를 검사하여 악성코드를 검사하는데 사용할 수도 있습니다.
세번째는 사용자들의 로그를 기록하는 목적으로 사용합니다. 사용자들의 사용 기록을 프록시 서버에 기록해 둘 수 있습니다. 어떤 사용자(IP)가 어느 사이트에 접속했는지, 얼마나 접속해 있는지 확인할 수 있습니다. 더군다나 프록시 서버에서 접속할 수 있는 웹 사이트를 제한할 수 있기에 기업에서 사용자 제어 목적으로 사용하기도 합니다.
네번째는 우회 접속 용도로 사용합니다. 각 나라에서 사용하는 IP대역은 특정하게 정해져 있습니다. 이를 기반으로 특정 지역에서 접속을 제한하는 사이트가 있습니다. 이럴 경우 접속이 가능한 다른 지역의 프록시 서버를 이용하면 접속하는 IP가 해당 지역의 프록시 서버로 변경되기에 제한된 사이트를 접속할 수도 있습니다. 이러한 원리로 특정한 사이트를 우회 접속하는 목적으로 사용할 수 있습니다. 또한 해커들의 공격 수법으로 IP를 숨기기 위해 여러 프록시 서버를 경유하는 기법을 Proxy Chaining이라고 합니다.
프록시 서버 종류
프록시 서버가 어느 위치에서 어떤 역할을 하는지에 따라 프록시 서버의 종류가 나누어집니다.
포워드 프록시(Forward Proxy)
위에서 설명한 일반적인 프록시 방법으로 프록시 서버가 사용자의 요청을 전달받아 목적지 서버에 요청을 대신 전송합니다. 그리고 얻은 결과를 프록시 서버가 사용자에게 다시 전송함으로써 중계자 역할을 합니다. 예를 들어 기업 내부의 사용들이 외부 사이트들에 접속하기 위해 프록시 서버에게 웹 요청을 전송하게 되면 프록시 서버는 이 사용자들을 대신해서 외부에 있는 웹 사이트에 요청을 보내게 됩니다. 여러 웹 사이트에서 받은 결과를 요청했던 사용자들에게 각각 다시 전달하게 됩니다.

리버스 프록시(Reverse Proxy)
리버스 프록시 또한 사용자의 요청을 받아 목적지 서버로 대신 전달하는 것은 동일합니다. 다만 요청을 전달하는 서버가 달라지며 그에 따라 프록시 서버가 위치하는 곳도 달라집니다. 리버스 프록시 서버는 내부망 서버들의 앞에 위치하여 외부에서 들어오는 다수 사용자들의 요청을 내부망 서버들을 대신해서 먼저 받습니다. 그 후 사용자의 요청을 뒤쪽(reverse)에 위치한 내부망 서버로 전달하게 되고 이에 대한 응답을 사용자에게 전달합니다. 그러기에 전달할 내부망의 서버 정보를 미리 알고 있으며 전달할 서버가 여러 대인 경우 요청을 분산하여 로드밸런싱 역할을 하기도 합니다. 이렇게 내부 서버 앞에 프록시를 구성하는 이유는 보안적인 측면이 있습니다. 예를 들어 기업에서는 대외 서비스를 하는 공인망 대역(DMZ존)을 만들어 외부 네트워크와 내부 네트워크를 분리해서 사용합니다. 보안이 유지되어야 하는 중요한 서버들은 내부 네트워크에 위치시켜 외부에서 존재를 알 수 없도록 하고 리버스 프록시 서버가 외부에서 들어오는 사용자들의 요청을 대신 받아 전달하는 것입니다. 이럼으로써 외부 사용자들은 내부의 서버 정보를 알 수 없기에 보안적인 측면을 향상시킬 수 있습니다.

오픈 프록시(Open Proxy)
프록시 서버를 인터넷의 모든 사용자가 사용할 수 있도록 오픈한 서버입니다. 사용자는 오픈된 프록시 서버를 사용하여 인터넷 이용 시 자신의 IP를 숨길 수 있습니다. 이로 인해 IP추적을 방지하거나 특정한 사이트를 우회하여 접속할 수 있습니다.
오늘은 프록시 서버에 대해서 알아보았습니다. 지금까지 일하면서 경험했던 L4스위치와 개념이 유사하다 보니 수월하게 이해할 수 있었습니다.
[참고사이트]
https://liveyourit.tistory.com/251
https://dany-it.tistory.com/107
https://hooongs.tistory.com/333
'Web' 카테고리의 다른 글
| [zsh] 유용한 플러그인 설치하기 (zsh-syntax-highlighting, zsh-autosuggestions) (3) | 2025.08.12 |
|---|---|
| [MacOS] 맥북 SSH 접속 셋팅하기 (+RSA Key) (0) | 2025.06.28 |
| [curl] HTTP,SSL 인증서 요청 확인하기 (1) | 2024.05.24 |
| WSL 윈도우 Ubuntu 비밀번호 분실 시 초기화 (1) | 2023.10.17 |
| [Web] URL과 URI의 차이 (0) | 2021.09.10 |