跳轉到內容

反向代理 ​

反向代理網站設定

反向代理網站用於將外部請求轉發至後端服務,常用於部署 Node.js、Go、Java、Python 等應用程式。

運作原理 ​

使用者請求 -> Web 伺服器(反向代理)-> 後端應用(例如 localhost:3000)

所選 Web 伺服器接收使用者的 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_conn、ip_hash、hash 與 random;其他 Web 伺服器支援的演算法會顯示在下拉式清單中
  • 保持連線數:與後端維持的持久連線數量
  • 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
  • 狀態碼: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 驗證簽發。

一鍵簽發憑證成功後,AcePanel 會自動為網站啟用 HTTPS。請在 HTTPS 標籤頁中檢查產生的憑證與監聽設定。

網站進階設定 ​

進階設定 分頁將多個網站層級選項整理為可摺疊面板。

訪問統計 ​

適用於 Nginx、OpenResty 與 Caddy。啟用 訪問統計後,可在網站統計頁面檢視該網站資料。

日誌設定 ​

  • 存取日誌:選擇 關閉(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。

基本認證 ​

新增適用於整個網站或指定目錄的規則,然後在使用者認證資訊中新增使用者名稱與密碼。目錄規則需填寫 /admin/ 這類 URL 路徑。更具體的目錄路徑優先於範圍更大的規則;網站層級規則涵蓋其餘路徑。移除規則即可停用驗證。

常見場景 ​

Node.js 應用 ​

bash
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-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。