본문 바로가기

참고자료

포워드 프록시 와 리버스 프록시

한번쯤 들어본 톰캣과 같은 was나 아파치 웹 서버는 한번쯤 들어봤을 것이다. 

아파치 웹서버에는 mod_proxy 라는 모듈에서 forward proxy 와 reverse proxy 이 두가지 기능을 제공한다.

반면 nignx는 reverse proxy 만 제공한다고 한다.  

그럼 proxy와 reverse proxy, forward proxy란 무엇일까

 

1.proxy 서버

프록시 서버는 컴퓨터 시스템이나 프로그램이다.

클라이언트가 자신을 통해 네트워크 서비스에 간접적으로 접속을 할 수 있게 하는 역할이다. 

 

즉, 서버와 클라이언트 사이에 있는 녀석이다.

프록시를 둠으로서 서버로 요청된 내용을 임시저장해 놓고 (캐싱)

 

그럼 왜 쓸까?

-- 동일한 요청에 대해 응답을 바로 주는 등의 장점때문에 사용한다.

    즉, 동일한 요청에는 서버를 다시 호출하지 않는다.

-- 트래픽의 분산도 가능하다.

   일부 프록시 서버는 트래픽 분산 기능을 제공한다. (= 로드 밸런싱)

   또 엔드포인트( URL ) 마다 호출하는 서버를 설정할 수 있다.

   즉, 각각의 서버의 역할을 정해줘서 한 서버만 계속 부하를 주는것을 방지 할 수 있다.

-- https 에 대한 예시

   프록시 서버가 https 인증서 관리를 하고

   요청을 처리하는 서버는 http로만 서비스 할 수도 있다. 

   그리고 서버를 실행할 때마다 인증서 관리를 하지 않아도 된다. (캐싱을 해서?)

 

2. forward proxy 

사용자와 서버 사이에 위치해 있다고 생각하면 쉽다.

서버에서 forward proxy 기능을 제공해 주니 , 편하게 'forward proxy 서버' 라고 하자

포워드 프록시 서버는 클라이언트의 요청을 받아 요청을 처리하는 서버와 연결한다.

그리고 서버의 응답을 클라이언트에 전달한다.

프록시 서버에서 요청을 줬기 때문에 서버가 알고 있는 ip는 프록시 서버의 ip이다.

foward 가 붙은건 인터넷보다 프록시 서버를 먼저 호출하기 때문에 forward인 것이다.

 

출처: www.imperva.com

 

3.reverse proxy

인터넷 뒤에 프록시 서버가 있어서 reverse proxy이다. 

클라이언트가 서버를 호출할 때 리버스 프록시 서버를 호출한다.

리버시 프록시 서버는 비즈니스 서버(로직을 처리하는 서버)에게 요청을 하여 응답을 받는다.

그리고 응답을 클라이언트에게 다시 전달한다.

이 방식은 내부 인트라넷에 있는 서버를 호출할 때 인터넷 망에 있는 클라이언트가 요청하는 방식이다.

리버스 프록시는 서버가 누구인지 감출 수 있고 클라이언트는 비즈니스 서버의 ip를 알 수 없다.

 

 

 

또 알아볼것

HaProxy란 무엇일까?

 

참고자료

https://12bme.tistory.com/126

https://firework-ham.tistory.com/23

https://www.lesstif.com/system-admin/forward-proxy-reverse-proxy-21430345.html

'참고자료' 카테고리의 다른 글

blocking 과 non blocking  (0) 2022.01.27
웹서버 nginx  (0) 2022.01.27
EC2 에 mysql 8.0 설치하기  (0) 2021.10.20
자바 8 과 자바 11의 특징  (0) 2021.10.14
메시지 큐 (Message Queue)란?  (0) 2021.08.28