mirror of
https://github.com/acepanel/acepanel.github.io.git
synced 2026-02-04 14:07:16 +08:00
136 lines
3.7 KiB
Markdown
136 lines
3.7 KiB
Markdown
# 反向代理
|
||
|
||
反向代理網站用於將外部請求轉發到後端服務,常用於部署 Node.js、Go、Java、Python 等應用。
|
||
|
||
## 工作原理
|
||
|
||
```
|
||
用戶請求 -> Nginx (反向代理) -> 後端應用 (如 localhost:3000)
|
||
```
|
||
|
||
Nginx 接收用戶的 HTTP/HTTPS 請求,然後將請求轉發到指定的後端地址。
|
||
|
||
## 創建反向代理網站
|
||
|
||
1. 進入 **網站** 頁面
|
||
2. 確保選中 **反向代理** 標籤
|
||
3. 點擊 **創建網站**
|
||
|
||
### 配置項
|
||
|
||
- **名稱**:網站標識,如 `myapp`
|
||
- **域名**:綁定的域名,如 `app.example.com`
|
||
- **端口**:監聽端口,默認 80
|
||
- **代理目標**:後端服務地址,如 `http://127.0.0.1:3000`
|
||
- **備註**:可選備註
|
||
|
||
### 代理目標格式
|
||
|
||
```
|
||
http://127.0.0.1:3000 # 本地服務
|
||
http://localhost:8080 # 本地服務
|
||
http://172.18.0.2:80 # Docker 容器
|
||
https://backend.internal # 內部 HTTPS 服務
|
||
```
|
||
|
||
## 編輯反向代理網站
|
||
|
||
點擊網站列表中的 **編輯** 按鈕進入編輯頁面。
|
||
|
||
### 域名和監聽
|
||
|
||
配置網站的域名和監聽端口,支持添加多個域名和端口。
|
||
|
||

|
||
|
||
- **域名**:可添加多個域名
|
||
- **監聽地址**:可配置多個端口,支持 HTTPS 和 QUIC(HTTP3)
|
||
|
||
### 上游配置
|
||
|
||
上游(Upstream)定義了後端伺服器地址,支持配置多個後端實現負載均衡。
|
||
|
||

|
||
|
||
- **上游名稱**:上游的標識名稱
|
||
- **負載均衡算法**:支持輪詢(默認)、IP Hash 等算法
|
||
- **保持活動連接**:與後端保持的長連接數量
|
||
- **DNS 解析器**:自定義 DNS 解析器
|
||
|
||
點擊 **添加伺服器** 按鈕可以添加後端伺服器:
|
||
|
||

|
||
|
||
- **伺服器地址**:後端伺服器地址,如 `127.0.0.1:8080`
|
||
- **選項**:可選參數,如 `weight=5`(權重)、`backup`(備用伺服器)等
|
||
|
||
### 代理配置
|
||
|
||
配置代理行為和請求頭傳遞。
|
||
|
||

|
||
|
||
- **匹配類型**:匹配類型,如前綴匹配、正則匹配等
|
||
- **匹配表達式**:匹配的 URL 表達式
|
||
- **代理目標**:填寫上游名稱或直接填寫後端地址
|
||
- **啟用緩存**:是否啟用代理緩存
|
||
- **啟用緩衝區**:是否啟用緩衝區,AI 應用建議關閉否則可能影響流式輸出
|
||
- **代理 SNI**:是否啟用 SNI(僅 HTTPS 代理有效)
|
||
- **自定義請求頭**:添加或修改傳遞給後端的請求頭
|
||
- **響應內容替換**:可替換響應內容中的字符串
|
||
|
||
## 使用場景
|
||
|
||
### Node.js 應用
|
||
|
||
```bash
|
||
# 啟動 Node.js 應用
|
||
node app.js # 監聽 3000 端口
|
||
```
|
||
|
||
代理目標:`http://127.0.0.1:3000`
|
||
|
||
### Docker 容器
|
||
|
||
如果後端是 Docker 容器,可以使用容器的 IP 地址或容器名稱(同一網絡內)。
|
||
|
||
代理目標:`http://容器名:端口` 或 `http://容器IP:端口`
|
||
|
||
### 多個後端(負載均衡)
|
||
|
||
在上游配置中添加多個後端地址,實現負載均衡。
|
||
|
||
代理目標:`http://上游名稱`
|
||
|
||
## 常見配置
|
||
|
||
### WebSocket 支持
|
||
|
||
反向代理默認支持 WebSocket,無需額外配置。
|
||
|
||
### 傳遞真實 IP
|
||
|
||
AcePanel 會自動配置以下請求頭,將用戶真實 IP 傳遞給後端:
|
||
|
||
- `X-Real-IP`
|
||
- `X-Forwarded-For`
|
||
- `X-Forwarded-Proto`
|
||
|
||
### 自定義配置
|
||
|
||
在網站管理頁面可以編輯 Nginx 配置,添加自定義配置:
|
||
|
||
```nginx
|
||
proxy_connect_timeout 60s;
|
||
proxy_read_timeout 60s;
|
||
proxy_send_timeout 60s;
|
||
proxy_buffer_size 64k;
|
||
proxy_buffers 4 64k;
|
||
```
|
||
|
||
## 注意事項
|
||
|
||
1. 確保後端服務已啟動並監聽指定端口
|
||
2. 如果後端是 Docker 容器,確保端口已正確映射或使用 Docker 網絡
|
||
3. 後端服務崩潰時,Nginx 會返回 502 錯誤
|