> 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)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://sinbum.gitbook.io/blog/undefined/guide/proxyserver.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
