跳轉到內容

反向代理

反向代理網站設定

反向代理網站用於將外部請求轉發至後端服務,常用於部署 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 服務

編輯反向代理網站

點選網站清單中的 編輯 按鈕進入編輯頁面。

可以在基本設定中將網站切換為 PHP 或純靜態型別。 域名、監聽、檔案等通用內容會保留;代理上游和代理規則會刪除,並重新生成所選型別的配置。 切換前必須備份並記錄代理配置。

網域與監聽

設定網站的網域與監聽連接埠,支援多個網域與連接埠。

  • 網域:可新增多個網域
  • 監聽位址:可設定多個連接埠,支援 HTTPS 與 QUIC(HTTP3)

上游配置

上游用於定義後端伺服器位址,支援多個後端以進行負載平衡。

  • 上游名稱:上游的識別名稱
  • 負載平衡演算法:對於 Nginx,支援輪詢(預設)、least_connip_hashhashrandom;對於 Apache,支援輪詢(預設)、最少忙碌與依流量分配
  • 保持連線數:與後端維持的持久連線數量
  • DNS 解析器:自訂 DNS 解析器與解析逾時時間(僅 Nginx)

點選 新增伺服器 按鈕以新增後端伺服器:

  • 伺服器位址:後端伺服器位址,例如 127.0.0.1:8080
  • 選項:選填參數,例如 weight=5(權重)、backup(備援伺服器)等。

代理配置

設定代理行為與請求標頭轉發。 每條代理規則會將一個 location 對應到一個後端。

  • 匹配型別: 精確匹配(=)、優先字首(^~)、普通字首、區分大小寫正則(~)和不區分大小寫正則(~*)。
  • 匹配表示式: 要匹配的 URL 表示式。
  • 代理地址: 上游名稱或完整後端地址,例如 http://127.0.0.1:8080http://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
  • 狀態碼301302307308,預設值為 308
  • 來源: URL 型別填寫來源路徑,Host 型別填寫來源主機;404 型別無需填寫。
  • 目標: URL 型別填寫目標路徑,Host 和 404 型別填寫目標 URL。
  • 保留 URI: 保留原請求路徑和查詢引數並追加到目標地址。

Nginx 接收使用者的 HTTP 或 HTTPS 請求,再轉發到指定後端地址。

HTTPS 標籤頁用於管理網站 TLS。 網站已繫結證書時,會顯示有效期、簽發者和覆蓋域名。

  • 總開關:為此網站啟用或關閉 HTTPS。 啟用後自動增加 443 監聽,Nginx 還會增加 quic;關閉後移除 443 監聽,並清除 sslquic 標記
  • 使用已有證書: 從證書管理中選擇證書,自動填入證書和私鑰。
  • 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.110.0.0.0/8。 使用 Frp 時填寫 Frp 地址,使用 CDN 時填寫 CDN 地址段。 不確定時可以使用 0.0.0.0/0::/0,但這不安全。
  • IP 請求頭: 例如 X-Real-IPX-Forwarded-ForCF-Connecting-IPTrue-Client-IPAli-Cdn-Real-IpEO-Connecting-IP,也支援自定義。
  • 遞迴:X-Forwarded-For 中遞迴查詢真實 IP。

基本認證

使用者憑據中新增使用者名稱和密碼後,訪問網站前必須通過 HTTP Basic Authentication; 列表為空時不啟用認證。

常見場景

Node.js 應用

bash
node app.js  # 監聽 3000 埠

代理目標:http://127.0.0.1:3000

Docker 容器

後端位於 Docker 容器時,可以使用容器 IP,或在同一 Docker 網路中使用容器名稱。

代理目標:http://container-name:porthttp://container-IP:port

多後端負載均衡

在上游設定中新增多個後端位址以實現負載平衡。

在上游配置中新增多個後端地址,再將代理目標設為 http://upstream-name

常用配置

WebSocket

反向代理預設支援 WebSocket,無需額外配置。

當 AcePanel 位於 CDN 或 Frp 後方時,用於識別真實訪問者 IP。該功能與向後端轉發請求頭不同。

AcePanel 會自動配置以下請求頭,把使用者真實 IP 傳給後端:

  • X-Real-IP
  • X-Forwarded-For
  • X-Forwarded-Proto

NOTE

這裡介紹的是把訪客 IP 轉送給後端服務,與進階設定(網站層級)中的 真實 IP 功能不同。 該功能用於 AcePanel 位於 CDN 或 Frp 後方時還原 真實訪客 IP,即讀取可信任上游要求標頭,而不是代理本身 IP。 IP;後端應用需要客戶端 IP 時使用請求頭轉發。

自定義配置

在網站編輯器的 自定義配置標籤頁中, 可以新增作用範圍為 當前網站全域性的額外指令,不需要直接修改配置檔案:

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。