> For the complete documentation index, see [llms.txt](https://sinbum.gitbook.io/blog/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://sinbum.gitbook.io/blog/undefined/guide/proxyserver.md).

# 프록시서버

프록시 서버에 관한 설명.

![niginx를 프록시서버로 사용한 다이어그램 - 참고 : Michael Zheng](https://miro.medium.com/max/1400/1*TrNJZqECEj0eVuJDeNKtNQ.png)

## 프록시 서버 (Proxy Server)

**클라이언트**가 자신을 통해 다른 네트워크 서비스에 간접적으로 **접속**할 수 있게 해주는 시스템을 말합니다.\
**프록시** 라고도 합니다

## 동작 구조

![프록시의 동작 구조](https://itwiki.kr/images/b/be/%ED%94%84%EB%A1%9D%EC%8B%9C_%EB%8F%99%EC%9E%91_%EA%B3%BC%EC%A0%95.png)

* 클라이언트의 요청은 프록시를 통해서 목적 서버로 전달 됩니다.
* 서버의 응답 또한 프록시를 통해 클라이언트에게 전달 됩니다.

## 유형

* 포워드 프록시 (정방향 프록시)
  * 서버의 메세지를 클라이언트에 전달하는 역할을 수행합니다.
  * 백엔드 to 프론트
* 리버스 프록시 (역방향 프록시)
  * 클라이언트의 요청을 다수 서버에 분배해 전달하는 역할을 수행합니다.
  * 프론트 to 백엔드

## 사용 용도

* 캐싱(속도 와 효율성)
  * 데이터를 릴레이 하는 과정에서 자주 사용되는 데이터를 저장하도록합니다.
  * 재요청이 있을때 원본 서버 까지 가지 않고 캐시된 데이터를 활요합니다.
* 트래픽 통제 (보안 과 감시,통제)
  * 네트워크 접근이 특정 프로시 서버를 통해 이루어지도록합니다.
  * 프록시 서버에서 네트워크 패킷을 검열하거나 필터링 할 수 있습니다.
* 익명성(접속자 보호, 접속 우회)
  * 실제 접근 호스트가 아닌 다른 호스트에서 접속한 것 처럼 합니다.
  * 내부 정보를 숨기거나, ip를 우회하는 용도로 사용할 수 있습니다.

## 유사 개념

### 릴레이 서버

* 별도의 서버를 경유하여 송수신지 간 데이터를 전달하도록 합니다.
* 프록시는 주로 클라이언트-서버간 통신에 이용되는데 반해서 릴레이 서버는 주로 서버간 중계에 이용됩니다.
* 프록시 서버는 기본적으로 캐싱을 지원하지만,릴레이 서버는 실시간 전송을 기본으로 하는데 그 목적에 차이가 있습니다.

### 캐시 서버

* 자주 사용되는 데이터를 저장함으로써 트래픽 비용이나 속도를 향상 시킵니다.
* 프록시 서버는 릴레이 기능에 캐싱이 결합된 형태로, 단순 캐싱만 아니라 중계기능 또한 같이 수행합니다.
* 자체적으로 캐싱 기능을 제공하ㅣㄱ도 하고 캐시 서버를 별도로 두기도 합니다.

### 라우터

* 패킷을 받아 다른 서버로 전달하는 점에서 공통점을 가지고 있습니다.
* 라우팅은 주로 L3에서 IP패킷을 전달하지만 프록시 서버는 L7에서 어플리케이션 데이터를 중계합니다.

### 토르의 어니언 라우팅

* 클라이언트에게 익명성을 부여하는 것에서 공통점이 있습니다.
* 타겟 서버에겐 익명성이 제공되지만, 프록시 서버에 클라이언트의 정보가 노출됩니다.
* 토르는 어니언 라우팅을 통해 중계 서버에서도 클라이언트의 정보를 알 수 없도록 설계되어 있습니다.

## 참고

[IT위키 - 프록시 서버](https://itwiki.kr/w/%ED%94%84%EB%A1%9D%EC%8B%9C_%EC%84%9C%EB%B2%84)\
[IT위키 - 어니언 라우팅](https://itwiki.kr/w/%EC%96%B4%EB%8B%88%EC%96%B8_%EB%9D%BC%EC%9A%B0%ED%8C%85)\
[드려다보기 - 토르 네트워크](https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true\&blogId=windfalcon1\&logNo=220050749368)
