# 反向代理基础

URL: https://caijiao.org/nginx/reverse-proxy
Source: docs/nginx/reverse-proxy.md
Description: 本节介绍 Nginx 反向代理的基础知识，包括代理原理、配置示例、负载均衡以及常用优化措施，帮助你实现高性能 Web 服务代理。

反向代理是 Nginx 最常用的功能之一，通过将客户端请求转发给后端服务器，实现请求分发、负载均衡与安全防护。

## 一、反向代理原理

1. 客户端发送请求到 Nginx  
2. Nginx 根据 location 或 server 块配置将请求转发到后端服务器  
3. 后端服务器处理请求并返回响应  
4. Nginx 将响应返回给客户端  

```text
客户端 -> Nginx -> 后端服务器 -> Nginx -> 客户端
````

反向代理隐藏了真实的后端服务器地址，提高安全性与可扩展性。

## 二、基础配置示例

```nginx
server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}
```

### 核心指令说明

* **proxy_pass**：指定后端服务器地址，可为 IP 或域名
* **proxy_set_header**：传递客户端请求头给后端，保持原始请求信息
* **$host / $remote_addr / $proxy_add_x_forwarded_for / $scheme**：内置变量，传递请求相关信息

## 三、常用优化建议

1. 设置缓存与超时：`proxy_cache`, `proxy_connect_timeout`, `proxy_read_timeout`
2. 使用负载均衡：可配置多个后端服务器，通过 `upstream` 块实现轮询、IP 哈希等策略
3. 配合 SSL：对前端与后端使用 HTTPS，确保安全传输
4. 日志分离：便于分析代理请求和性能

---

掌握 Nginx 反向代理基础，可以实现请求分发、隐藏真实服务器、提高 Web 应用的性能与安全性。
