Proxy - Proxy Server (1)

Ga0·2024년 1월 18일
0

기타

목록 보기
13/14

Proxy Or Proxy Server

  • Proxy : 대리(행위)를 의미하는 단어
  • Proxy Server : 클라이언트(Client)와 서버(Server) 관점에서 중간에 대신 요청을 처리한다하여 클라이언트(Client)와 서버(Server)의 중계자 역할을 갖는 것을 의미한다.

Proxy Server을 사용하면 좋은 점

1. 보안

  • 클라이언트에서 서버의 IP주소를 숨길 수 있기 때문에(=서버의 익명성) 프록시 서버로 통한 보안 향상된다.

  • 위의 그림처럼 client가 특정 서버에 요청을 할 때 자신의 IP주소도 같이 전달이 되게 되는데, proxy server를 사용하면 자신 IP주소 대신 proxy server 주소가 요청을 보내는 것처럼 보이므로 자신의 IP주소를 외부에서 볼 수 없게 된다.

2. 캐시 사용으로 빠른 속도

  • proxy server은 요청된 내용을 cache에 저장한다.
  • cache에 존재하는 요청 내용이라면, 서버를 거치는 시간이 절약되기 때문에 전송 시간이 빨라진다.
  • 불필요한 외부와의 연결을 하지 않아도 됨으로 외부와의 트래픽도 줄일 수 있게 된다.

3. 접속 우회

  • 1.보안 측면에서 말한 것과 같이 자신의 IP를 숨길 수 있기 때문에 IP를 통해 접속을 감지하는 사이트를 프록시 서버를 통해 우회할 수 있다. (client의 IP를 숨기기 위해 여러 proxy server를 계속 경유할 수도 있음)

4. 로그 기록 관리

  • proxy server를 통해 client 기록을 관리할 수 있다. (연결된 client 정보를 제어)
  • 요청할 server에게는 proxy server을 통해 IP를 숨겼음으로 개인정보 보호가 된다.
  • proxy server에겐 client 정보가 남아있다. (client가 proxy server에게 요청을 보냈으니까 "어디 서버로 보내줘")
  • proxy server가 가진 client 정보로는 해당 client가 "어디에 얼마나 오래 접속했는가?"
  • proxy server는 방문할 수 있는 웹사이트를 제한할 수 있다.

Forward Proxy

  • Forward Proxy는 클라이언트들 앞에 위치하며, 클라이언트로부터의 요청을 Proxy Server가 대신 요청을 전달하고, 인터넷을 통해 외부 Server로 부터 데이터를 가져온다.
  • Proxy Server에 바로 연결하기 보단 VPN을 사용해 악위적인 Proxy Server에 연결되어 정보를 탈취하는 것을 막아 가상 네트워크로 정보를 모두 암호화하여 전달하기도 한다.
  • Forward Proxy는 클라이언트 대신 Server에 요청을 전달해주기 때문에 요청받는 Server는 실제 클라이언트가 누군지 알 수 없다.

Reverse Proxy

  • Reverse Proxy는 Web Server/WAS 앞에 위치하며, 내부망에서 Proxy Server와 내부망 Server가 통신하여 인터넷을 통해 요청이 들어오면 Proxy Server가 받아 요청/응답처리를 해준다.
  • 클라이언트가 요청을 할 때 해당 Web Server에 요청하는 것이 아니라 Proxy Server에 요청하기 때문에 클라이언트는 Web Server의 정보를 알 수가 없다.
  • Reverse Proxy는 클라이언트로부터의 요청들을 어느 Server에 보낼지 결정하는 라우팅 기능과 한 Server에 부하가 오지 않도록 요청을 분산시켜주는 로드밸런싱
    기능도 제공한다.
  • 특히, 기업에서의 네트워크 환경은 내부 네트워크(WAS, DBMS)와 외부 네트워크 사이에 존재하는 DMZ라고 불리는 구간이 존재한다.
  • DMZ에서 Mail Server, Web Server 등 외부 서비스를 제공하는 Server가 위치하게 되는데, 실제 Reverse Proxy는 DMZ에 두고 실제 서비스 Server는 내부망에 위치시킨다.
  1. Web Server은 클라이언트로부터 HTTP 요청 받음
  2. Web server은 클라이언트 요청을 WAS(내부망)에 보냄
  3. WAS는 관련된 Servelt을 메모리에 올려 Web.xml의 정보를 참조하여 Thread를 생성
  4. HttpServletRequest, HttpServletResponse 객체를 생성하여 Servlet에게 전달
  5. 해당 Thread는 Servlet의 Service() 호출
  6. Service()는 doGet() or doPost() 호출 -> 데이터 조회
  7. doGet() or doPost()는 파라미터에 맞게 생성된 동적 페이지를 Response 객체에 담아 WAS에 전달
  8. WAS는 Response 객체를 HttpResponse 형태로 바꿔서 Web Server에 전달 9. 해당 Thread는 종료
  9. HttpServletRequest, HttpServletResponse 객체 제거

정리

"일단, 정리를 하긴 했는데 부족한 부분이나 빠진 부분이 존재할지도 모른다. (더 정리해야하는 부분은 추후에 보완 예정) 또, 이 내용을 작성하면서 WEB SERVER와 WAS이 무엇이고, 어떻게 다른지도 정리해야겠다는 생각이 들었다. 다음 이론 포스트는 WEB SERVER와 WAS에 다룰 예정이다."


이미지 출처 : https://m.post.naver.com/viewer/postView.naver?volumeNo=34803973&memberNo=2953261

0개의 댓글