Skip to content

Latest commit

 

History

History
83 lines (61 loc) · 4.68 KB

이소민.md

File metadata and controls

83 lines (61 loc) · 4.68 KB

프록시(proxy)

컴퓨터 프로그래밍 소프트웨어 디자인 패턴의 하나인 '프록시 패턴'이 아닌 네트워크 프록시 서버에 대해 정리한 내용이다.

보통의 웹은 클라이언트에서 서버로, 서버에서 클라이언트로 '직접 통신'한다.
이는 클라이언트와 서버가 서로의 ip 주소를 알고 있음을 의미하며
또한 중복되는 요청에 중복되는 데이터를 전달하며 리소스 낭비 및 서버 부하를 야기한다는 문제가 있다.
프록시는 중계 서버로 클라이언트 대리, 서버 대리를 할 수 있는 중계 서버로
보안 측면의 이점, 빠른 속도의 서비스, 불필요한 부하 감소를 위해 사용한다.


forward proxy

일반적으로 이야기하는 프록시
클라이언트와 인터넷 사이에 위치하며 클라이언트를 대리

캐싱

  • 프록시 서버는 클라이언트가 요청한 내용과 응답을 캐싱한다.
  • 캐싱을 통해 전송 시간을 절약하고 불필요한 외부 요청을 감소함으로써 네트워크 병목 현상을 방지한다.

암호화, 익명성

  • 프록시 서버는 클라이언트가 요청한 내용을 암호화한다.
  • 암호화된 요청은 클라이언트 ip를 감춰 서버가 받은 요청 ip는 proxy ip가 된다.
  • 서버는 실제 클라이언트를 인식하지 못하고 프록시를 클라이언트라고 생각한다.
  • 프라이빗 네트워크 데이터를 보호하고 익명화하기 때문에 회사 내부 디바이스가 클라이언트인 경우에 유용하다.

직접 방문 방지

  • 포워드 프록시 서버에 룰을 추가하여 특정 사이트 접속을 막을 수 있다. (방화벽과 같은 개념)
  • 웹 필터링, 콘텐츠 제어 등을 통해 보안 정책을 시행할 수 있다.

reverse proxy

인터넷과 서버 사이에 위치하며 서버 대리를 수행
들어오는 모든 인터넷 트래픽이 애플리케이션에 도달하기 전에 모니터링(보안 검사, 필터링)하고 차단한다.
역방향 프록시는 방문자 트래픽을 검사하여 무단 활동이 있는지 확인한다.

서버 보안

  • 클라이언트는 리버스 프록시 서버의 ip나 도메인에 직접 요청을 보내지 않고, 리버스 프록시를 통해 통신한다.
  • 클라이언트는 본 서버의 url을 모르기 때문에 실제 서버의 ip 주소를 노출하지 않을 수 있다.

캐싱

  • 클라이언트는 리버스 프록시 서버와 통신하며 리버스 프록시 서버에 캐싱되어 있는 데이터를 요청할 경우
    더 빠르게 응답 받을 수 있다. (forward proxy와 동일)

암호화

  • 리버스 프록시를 사용하면 들어오는 요청을 모두 복호화하고 나가는 응답을 암호화해주므로
    클라이언트와 안전한 통신을 할 수 있으며 본래 서버의 부담을 줄여줄 수 있다.

로드 밸런싱

  • 서버의 가용성과 성능을 최적화하기 위해 여러 서버에 대한 트래픽을 분산하는데 사용한다.
  • 부하를 골고루 분산하여 효율적인 서비스를 제공할 수 있다.

접근 제어

  • 많은 웹 서버들과 웹 리소스에 대한 단일한 접근 제어 전략을 구현하고 추적하기 위해 사용
  • 허가된 클라이언트는 접근 허용하되 그렇지 않은 클라이언트가 접근하려고 요청한다면 비밀번호 요구 등 접근 제어 가능

로드 밸런서

여러대의 서버가 분산처리할 수 있도록 요청을 나누어주는 서비스
서버의 가용성, 성능, 안정성 향상시키는데 사용한다.

부하 분산

  • 클라이언트의 요청을 여러 서버에 균등하게 분배하기 때문에 부하를 최소화한다.
  • 서버의 성능을 최적화하고 응답시간을 줄일 수 있다.

고가용성

  • 로드 밸런서를 사용하면 하나의 서버가 고장나더라도 다른 서버가 처리를 계속할 수 있어 시스템 가용성을 높인다.

확장성

  • 로드 밸런서는 새로운 서버가 추가되면 자동으로 트래픽을 분산한다.

참고자료