Skip to content

Proxy server

프락시 서버(영어: proxy server 프락시 서버)는 클라이언트가 자신을 통해서 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해 주는 컴퓨터나 응용 프로그램을 가리킨다. 서버와 클라이언트 사이에서 중계기로서 대리로 통신을 수행하는 기능을 가리켜 '프락시', 그 중계 기능을 하는 것을 프락시 서버라고 부른다.

프락시 서버는 프락시 서버에 요청된 내용들을 캐시를 이용하여 저장해 둔다. 이렇게 캐시를 해 두고 난 후에, 캐시 안에 있는 정보를 요구하는 요청에 대해서는 원격 서버에 접속하여 데이터를 가져올 필요가 없게 됨으로써 전송 시간을 절약할 수 있게 됨과 동시에 불필요하게 외부와의 연결을 하지 않아도 된다는 장점을 갖게 된다. 또한 외부와의 트래픽을 줄이게 됨으로써 네트워크 병목 현상을 방지하는 효과도 얻을 수 있게 된다.

Categories

  • Forward proxy
  • Reverse proxy
  • Traefik
  • Nginx
  • HAProxy
  • Mitmproxy - HTTP 1/2, 웹소켓, SSL/TLS 등의 웹 트래픽을 인터셉트, 수정, 리플레이 하기 위한 오픈소스 HTTPS Proxy
  • Wiretap - root권한이 필요없이 사용자 모드에서 실행되는 VPN-like 프록시 서버
  • Tabserve - 브라우저를 리버스프록시로 만들어 로컬호스트를 외부에서 접속 가능하게 만들기
  • Ngrok
  • Piko - Ngrok의 오픈소스 대체제
  • Portr - 소규모 팀을 위한 ngrok 대체제 오픈소스
  • pgrok - Poor man's ngrok
  • Caddy
  • Tunneling Softwares - 로컬 웹서버를 NAT 안쪽에 있더라도 퍼블릭 도메인 명으로 접근 가능하게 해주는 솔루션
  • GoDoxy - 사용하기 쉬운 리버스 프록시

Forward proxy

클라이언트가 example.com 에 연결하려고 하면 사용자 PC 가 직접 연결하는게 아니라 포워드 프록시 서버가 요청을 받아서 example.com 에 연결하여 그 결과를 클라이언트에 전달(forward) 해 준다.

포워드 프록시는 대개 캐슁 기능이 있으므로 자주 사용되는 컨텐츠라면 월등한 성능 향상을 가져올 수 있으며 정해진 사이트만 연결하게 설정하는 등 웹 사용 환경을 제한할수 있으므로 기업 환경등에서 많이 사용한다.

Forward_Proxy.png

Reverse proxy

리버스 프록시(reverse proxy)는 컴퓨터 네트워크에서 클라이언트를 대신해서 한 대 이상의 서버로부터 자원을 추출하는 프록시 서버의 일종이다. 그런 다음 이러한 자원들이 마치 웹 서버 자체에서 기원한 것처럼 해당 클라이언트로 반환된다. 관련 클라이언트들을 위해 임의의 서버에 접속하는 중간 매개체인 포워드 프록시(forward proxy)와는 반대로, 리버스 프록시는 관련 서버들을 위해 임의의 클라이언트가 해당 서버에 접속하는 중간 매개체이다.

널리 보급된 웹 서버들은 리버스 프록시 기능을 사용하는 일이 잦으며 취약한 HTTP 기능의 애플리케이션 프레임워크를 보호한다.

Reverse_Proxy.png

보통 기업의 네트워크 환경은 DMZ 라고 하는 내부 네트워크와 외부 네트워크 사이에 위치하는 구간이 존재하며 이 구간에는 메일 서버, 웹 서버, FTP 서버등 외부 서비스를 제공하는 서버가 위치하게 된다.

example.com 사는 서비스를 자바로 구현해서 WAS 를 DMZ 에 놓고 서비스해도 되지만 WAS 는 보통 DB 서버와 연결되므로 WAS 가 최전방에 있으면 WAS 가 털릴 경우 DB 서버까지 같이 털리는 심각한 문제가 발생할 수 있다.

이때문에 리버스 프락시 서버를 두고 실제 서비스 서버는 내부망에 위치시키고 프락시 서버만 내부에 있는 서비스 서버와 통신해서 결과를 클라이언트에게 제공하는 방식으로 서비스를 하게 된다.

특히 리눅스 환경이라면 리버스 프락시로 아파치 웹 서버를 사용한다면 SELinux 를 켜 놓으면 SELinux 의 기본 정책이 웹 서버는 톰캣의 8080, 8009 포트만 접근 할 수 있으므로 아파치 웹 서버가 해킹당해도 웹 서버 권한으로는 내부망으로 연결이 불가하다.

또한 리버시 프락시를 cluster로 구성해 놓으면 가용성을 높일 수 있고 사용자가 증가하는 상황에 맞게 Web Server 나 WAS 를 유연하게 늘릴 수 있는 장점이 있다.

NginX Cache

Nginx#NginX Cache항목 참조.

Environment Variables

리눅스에서 다음 환경 변수는 여러 라이브러리에서 사용된다:

INFORMATION

참고로 git, curl 등 에서 사용할 때 소문자를 사용한다.

리버스 터널링으로 연결하기

OpenSSH#리버스 터널링으로 연결하기 항목 참조.

See also

Favorite site