웹풀스택 공부 중
Proxy란? 본문
서버 부하 완하 및 보안 (요청/응답 변조)를 위함
Proxy 사용 이유
- 보안:
- IP 숨기기 및 프록시 서버를 방화벽으로 사용가능 (= Proxy Firewall: 프록시 방화벽)
- 속도 (캐시):
- 동일 요청이 들어오면 서버에 따로 접속할 필요 없이 (Proxy Server에) 저장된 Cache 자원을 반환한다
- 전송 시간 절약 및 외부 트래픽을 줄여 네트워크 병목 현상 방지 = 서비스의 속도를 높여준다
- 네트워크 병목 (Bottleneck) 현상: 전체 시스템의 성능이나 용량이 하나의 요소로 인해 제한 받는 현상
- ACL (Access Control List):
- 사이트 접근 범위 정책 정의: Proxy Server에 접속할 수 있는 범위를 설정하는 옵션
- Subnet 단위의 방화벽이다
- Log / Audit:
- 리포트, 모니터링 용도
- 회사 내 직원들의 인터넷/인트라넷 사용을 리포팅할 수 있다
- 지역 네트워크 제한 우회
- 한국에서는 접속이 제한된 사이트를 Proxy Server를 사용해 우회할 수 있다
Proxy는 Forward Proxy (Client-side) 와 Reverse Proxy (Server-side)로 나뉜다
Forward Proxy
- 요청 보내는 측: WB (= Client)
- 요청에 대한 세부적인 추가 작업이 가능하다
- 클라이언트 은닉: IP 변환을 통해 원 요청자를 은닉할 수 있다
- 클라이언트 접근 제어: 특정 IP혹은 웹 페이지에 대한 접근 금지
- 우회 (Bypass): 특정 클라이언트의 IP가 블락 되어있다면, 그걸 피해서 접속하기 위해 IP를 감출 수 있다
- 캐싱: 클라이언트가 받을 응답을 중간에 임시 저장한다
- 주요기능은 아니다
- 요청에 대한 세부적인 추가 작업이 가능하다
Reverse Proxy
- L2 Reverse Proxy (= Load Balancer)
- 요청 받는 측: WS
- 요청에 대한 세부적인 추가 작업이 가능하다
- 요청 전달: URL/I Mapping (URI 기반 Routing), 로드 밸런싱 (요청 분산)
- Load Balancing (요청 분산) = 웹 서버 부하 완하
- 웹 서버 수 동적으로 늘리기 = SRE
- SRE (Site Reliability Engineering) in Proxy Server:
- Availability and Reliability
- Performance Optimiation
- Security
- Monitoring and Logging
- Scalability
- Automation and Configuartion Management
- SRE (Site Reliability Engineering) in Proxy Server:
- 요청 변환
- X-forwarded-for: Used to identify the originating IP address of a client connecting to a web server through an HTTP proxy or load balancer
- 누가 요청했는지 알 수 있다
- ex.) x-forwarded-by를 사용해서 123,456,789,421를 WS가 받앗을때
- 가장 첫번째로 요청 날린 IP = 421
- 가장 마지막으로 요청 날린 IP = 123
- WB는 자신이 원할때 Forward Proxy에 저장할지, 말지 정할 수 있다
- 저장시에 Reverse Proxy에서 Forward Proxyt를 통해 IP를 가져올 수 있따
- X-forwarded-by란?
- tells you specifically which proxy or load balancer forwarded the request to the server
- by: 어떤 프록시나 로드밸런서가 요청을 보냈는지
- for: 어떤 Client가 요청을 보냈는지
- tells you specifically which proxy or load balancer forwarded the request to the server
- X-forwarded-for: Used to identify the originating IP address of a client connecting to a web server through an HTTP proxy or load balancer
- 서버 은닉
- 서버의 고유 IP가 외부로 노출되지 않음
- 서버 접근 제어 (요청 필터링)
- DDos 방지: Traffic 제어
- Rate Limiting: 짧은 시간내 너무 많은 요청이 오늘걸 막기 위한 정책
- WAF (Web Application Firewall):
- Honeypot (악성 IP 리스트)를 활용한 블럭
- Custom IP 추가하여 블럭
- Response Max Size 세팅: 너무 큰 파일을 반환하는 경우 블락 (Nginx 설정으로 막을 수 있다)
- Timeout Setting (Nginx Setting으로 막을 수 있다)
- DDos 방지: Traffic 제어
- 보안: HTTPS
- Reverse Proxy를 사용하지 않았을때 단점:
- 모든 WS가 Private Key를 가지고 있어야한다
- 껐다 킬때마다 매번 키를 넣어줘야한다
- 껐다 킬때마다 매번 키를 넣어줘야한다
- 모든 WS가 Private Key를 가지고 있어야한다
- 하지만 한 서버 (= Reverse Proxy)가 Private Key를 가지고 있으면 관리 및 인증이 매우 간편해진다
- 클라이언트가 자주하는 요청에 대한 응답을 중간에 임시 저장할 수 있다
- Reverse Proxy가 키를 가질 대리자 역할을 하여 WS가 키를 가질 필요가 없다
- 클라이언트가 자주하는 요청에 대한 응답을 중간에 임시 저장할 수 있다
- Reverse Proxy를 사용하지 않았을때 단점:
- 요청 전달: URL/I Mapping (URI 기반 Routing), 로드 밸런싱 (요청 분산)
- 요청에 대한 세부적인 추가 작업이 가능하다
CDN (Content Delivery Network)
- L1 Reverse Revrse Proxy
- How CDN Works:
- CDN: used whenever HTTP traffic is serverd
- Brings content closer to the user
- Increases the conversion rates
- Deploys servers acrosss the world
- Every user can instead access to Edge Server
- Edge Server = CDN Server이 Edge Server의 집합이다
- Reduces the latency for the user for TCP Connection
- Improves Availiability by having multiple copies
- having copies = good for fault tolerance
- Every user can instead access to Edge Server
- CDN: used whenever HTTP traffic is serverd
- Proxy는 캐싱 + 요청에 대한 세부적인 추가 작업을 위해 사용한다
- 캐싱: 요청에 따른 응답을 중간에 저장해둔 뒤, 동일 요청 시 저장 값을 반환한다
- 세부적인 추가작업: 요청 변환, 필터 등 추가 작업을 수행한다
- CDN은 캐싱 + 지역성 해결을 위해 사용한다
- 캐싱: 요청에 따른 응답을 중간에 저장해둔 뒤, 동일 요청 시 저장 값을 반환한다
- 원본 데이터를 가진 WS에 문제가 생기면 CDN이 대신 응답을 반환하여 *고가용성(High Availibtiliy) 보장 *
- CDN: 고가용성을 보장해주는 버퍼의 역할
- 원본 데이터를 가진 WS에 DDos 공격이 가해지는걸 CDN이 대신 방어가능!
- 원본 데이터를 가진 WS에 문제가 생기면 CDN이 대신 응답을 반환하여 *고가용성(High Availibtiliy) 보장 *
- 지역성 해결: HTTP Resource 제공 서버와 Client가 멀리 떨어진 경우, Client에 가까운 곳에 캐싱 가능하다
- 전 세계적으로 캐시 서버를 곳곳에 두어 캐시 서버 내 응답 데이터를 캐싱 (저장) 한다면 속도가 빨라진다!
- 캐싱: 요청에 따른 응답을 중간에 저장해둔 뒤, 동일 요청 시 저장 값을 반환한다
L1과 L2가 뭐지...?
반응형
'웹개발 > 웹 개념' 카테고리의 다른 글
Web Storage와 Session이란? (0) | 2024.08.25 |
---|---|
Cookie(쿠키)란? (0) | 2024.08.25 |
Load Balancer와 배포방식의 기초 (0) | 2024.08.16 |
Infrastructure: 서버의 구성 기초 (0) | 2024.08.16 |
운영체제 (OS) 와 프로그램의 기초 (0) | 2024.08.16 |