본문 바로가기
업무 기록/ETC

Proxy 의 장단점과 설명 기본

by code2772 2023. 8. 26.

[ 목차 ]

    728x90
    반응형

     

    프록시 (Proxy)는 클라이언트와 서버 간의 중간 매개체로 작동하는 서버나 애플리케이션이다. 주로 웹에서 사용되며, 클라이언트 요청을 서버에 전달하고, 서버로부터의 응답을 클라이언트에게 다시 전달하는 역할을 한다. 프록시는 여러 가지 목적으로 사용되며, 보안, 로깅, 캐싱, 접근 제어 등 다양한 기능을 수행할 수 있다.

    프록시 서버를 사용하는 이유와 장점 :

    1. 보안 및 개인 정보 보호:
    보안 향상: 프록시는 클라이언트와 서버 간의 중개 역할을 하므로 클라이언트의 IP 주소를 숨기고, 외부에서 직접 서버에 접근하는 것을 방지함으로써 보안을 향상.
    개인 정보 보호: 프록시는 사용자의 웹 활동을 익명화할 수 있어 개인 정보 보호를 강화.

    2. 캐싱과 성능 향상:
    캐싱: 프록시 서버는 이전에 요청한 데이터를 캐싱하여 동일한 요청에 대한 응답 시간을 줄인다. 이로써 대역폭을 절약하고 웹 페이지 로드 속도를 향상.

    3. 접근 제어와 필터링:
    접근 제어: 기업이나 학교 네트워크에서 프록시를 사용하여 특정 웹 사이트에 대한 액세스를 제어하고 제한.
    콘텐츠 필터링: 해로운 콘텐츠나 보안 위협을 감지하고 차단하는 데 사용.

    4. 트래픽 관리:
    대규모 네트워크에서는 프록시를 사용하여 트래픽을 관리하고 로드 밸런싱을 수행할 수 있습니다.


    프록시 서버의 단점:

    1. 단일 장애 지점: 
    프록시 서버가 중단되면 클라이언트의 웹 액세스에 문제가 발생할 수 있다.

    2. 캐싱 문제: 
    무효화되지 않은 캐시된 데이터가 페이지 업데이트를 반영하지 못할 수 있다.

    3. 추가 지연: 
    클라이언트가 프록시 서버를 통과하면 추가 지연이 발생할 수 있다.

    4. 보안 위협: 
    프록시 서버 자체가 보안 위협이 될 수 있으며, 잘못 구성된 경우 중요한 정보 누설의 위험이 있다.

    때로는 Nginx와 같은 웹 서버가 프록시 서버로 사용되기도 한다.
    Nginx (엔진엑스): Nginx는 웹 서버 및 리버스 프록시 서버로 주로 사용된다. 웹 서버로 사용될 때, HTTP 요청을 처리하고 정적 파일을 서빙하는 역할을 한다. 또한 리버스 프록시로 사용될 때, 클라이언트 요청을 백엔드 웹 서버로 중계하고, 부하 분산 및 SSL 종단점을 관리하는 데 사용된다. Nginx는 HTTP 프록시 서버 기능도 제공하지만, 주로 HTTP 트래픽을 관리하는 데 중점을 둔다.

    아래에는 프록시의 작동 방식을 예제를 통해 설명한다.
    예제: 웹 프록시 서버
    가장 흔한 프록시의 예로 웹 프록시 서버를 생각해자. 웹 프록시 서버는 클라이언트가 웹 페이지에 접근할 때 클라이언트 요청을 대신 서버에 전달하고, 서버로부터 받은 응답을 클라이언트에게 다시 전달합니다. 이것은 클라이언트와 웹 서버 사이에 중개 역할을 하는 프록시이다.

    프록시 설정 및 시작
    프록시 서버를 설정하고 시작하는 예제입니다. Node.js를 사용하여 간단한 웹 프록시를 만들어 보자.
     

    const http = require('http');
    const httpProxy = require('http-proxy');
    
    // 프록시 서버 생성
    const proxy = httpProxy.createProxyServer({});
    
    // 클라이언트 요청을 받을 포트 설정
    const port = 8080;
    
    // 웹 서버 생성
    const server = http.createServer((req, res) => {
        // 프록시로 요청 전달
        proxy.web(req, res, { target: 'http://example.com' });
    });
    
    // 서버 시작
    server.listen(port, () => {
        console.log(`Proxy server is running on port ${port}`);
    });


    이 예제는 Node.js와 http-proxy 모듈을 사용하여 간단한 웹 프록시 서버를 생성한다. 이 서버는 클라이언트 요청을 받으면 example.com으로 요청을 중계한다.

    프록시 서버 실행
    위의 코드를 실행하면 프록시 서버가 8080 포트에서 실행되는데, 클라이언트가 프록시 서버에 접속하면, 프록시 서버는 클라이언트 요청을 example.com으로 중계하고 응답을 클라이언트에게 전달한다.

    프록시 서버 활용
    이제 클라이언트가 웹 브라우저를 사용하여 프록시 서버에 접속하면, 프록시 서버가 원격 웹 서버(example.com)에 대한 요청을 중계하고 해당 응답을 클라이언트에게 반환한다.

    프록시는 이 예제처럼 간단한 웹 프록시일 수도 있고, 고급 기능을 갖춘 보안 프록시나 캐싱 프록시 등 다양한 형태가 있다. 프록시는 네트워크에서 중요한 역할을 하며, 여러 다른 시나리오와 사용 사례에 따라 다양하게 구성된다.

    반응형