proxy의 사전적의미를 보면 "대리" 라는 뜻을 가집니다.
Client와 Server가 직접 통신할 때, 보안상의 문제를 방지하기 위해서 직접 통신하지 않고 중계자를 거쳐 통신합니다.
이때 중계자는 바로 프록시 ( proxy ) 입니다.
Client와 Server 사이에 프록시 서버가 중계를 할 떄,
Client는 프록시 서버를 "Server"라고 인식하고, Server는 프록시 서버를 "Client"라고 인식합니다.
프록시 서버는 서버의 위치에 따라 "Forward 프록시"와 "Reverse 프록시" 2가지로 나뉩니다.
Forward 프록시
클라이언트 편 ( 사용자들을 대신해 인터넷 연결 )
클라이언트 대신 프록시 서버가 목적 서버에 통신해주는 구성을 "포워드 프록시"라고 합니다.
Forward 프록시의 경우 프록시 서버가 클라이언트의 요청을 받아서 외부 서버와 통신을 하고 받은 응답을 서버가 아닌 프록시 서버가 "대신" 해줍니다.
그러므로 클라이언트는 프록시 서버만을 통해 정보를 얻게 됩니다.
따라서 Web 서버쪽에서는 프록시 서버를 통한 액세스 로그가 남습니다.
( 여기서 프록시 서버가 없다면, 클라이언트의 100.000.0.0 이 Web 서버에 액세스 로그로 남습니다. )
Forward 프록시 장점
- 접속 제한 회피
정부, 학교, 기업 등과 같은 기관은 해당 기관에 속한 사람들의 제한적인 인터넷 사용을 위해 방화벽을 사용합니다.
포워드 프록시를 이용하면 사용자가 방문하는 사이트에 직접 연결하지 않고 프록시에 연결하여 이러한 제한을 회피하는데 사용할 수 있습니다.
- 특정 콘텐츠 제한 ( URL 필터링 )
외부의 액세스는 프록시 서버를 경유하므로 사용자 전원의 외부 웹 사이트로의 액세스를 필터링할 수 있습니다.
아래의 예에서, http://example1.co.jp에 액세스하려고 해도,http://example2.co.jp 만 허가하므로 해당 사이트로의 요청이 보내지지 않습니다.
(접속되지 않을 때, 에러용 페이지가 표시되는 등 설정에 따른 화면이 표시됩니다.)
예를 들어 학교 인터넷에서 도박, 음락물 사이트 같은 곳을 포워드 프록시의 필터링 규칙으로 제한할 수 있습니다.
- 캐시 저장 ( 캐싱 기능 )
프록시 서버는 캐시를 저장할 수 있습니다.
다시 동일한 페이지를 요청 했을 때에는 캐시에 남아 있는 정보를 클라이언트에게 주므로, 훨씬 더 빠른 속도를 경험할 수 있습니다.
- 클라이언트 IP 보안
클라이언트에서 프록시 서버를 거쳐 요청을 보내면, 서버 측은 클라이언트의 정보가 아닌 포워드 프록시의 정보를 받습니다.
즉, 서버 측에 클라이언트의 정보를 숨길 수 있습니다.
- 저렴한 비용
Reverse 프록시
Reverse 프록시 = 서버 편 ( 서버를 대신해 인터넷 연결 )
포워드 프록시와 달리 Web 서버쪽에 위치하여 서버의 데이터를 "대신" 클라이언트에게 전달해줍니다.
클라이언트가 바로 서버에 데이터를 요청하여 받아볼 수도 있지만,
그러면 중요한 데이터가 있는 DB 가 ‘최전방’에 노출될 수 있다는 위험이 존재하기 때문에
중간에 프록시 서버를 두고 내부망을 보호하는 역할을 담당합니다.'
Reverse 프록시의 장점
- 보안
클라이언트의 접근을 최초로 받아 요청에 해당하는 Web 서버에 배분해주는 역할을 합니다.
아래 그림을 보면, 클라이언트에서 액세스를 프록시 서버에 URL에 따라 요청을 받을 Web 서버가 바뀌도록 설정하고 있습니다.
이 때 클라이언트의 입장에 있어서는 프록시 서버가 Web 서버와 같은 동작을 하므로
Web서버가 여러 개 존재하는 것을 은폐할 수도 있고, Web 서버의 IP 주소를 알 수 없습니다.
따라서 해커들의 DDoS 공격과 같은 공격을 막는데 유용합니다.
대신 CDN과 같은 리버스 프록시 서버가 공격의 타겟이 될수는 있습니다.
또한, SSL/TLS 암호화 기능도 제공하여 리버스 프록시 서버에만 적용해서 클라이언트 유저 간에만 통신합니다.
실제 서버랑 매 번 보안 통신 비용이 들면 성능이 저하될 수 있기에 클라이언트와 통하는
리버스 프록시 서버에만 SSL/TLS 암호화를 적용하여 효율적으로 암호화 통신을 진행합니다.
- 캐시 저장으로 속도 향상
Forward 프록시와 동일하게 동일한 데이터를 얻을 시 프록시 서버가 저장했던 내용을 돌려줍니다.
- 부하 분산 - 로드 밸런싱(load balancing)
유명한 웹 사이트는 하루에도 수백만명이 방문합니다.
그리고 그러한 대량의 트래픽을 하나의 싱글 서버로 감당해 내기란 어렵습니다.
하지만 리버스 프록시 서버를 여러개의 서버 앞에 두면 특정 서버가 과부화 되지 않게 로드밸런싱이 가능합니다.
차이점
Forward 프록시 | Reverse 프록시 |
클라이언트의 편 | 서버의 편 |
클라이언트의 신원을 숨겨주고 서버와의 통신을 중계 | 서버의 신원을 숨겨주고 클라이언트와의 통신을 중계 |
내부망에서 클라이언트와 Proxy 서버가 통신하여 인터넷을 통해 외부에서 데이터를 가져옵니다. |
내부망에서 Proxy 서버와 내부망서버가 통신하여 인터넷을 통해 요청이 들어오면 Proxy 서버가 받아 응답해줍니다. |
클라이언트가 누군지 감출 수 있습니다. | 본 서버의 IP 정보를 감출 수 있습니다. |
참고자료
https://losskatsu.github.io/it-infra/reverse-proxy/#2-%ED%8F%AC%EC%9B%8C%EB%93%9C-%ED%94%84%EB%A1%9D%EC%8B%9Cforward-%EC%84%9C%EB%B2%84%EB%9E%80
https://engineer-mole.tistory.com/288
'◼ CS 기초 지식 > [네트워크]' 카테고리의 다른 글
HTTP 메서드 종류 및 속성 (0) | 2023.03.20 |
---|---|
HTTP란? 무상태성과 비연결성에 대해 알아보자. (0) | 2023.03.17 |
SSH (Secure SHell) 란? 쉽게 이해해보자. (0) | 2022.09.30 |
쿠키, 캐시, 세션 이란 ? 각 개념들과 차이점에 대해 쉽게 알아보자. (1) | 2022.09.29 |
NAT (Network Address Translation) 란 ? (0) | 2022.09.28 |