反向代理

反向代理網站用於將外部請求轉發至後端服務,常用於部署 Node.js、Go、Java、Python 等應用程式。
運作原理
使用者請求 -> Nginx(反向代理)-> 後端應用程式(例如 localhost:3000)Nginx 接收使用者的 HTTP/HTTPS 請求,並將其轉發至指定的後端位址。
建立反向代理網站
- 前往 網站 頁面
- 確認已選取 反向代理 分頁
- 點選 建立網站
設定項目
- 名稱:網站識別碼,例如
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 服務編輯反向代理網站
點選網站清單中的 編輯 按鈕進入編輯頁面。
可以在基本設定中將網站切換為 PHP 或純靜態型別。 域名、監聽、檔案等通用內容會保留;代理上游和代理規則會刪除,並重新生成所選型別的配置。 切換前必須備份並記錄代理配置。
網域與監聽
設定網站的網域與監聽連接埠,支援多個網域與連接埠。
- 網域:可新增多個網域
- 監聽位址:可設定多個連接埠,支援 HTTPS 與 QUIC(HTTP3)
上游配置
上游用於定義後端伺服器位址,支援多個後端以進行負載平衡。
- 上游名稱:上游的識別名稱
- 負載平衡演算法:對於 Nginx,支援輪詢(預設)、
least_conn、ip_hash、hash與random;對於 Apache,支援輪詢(預設)、最少忙碌與依流量分配 - 保持連線數:與後端維持的持久連線數量
- DNS 解析器:自訂 DNS 解析器與解析逾時時間(僅 Nginx)
點選 新增伺服器 按鈕以新增後端伺服器:
- 伺服器位址:後端伺服器位址,例如
127.0.0.1:8080 - 選項:選填參數,例如
weight=5(權重)、backup(備援伺服器)等。
代理配置
設定代理行為與請求標頭轉發。 每條代理規則會將一個 location 對應到一個後端。
- 匹配型別: 精確匹配(
=)、優先字首(^~)、普通字首、區分大小寫正則(~)和不區分大小寫正則(~*)。 - 匹配表示式: 要匹配的 URL 表示式。
- 代理地址: 上游名稱或完整後端地址,例如
http://127.0.0.1:8080、http://upstream_name。 - 代理 Host: 傳送給後端的
Host請求頭,預設$proxy_host,也可從代理地址自動提取。 - 啟用快取: 是否使用代理快取。
- 啟用緩衝: 是否緩衝響應;AI 等流式應用建議關閉,否則可能影響流式輸出。
- 代理 SNI: HTTPS 後端使用的 SNI。
- DNS 解析器: 自定義 DNS 伺服器和解析超時,僅 Nginx 支援。
- 自定義請求頭: 新增或修改傳給後端的請求頭。
- 響應內容替換: 替換響應正文中的字串。
代理進階設定
Nginx 的每條代理規則還提供 進階設定面板:
- HTTP 版本:後端通訊協定版本(HTTP/1.0、HTTP/1.1 或 HTTP/2)
- 最大要求本文:此規則允許的最大要求本文大小
- 逾時設定:連線、讀取和傳送逾時
- 重試設定:上游失敗時的重試條件、最大次數和重試逾時
- SSL 後端驗證:驗證後端憑證(僅 HTTPS 後端顯示)
- 回應標頭:隱藏或新增回應標頭
- IP 存取控制:允許或拒絕此規則的訪客 IP/CIDR
重定向
重定向標籤頁中的規則會在請求進入代理前執行, 可拖動調整順序。
- 重新導向類型:
- URL 重新導向(
url):將來源路徑重新導向到目標路徑 - 主機重新導向(
host):將來源主機重新導向到目標 URL,例如強制將www跳轉到主網域 - 404 重新導向(
404):將原本傳回 404 的請求重新導向到目標 URL
- URL 重新導向(
- 狀態碼:
301、302、307或308,預設值為 308 - 來源: URL 型別填寫來源路徑,Host 型別填寫來源主機;404 型別無需填寫。
- 目標: URL 型別填寫目標路徑,Host 和 404 型別填寫目標 URL。
- 保留 URI: 保留原請求路徑和查詢引數並追加到目標地址。
Nginx 接收使用者的 HTTP 或 HTTPS 請求,再轉發到指定後端地址。
HTTPS 標籤頁用於管理網站 TLS。 網站已繫結證書時,會顯示有效期、簽發者和覆蓋域名。
- 總開關:為此網站啟用或關閉 HTTPS。 啟用後自動增加
443監聽,Nginx 還會增加quic;關閉後移除443監聽,並清除ssl和quic標記 - 使用已有證書: 從證書管理中選擇證書,自動填入證書和私鑰。
- HSTS: 啟用 HTTP 嚴格傳輸安全。
- HTTP 重定向: 強制 HTTP 跳轉到 HTTPS。
- OCSP Stapling: 啟用 OCSP 裝訂。
- TLS 版本: 可選擇 TLS 1.0、1.1、1.2 和 1.3。
- 憑證 / 私密金鑰:直接貼上 PEM 憑證和 KEY 私密金鑰內容
一鍵簽發證書
網站至少繫結一個域名後,可以通過底部的 一鍵簽發證書為這些域名申請免費證書。 存在 *.example.com 等萬用字元域名時,需要選擇已經在證書管理中配置的 DNS 提供商,通過 DNS 驗證簽發。
網站進階設定
進階設定 分頁將多個網站層級選項整理為可摺疊面板。
訪問統計
僅 Nginx 支援。 啟用 訪問統計後,可在網站統計頁面檢視該網站資料。
日誌設定
- 存取日誌:選擇 關閉(
off)、預設路徑或輸入自訂路徑 - 錯誤日誌:選擇 關閉(
off)、預設路徑或輸入自訂路徑
設定有效日誌路徑後,編輯器會顯示即時 訪問日誌和 錯誤日誌標籤;底部 清空日誌會截斷當前檢視的日誌檔案。
限流
開啟 啟用流量限制開關;只有啟用後才顯示下面的限制欄位。
- 併發限制: 整個網站的最大併發連線數,
0表示不限。 - 單 IP 限制: 每個訪問 IP 的最大併發連線數,
0表示不限。 - 速率限制: 單個請求的傳輸速率,單位 KB,
0表示不限。
真實 IP
當 AcePanel 本身位於 CDN 或 Frp 後方時識別真實訪客 IP;此功能不同於向後端轉送請求標頭,參閱轉送真實 IP。
- 啟用:開啟或關閉此功能
- IP 來源:可信任上游 IP 或 CIDR,每行一個,例如
127.0.0.1、10.0.0.0/8。 使用 Frp 時填寫 Frp 地址,使用 CDN 時填寫 CDN 地址段。 不確定時可以使用0.0.0.0/0或::/0,但這不安全。 - IP 請求頭: 例如
X-Real-IP、X-Forwarded-For、CF-Connecting-IP、True-Client-IP、Ali-Cdn-Real-Ip或EO-Connecting-IP,也支援自定義。 - 遞迴: 在
X-Forwarded-For中遞迴查詢真實 IP。
基本認證
在 使用者憑據中新增使用者名稱和密碼後,訪問網站前必須通過 HTTP Basic Authentication; 列表為空時不啟用認證。
常見場景
Node.js 應用
node app.js # 監聽 3000 埠代理目標:http://127.0.0.1:3000
Docker 容器
後端位於 Docker 容器時,可以使用容器 IP,或在同一 Docker 網路中使用容器名稱。
代理目標:http://container-name:port 或 http://container-IP:port
多後端負載均衡
在上游設定中新增多個後端位址以實現負載平衡。
在上游配置中新增多個後端地址,再將代理目標設為 http://upstream-name。
常用配置
WebSocket
反向代理預設支援 WebSocket,無需額外配置。
當 AcePanel 位於 CDN 或 Frp 後方時,用於識別真實訪問者 IP。該功能與向後端轉發請求頭不同。
AcePanel 會自動配置以下請求頭,把使用者真實 IP 傳給後端:
X-Real-IPX-Forwarded-ForX-Forwarded-Proto
NOTE
這裡介紹的是把訪客 IP 轉送給後端服務,與進階設定(網站層級)中的 真實 IP 功能不同。 該功能用於 AcePanel 位於 CDN 或 Frp 後方時還原 真實訪客 IP,即讀取可信任上游要求標頭,而不是代理本身 IP。 IP;後端應用需要客戶端 IP 時使用請求頭轉發。
自定義配置
在網站編輯器的 自定義配置標籤頁中, 可以新增作用範圍為 當前網站或全域性的額外指令,不需要直接修改配置檔案:
proxy_connect_timeout 60s;
proxy_read_timeout 60s;
proxy_send_timeout 60s;
proxy_buffer_size 64k;
proxy_buffers 4 64k;注意事項
- 確認後端服務已經啟動並監聽指定埠。
- 後端是 Docker 容器時,確認埠對映正確,或使用 Docker 網路訪問。
- 後端服務崩潰時,Nginx 會返回 502。
