기본적으로 대리라는 의미로, 정보를 대신 전달해주는 주체
내부 네트워크에서 인터넷 접속을 할 때, 빠른 엑세스나 안전한 통신 등을 확보하기 위한 중계서버를 프록시 서버(proxy server)라고 한다.
클라이언트와 웹 서버의 중간에 위치하고 있어, 대신 통신을 받아주는 것이 프록시 서버
포워드 프록시; Forward Proxy
클라이언트 대신 프록시 서버가 목적 서버에 통신해주는 구성을 일컫는다.
- 클라이언트 → 포워드 프록시 → 인터넷 → 원격(목적) 서버
프록시를 사용하지 않은 경우
포워드 프록시의 경우 아래와 같이 프록시 서버가 클라이언트-웹 서버 중간에 위치해 외부 웹 서버와 통신을 한다.
그러므로 클라이언트는 프록시 서버만을 통해 정보를 얻게 된다.
따라서 웹 서버 쪽에서는 프록시 서버를 통한 엑세스 로그가 남는다.
포워드 프록시의 경우는 어떤 프록시 서버를 경유하도록 할 것인가는 클라이언트에서 설정할 수 있다.
e.g.) 윈도우10은 [windows 메뉴] > [설정] > [네트워크와 인터넷] > [프록시] 에서 설정 가능
장점
- 캐시 저장(액세스 고속화)
프록시 서버에 캐시를 저장할 수 있다. 다시 동일한 페이지를 리퀘스트 했을 때에는 캐시에 남아있는 정보를 클라이언트에게 줄 수 있어, 사이트 접속 속도가 빨라진다. - URL 필터링
외부의 액세스는 프록시 서버를 경유하므로 사용자 전원의 외부 웹 사이트로의 액세스를 필터링할 수 있다. 아래의 예는 http://example.co.jp 에 접근하려고 할 때 해당 사이트로의 리퀘스트가 보내지지 않기에, 에러용 페이지가 표시되는 등 접속이 불가하다.
이런 포워드 프록시는 일반적으로 회사나 조직 내에서 내부 네트워크의 보안을 강화하거나 인터넷 사용을 관리하는 데 사용될 수 있다.
리버스 프록시; Reverse Proxy
웹 서버쪽에 프록시 서버가 위치하고있어 클라이언트의 접근을 최초로 받아 리퀘스트에 해당하는 웹 서버에 배분해주는 역할을 한다.
- 클라이언트 → 리버스 프록시 → 웹 서버
위의 경우, 클라이언트에서 액세스를 프록시 서버에 집약해서 URL에 따라 리퀘스트를 받을 웹 서버가 바뀌도록 설정하고 있다.
예시로 nginx를 프록시 서버로 두었을 때의 그림이다.
위와 같이 사용자 → nginx → 웹서버로 구성해 사용자의 요청을 nginx가 먼저 받아 웹서버로 전달해주도록 구성할 수 있다.
장점
- 부담 분산(로드 밸런싱 )
- 설정으로 정적 콘텐츠와 동적 콘텐츠의 보는 곳을 나눔으로써 메모리 사용량의 효율화를 할 수 있다.
- 캐싱
- 포워드 프록시와 마찬가지로 동일한 데이터를 요청할 때 프록시 서버가 저장한 내용을 응답한다.
- 보안 대책, 바이러스 대책
- SSL 터미네이션 : nginx는 클라이언트와의 연결에 대한 SSL 끝점 역할이 가능합니다. 수신 SSL 연결을 처리 및 해독하고 프록시 서버의 응답을 암호화한다.
- 압축 : 프록시 서버가 압축된 응답을 보내지 않는 경우 클라이언트로 보내기 전에 응답을 압축하도록 nginx를 구성할 수 있다.
- 웹 서버 인프라 정보 유출 방지 : 클라이언트의 입장에 있어서는 프록시 서버가 웹 서버와 같은 동작을 하니까 웹 서버가 여러 개 존재한다는 사실 또한 모르게할 수 있다.
- 통신 시 프록시 서버에 집약되므로 프록시 서버 내에 시큐리티 대책, 바이러스 대책 등을 구현해 웹 서버로의 부정 액세스, 사용 등을 방지할 수 있다.
출처
'Web' 카테고리의 다른 글
Exception? Error? (0) | 2023.12.23 |
---|---|
[WebRTC] 통신 형식 및 기본 동작에 필요한 서버 (0) | 2023.03.06 |
선생님.. 소셜 로그인이 하고싶어요.. (2) | 2023.02.16 |
이젠 잊지 말자, Servlet (0) | 2022.12.31 |