[ 프록시 란 ]
프록시 서버는 클라이언트가 자신을 통해서 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해주는 컴퓨터 프로그램을 의미한다.
서버와 서버사이의 중계기 역할을 한다.
보안상의 이유로 직접 통신할 수 없는 두 점 사이에서 대리로 통신을 수행한다
보안성, 성능, 안정성을 향상시킨다.
웹의 일반적인 통신 방법( 클라이언트에서 서버로, 서버에서 클라이언트로 통신하며 데이터를 전달한다)에서 발생하는 중복데이터 처리와 서버의 부하, 리소스 낭비를 예방한다.
[ 포워드 프록시 ]
클라이언트의 바로 뒤에 놓여있다.
같은 내부망에 존재하는 클라이언트의 요청을 받고, 외부 서버에서 데이터를 가져와 클라이언트에게 전달한다.
클라이언트가 접속하려는 서버의 주소를 포워드 프록시에게 준다.
Naver.com을 요청하면 포워드 프록시 서버가 리소스를 받아 클라이언트에게 준다
< 장점 >
1) 클라이언트 보안
방화벽으로 사용된다.
특정 사이트에 접속하는 것을 막을 수 있다.
2) 캐싱
클라이언트의 요청을 저장해두 었ㅣ다가 , 캐시된 정보를 반환하여 서버의 부하를 줄이고 응답속도를 높일 수 있다.
3) 암호화
클라이언트의 요청을 포워드 프록시 서버를 통과할 때 암호화한다.
클라이언트의 ip를 감줘주는 보안효과를 낼 수 있다.
[ 리버스 프록시 ]
클라이언트의 요청을 받아 웹서버에 전달한다
웹서버의 응답을 클라이언트에게 전달한다.
웹서버의 부하를 분산 시키고, 보안을 강화하는 수단으로 사용될 수 있다.
< 작동원리 >
클라이언트의 요청을 리버스 프록시로 보내면,
리버스 프록시가 웹서버로 보내고
웹서버는 응답을 리버스 프록시로 보내면
리버스 프록시가 클라이언트에게 답변한다.
< 필요성 및 장점 >
1) 서버부하 분산 ( Load Balancing )
- 동시에 많은 사용자가 접속하거나 다량의 요청이 발생하는 경우에 발생할 수 있는 서버부하를 여러대의 서버로 분산시켜 닫 서버의 부하를 줄이고, 서버의 가용성을 높여 안정적인 서비스를 제공합니다.
2) 보안강화
- 외부에서 직접 서버에 접근하지 못하게 하여 웹서비스의 보안을 강화한다.
클라이언트의 요청을 리버스 프록시를 거쳐 서버로 전달하는데, 이 때 악성요청 필터링, 접근제한 등의 역할을 수행한다.
또한 클라이언의 요청을 모두 리버스프록시로 전달하기 때문에 주요 PC의 위치(IP)를 외부로부터 숨길 수 있다.
3) 캐싱 및 가속화 4) 웹서버 최적화
-자주 사용되는 정적 파일들을 캐시에 저장하여 빠르게 제공할 수 있다.
응답시간을 단축시켜 웹서비스의 성능을 향상시킬 수 있다.
< 단점 >
- 추가적인 서버 설정과 관리가 필요함
- 네트워크 지연이 발생할 수 있다.
- 복잡성이 증가한다.
< 활용 >
- API 게이트웨이로서 활용 가능
ㄴ 여러 서비스의 API를 하나의 엔드포인트로 통합하여 사용할 수 있다. 인증 및 인가를 처리할 수도 있다.
- 콘텐츠 전송 네트워크(CDN) 구성
ㄴ 리버스 프록시 서버를 지역별로 배치하여 웹서비스의 전체적인 응답속도와 성능을 향상 시킬 수 있다.
- 웹 어플리케이션 방화벽 (WAF) 구현
ㄴ특정 유형의 공격을 차단하고 보안정책을 강화할 수 있다.
< 리버스 프록시 솔루션 예시 >
NGinx
- 웹서버, 리버스프록시 서버, 메일 프록시 서버 및 일반적인 TCP/UDP 프록시 서버로 사용할 수 있는 고성능 오픈 소스 소프트웨어.
- 높은 동시성과 낮은 메모리 사용량이 특징이다.
'공부함' 카테고리의 다른 글
| 주소표시줄에 도메인을 입력하면 일어나는 일 (0) | 2024.08.27 |
|---|---|
| [jquery] api의 return Type이 void일 때 ajax 통신 결과가 200:ok 가 에러로 잡히는 현상 수정 (0) | 2023.09.12 |
| [jquery] 태그에 사용자 지정 값 넣기 (0) | 2023.09.11 |
| [Spring] Spring framework는 무엇인가 (0) | 2023.06.07 |
| [spring] 스프링부트? (0) | 2023.06.05 |