블로그를 변경하였습니다.

해당 블로그는 더 이상 추가 포스팅 없을 예정입니다.

👉 새 블로그 방문하기


프록시 패턴과 프록시 서버

2023. 9. 11. 11:44
728x90
반응형

프록시 패턴

 

대상 객체(Subject)에 접근하기 전 접근에 대한 흐름을 가로채 대상 객체 앞단의 인터페이스 역할을 하는 디자인 패턴

 

 

 

  • Subject : Proxy와 RealSubject를 하나로 묶는 인터페이스(다형성)
    • 대상 객체와 프록시 역할을 동일하게 하는 추상 메서드 action() 정의
  • RealSubject : 원본 대상 객체
  • Proxy : 대상 객체(RealSubject)를 중계할 대리자 역할
    • 프록시는 대상 객체를 합성(Composition)한다.
    • 프록시는 대상 객체와 같은 이름의 메서드를 호출하며, 별도의 로직을 수행할 수 있다. (인터페이스 구현 메서드)
    • 프록시는 흐름제어만 할 뿐 결과값을 조작하거나 변경시키면 안된다.
  • Client : Subject 인터페이스를 이용하여 프록시 객체를 생성해 이용
    • 클라이언트는 프록시를 중간데 두고 프록시를 통해서 RealSubject와 데이터를 주고 받는다.

 

 

 

 

프록시 서버

 

서버와 클라이언트 사이에서 클라이언트가 자신을 통해 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해주는 것

 

프록시 서버를 활용한 것

  • Nginx
  • CloudFlare
  • 프론트에서의 proxy
    • keyword: CORS

 

1. Vue

 

// vue.config.js

module.exports = {
    devServer: {
    	overlay: false,
    proxy: {
        '/api': {
            target: 'http://localhost:3000/api',
                changeOrigin: true,
                pathRewrite: {
                	'^/api': ''
                }
            }
        }
    },
}

 

2. React

 

// package.json

{	.
	.
	"proxy": "http://localhost:3000"
    .
    .
}

 

프론트 URL: http://localhost:8080

서버 URL : http://localhost:3000/api

 

  • 프론트에서 서버 호출
    • http://localhost:3000/api/~~ 요청
    • Proxy Server 거쳐서
    • http://localhost:3000/api -> http://localhost:8080/api 우회에서 접근하도록 경로를 변경
    • 우회해서 접근하기 때문에 브라우저 Origin이 일치하여 CORS 에러가 발생하지 않음

 

 

728x90
반응형

'CS > 네트워크' 카테고리의 다른 글

HTTP (Hyper Text Transfer Protocol)  (0) 2023.09.22
L4 스위치와 L7 스위치  (0) 2023.09.22
[Network] HTTP(1.1 , HTTP/2)  (0) 2021.08.31
[Network] HTTP  (0) 2021.08.28
[Network] 프록시 서버(proxy)  (0) 2021.08.28

BELATED ARTICLES

more