在 ServBay 中設定反向代理:將內網或遠端網站映射到本機進行開發與除錯
ServBay 是一套支援 macOS 及 Windows 的本地 Web 開發環境,內建多種程式語言(PHP、Node.js、Python、Go、Java 等)及資料庫(MySQL、PostgreSQL、MongoDB、Redis 等)支援。除了能直接管理本機專案外,ServBay 還具備強大的反向代理功能。透過反向代理,您可將位於內網、虛擬機、容器甚至遠端伺服器上的 Web 網站映射至本地 ServBay 環境,讓開發、除錯及存取流程更簡便。
本文將完整介紹如何在 ServBay 中設定反向代理,協助您將內網或其他可用站點代理到本機,實現統一管理與高效開發除錯。
概述
反向代理伺服器會接收用戶端(如您的瀏覽器)的請求,並將之轉送到一個或多個後端伺服器(本例為您想代理的內網或遠端網站)。ServBay 透過其內建的 Web 伺服器(Caddy 或 Nginx)來執行此功能。
在本地開發情境下,設定反向代理有以下主要優勢:
- 統一存取入口: 只需透過本機 ServBay 的網域,就能存取所有內外部資源,無需記住複雜的 IP 或埠號。
- 簡化 SSL 配置: 可善用 ServBay 的 SSL 管理功能(ServBay CA 或 ACME),讓被代理網站支援 HTTPS,即使後端僅支援 HTTP。
- 本地化除錯: 能在本地瀏覽器輕鬆除錯遠端或內網的 Web 應用程式。
- 繞過網路限制: 在某些情況下,可自本機存取公司內網或受限網路資源(前提是 ServBay 執行的主機能訪問目標站點)。
前置條件
開始設定反向代理前,請先確認以下事項:
- 已安裝並運行 ServBay: 確定 ServBay 應用已於您的 macOS 正確安裝並執行。
- 目標網站可被存取: 欲代理的內網或遠端網站須運作正常,且 ServBay 所在機器必須可以網路直連該網站的 IP/網域及埠號。例如目標為
192.168.1.100:8080
,請確保 macOS 能順利 ping 通192.168.1.100
且可連線至192.168.1.100:8080
。
新增反向代理網站步驟
以下為在 ServBay 中設定反向代理網站的詳細流程:
步驟 1:開啟 ServBay 管理介面
於您的 macOS 應用程式資料夾中找到 ServBay
圖示,雙擊以啟動 ServBay。
步驟 2:進入網站管理
開啟 ServBay 後,會見到主畫面。在左側導覽選單中點選 網站
,進入網站管理頁面,可管理所有本機及代理網站。
步驟 3:新增網站
在網站管理頁面底部點選 +
按鈕。點擊後,右側區塊將展開新增網站表單。
步驟 4:設定網站反向代理選項
於新增網站表單中,請填寫下列關鍵資訊以定義代理行為:
- 名稱(Name): 為代理網站建立易辨識名稱。如:
Internal Backend Proxy
。 - 網域(Domain): 輸入本地存取被代理網站的網域。例如:
backend.servbay.demo
或proxy.to.local
。ServBay 會自動將您輸入的開發網域加至系統hosts
檔,解析至本機127.0.0.1
或::1
。 - 協定(Protocol): 選擇站台支援的協定。通常可選擇
HTTP/HTTPS
,雙協定兼容,ServBay 將根據設定自動管理 SSL。 - SSL 憑證請求方式(SSL Certificate Request Method):
- ServBay CA(本地開發建議): 選擇此項後,ServBay 會利用自身的憑證機構(CA)針對網域自動產生及管理 SSL 憑證。此方式便利,但須在瀏覽器或系統信任 ServBay CA 根憑證,以免跳出安全警示。
- ACME(Let's Encrypt): 若網域為公開網域並可連線至網際網路,可選此項於 Let's Encrypt 申請免費 SSL。
- Manual(手動): 若已有 SSL 憑證檔案(
.crt
,.key
,.ca-bundle
),可上傳並手動配置。 本地開發及代理近端資源,強烈推薦使用ServBay CA
。
- 網站類型(Website Type): 選擇
反向代理(Reverse Proxy)
,此為代理功能之關鍵設置。 - 代理目標(Proxy Target): 輸入欲代理的內網或遠端網站完整地址,可為
IP:Port
或帶協定的完整 URL。- 範例 1(IP:Port):
192.168.1.100:8080
- 範例 2(含協定 URL):
http://192.168.1.100:8080
- 範例 3(內網主機名):
backend.internal:8443
(前提 ServBay 主機可解析) - 範例 4(遠端 URL):
https://api.example.com
請確認輸入之地址能由 ServBay 主機直接存取。
- 範例 1(IP:Port):
步驟 5:完成並儲存設定
填妥所有資訊後,請點選表單底部的 添加(Add)
按鈕。ServBay 將自動儲存設定,並於 Web 伺服器(Caddy 或 Nginx)生成對應反向代理規則。
儲存成功後,新增的代理網站將顯示於網站列表。
步驟 6:存取反向代理網站
設定完成後,即可於瀏覽器輸入步驟 4 設定的網域(如 proxy.to.local
或 backend.servbay.demo
)來存取被代理的內網或遠端網站。
若您選用 ServBay CA 且設定了 HTTPS,首次存取時可能遇到瀏覽器憑證警示(如尚未信任 ServBay CA 根憑證)。
步驟 7:網站快捷操作
ServBay 為每個網站提供多項快捷操作,方便管理:
- 以 IDE 開啟根目錄: 針對反向代理網站通常不需本地根目錄,因此此功能較少使用。
- 瀏覽器開啟網站: 快速以預設瀏覽器存取網站。
- 檢視網站日誌: 查閱 ServBay Web 伺服器(Caddy/Nginx)於該網站所記錄的存取及錯誤日誌,是除錯重要工具。
- 暫停/啟用網站: 臨時啟動或停用代理設定。
- 刪除網站: 完全移除該代理網站配置。
常見問題與解決方式(FAQ)
Q:網站無法存取,瀏覽器顯示錯誤。
- 檢查 ServBay 狀態: 確保 ServBay 本身正在運作,且 Web 伺服器(Caddy/Nginx)已啟動。
- 檢查網域解析: 確定瀏覽器輸入的網域無誤,且已正確解析至本機 ServBay IP(ServBay 通常自動修改
hosts
,您可手動查驗)。 - 查閱 ServBay 網站日誌: 點選網站列裡的「檢視日誌」按鈕,檢查 Web 伺服器日誌。此處記錄用戶端請求及 ServBay 連線代理目標過程,以及錯誤資訊,是問題排查首選。
- 檢查防火牆/安全軟體: 確保 macOS 防火牆或安全軟體未阻擋 ServBay 監聽 80、443 埠,亦未阻擋 ServBay 連線至代理目標。
Q:ServBay 主機可連線目標,但瀏覽器輸入 ServBay 網域仍報錯。
- 檢查代理目標格式: 確定在 ServBay 設定的「代理目標」格式無誤,且主機能「直接」存取目標網站。可在終端機使用
curl [代理目標地址]
測試連線。 - 檢查目標伺服器設定: 部分後端會檢查
Host
標頭。ServBay 預設會將用戶端原始Host
標頭傳送至後端。若後端需特定 Host(如內網網域),而您則用不同網域存取,可能會產生問題。可在 ServBay 高級設定(需手動編輯 Caddyfile 或 Nginx 配置)調整標頭。 - 檢查目標伺服器防火牆: 即使能連線 IP 及埠,但目標防火牆可能僅允許特定 IP 範圍連接(如僅內網)。確保目標伺服器允許 ServBay 主機的 IP 連入。
Q:用 HTTPS 存取代理網站出現憑證警示。
- 使用 ServBay CA: 選此方式時,瀏覽器顯示警示屬預期現象,因 ServBay CA 為私有憑證機構,瀏覽器預設不信任。您需在系統或瀏覽器手動信任 ServBay CA 根憑證,可至「設定」直接安裝。
- 使用 ACME(Let's Encrypt): 避免網域解析或憑證申請錯誤,請確認網域已正確解析至 ServBay 主機 IP,並已在 ServBay SSL 憑證平台申請 ACME 憑證。也可查閱 ServBay 日誌獲取申請細節。
Q:如何代理需要特殊標頭或 cookie 的目標?
ServBay 基本代理會傳送大部分用戶端請求資訊。若有進階需求(如新增自訂標頭、修改回應標頭、特殊 cookie 處理或路徑重寫),請進入 ServBay 高級設定,手動編輯底層 Caddyfile 或 Nginx 配置,新增精細代理規則。此部分需具備 Caddy 或 Nginx 配置語法知識。
總結
藉由 ServBay 的反向代理功能,您可輕鬆將內網、虛擬機、容器或遠端伺服器上的 Web 網站整合至本地開發環境。不僅提供統一便捷的存取入口,也簡化本地除錯與 SSL 設定。依照本文步驟,即可迅速完成反向代理配置並開始運作。結合 ServBay 強大的日誌檢視及故障排除技巧,確保代理網站穩定、提升開發效率。