proxy server
- 클라이언트와 서버 구조의 중간에 위치하여,
클라이언트의 요청이나 서버의 응답을 중계/대리한다.
- forward냐 reverse냐에 따라, 역할면에서 클라이언트가 되기도 하고 서버가 되기도 한다.
- forward: 클라이언트 <---> proxy server <---> 인터넷 <---> 서버 [클라이언트]
- reverse: 클라이언트 <---> 인터넷 <---> proxy server <---> 서버 [서버]
- caching, load balancing, 보안 등을 위해 사용한다.
forward proxy server
- caching
- 클라이언트의 요청이 서버까지 도달하지 않고,
서버의 응답을 proxy server에서 caching한 것으로 응답한다.
- 보안
- 클라이언트가 요청을 proxy server를 통해 하기 때문에
요청 IP주소는 proxy server의 값을 갖게 되어,
서버는 요청에 대해 어떤 클라이언트인지 제대로 알 수 없다.
즉, 클라이언트는 익명성을 갖게 되는 것이다.
(목적지가 서버의 IP주소를 가리키는 것은 변함없다.)
- 보안을 위해 기업의 사내망에서 주로 쓰이며, 클라이언트와 같은 내부망을 이루는 형태이다.
reverse proxy server
- caching
- 서버 측에서, 클라이언트로부터 자주 요청될만한 resource를 caching 해둘 수 있다.
- 보안
- 서버의 정보(port, resource 위치 등)을 클라이언트로부터 숨길 수 있다.
클라이언트의 요청은 public IP주소에 따라 우선 reverse proxy server에 도달하고,
이를 거쳐 port에 따라 서버로 전달되거나 정확한 resource 위치를 가리킨다.
- load balancer 역할을 할 수 있다. (software)
- SSL termination
- 클라이언트와는 HTTPS, 서버와는 HTTP로 통신하도록 함으로써
서버에서 복호화 하지 않으므로, 비즈니스 로직 처리에 대한 resource가 절감된다.