프록시 서버란 클라이언트와 서버 중간에 위치하여 대리로 통신을 중계해주는 서버이다. 클라이언트는 프록시 서버를 통해서 다른 네트워크나 서버에 간접적으로 접속할 수 있다. 프록시 서버를 사용하는 두 가지 방법으로 포워드 프록시와 리버스 프록시가 존재한다.
포워드 프록시는 프록시 서버가 클라이언트 앞에 위치한다. 클라이언트는 프록시를 향해 요청을 전송하고, 프록시의 규칙에 따라 정해진 서버에 요청을 전달한다.
MAC의 경우 Apple 메뉴 > 시스템 환경설정 > 네트워크 > Wi-Fi > 고급 > 프록시 의 단계로 프록시를 확인해 볼 수 있다.
위 프록시 설정을 설명해 보자면, 나의 PC에서 다른 호스트에 요청을 보낼 때 항상 프록시를 통해서 요청하게 된다. 하지만 설정해 놓은 프록시가 없기 때문에 인터넷을 통해 해당 호스트와 통신하게된다.
만약 나의 PC가 사내 내부망에 존재하고 특정 프록시를 통해서만 통신을 한다면 모든 요청은 그 프록시에게 전달되고, 서버와의 통신도 프록시가 대신하여 요청의 결과를 돌려준다.
프록시 설정에서 '프록시 설정값을 우회(bypass)할 호스트와 도메인:' 의 의미는
해당 호스트와 도메인으로 보내는 요청은 프록시가 아닌 직접 보내는 설정이다.
만약 나의 로컬 PC가 내부망에 존재하고, 내부망의 모든 호스트가 외부로 통신하기 위해서는 12.34.56.78:8888 이라는 프록시를 사용해야 한다.
이 때 https://www.naver.com 에 접속해 본다고 가정해보자.
리버스 프록시는 프록시 서버가 서버 앞에 위치한다. 클라이언트가 서버로 보내는 요청은 서버가 속한 내부망 앞 단에 위치한 프록시 서버를 통해서만 가능하다.
요청을 보내고자 하는 서버인 https://www.server.com 가 내부망에 존재하고, 내부망 앞단에는 리버스 프록시가 있어 해당 프록시로만 통신이 가능하다.
이 때 https://www.server.com에게 요청을 보낸다고 가정하자.
1. 먼저 hosts 파일을 참조하여 https://www.server.com 의 IP가 정의되어 있는지 확인한다.
2. hosts 파일에 존재하지 않는다면 DNS 서버를 통해 https://www.server.com 의 IP를 확인한다.
3. DNS 서버를 통해 얻은 https://www.server.com 의 IP에게 요청을 보내는데 이 IP는 리버스 프록시의 IP이다.
4. 리버스 프록시는 클라이언트로 부터 요청을 받고, 프록시의 설정에 따라 알맞은 서버에게 요청을 전달한다.
5. 프록시 서버는 요청에 대한 응답을 클라이언트에게 전달한다.
6. 응답을 받은 클라이언트의 입장에서 응답을 보낸 호스트는 서버의 IP가 아니라 프록시 서버의 IP가 된다.
https://www.lesstif.com/system-admin/forward-proxy-reverse-proxy-21430345.html