본문 바로가기
ComputerScience/(짧)CS전공지식노트

1장-디자인 패턴) 프록시패턴과 프록시서버

by VictorMeredith 2023. 2. 26.

참고로 앞서 포스팅한 프록시객체는 프록시패턴이 녹아있는 객체이다.

1.  프록시패턴

- 대상 객체애 접근하기 전, 그 접근에 대한 흐름을 가로채 대상 객체 앞단의 인터페이스 역할을 하는 디자인 패턴이다.

- 프록시란 ? '대리' / '대신' 의 의미이다.

중간에서 대신 탱커해준다

- 이를 통해 객체의 속성, 변환 등을 보완하며, 보안, 검증, 캐싱, 로깅 등에 사용한다.

- 프록시 서버로도 활용된다.

 

2. 프록시서버

- NGINX : 비동기 이벤트 기반의 구조와 다수의 연결을 효과적으로 처리 가능한 웹 서버이고, 주로 Node.js의 앞단의 프록시서버로 활용.

- NodeJS의 창시자도 버퍼오버플로우의 취약점 예방을 위해 nginx를 프록시서버로 앞단에 놓는게 좋다고 했다.

- 버퍼오버플로우란 ? 버퍼는 메모리공간이며, 메모리 공간을 넘쳐 벗어나는 경우를 말한다. 이런 경우 데이터가 덮어씌워져 무슨 일이 일어날지 모르는 아주아주 위험한 공격이 발생하기도 한다.

실제 포트를 숨길 수 있어 보안에 좋고, 정적 자원을 gzip압축하거나, 메인서버 앞에서 로깅도 가능하다.

- gzip이란 ? : 압축기술. 데이터 전송량을 줄일 수 있지만, 서버의 CPU오버헤드도 고려해야 한다.

- CloudFlare : CDN 서비스이며, DDOS 방어, HTTPS 구축이 쉽다.

- CDN이란 ? : (Content Delivery Network) 사용자마다 접속하는 곳과 물리적으로 가까운 곳에서 콘텐츠를 캐싱 또는 배포하는 서버 네트워크. 콘텐츠 다운로드 시간을 줄일 수 있다.

 

3.  CORS와 프론트엔드의 프록시 서버

- CORS란 ? : Cross-Origin Resource Sharing이며, 서버가 웹 브라우저에서 리소스를 로드할 때 다른 오리진을 통해 로드하지 못하게 하는 HTTP 헤더 기반 메커니즘이다. 보안 정책이라고 보면 된다.

- 프론트엔드 개발 시 테스트서버에서 백엔드와 통신할 때 프록시 서버를 사용해서 CORS를 우회하고는 한다.

이런식으로 개발하면 된다(MERN)

 

[앱삼] 2. MERN 풀스택 환경 기본 세팅 - 1

1. 디렉토리/파일목록 세팅 2. Git 세팅 3. 라이브러리 세팅 4. node서버와 react 연결, 프록시 개발환경 설정 // 오늘 여기까지 5. 디렉토리에 따른 코드스플리팅과 라우터설계 6. DB세팅 7. 로그세팅 ...

victormeredith.tistory.com

 

- Origin 이란 ? : 프로토콜부터 호스트이름, 포트의 조합이다. ex) https//www.이름.com:8080 까지 (뒤에 /어쩌구 등 추가되는건 제외)

 

댓글