在 ServBay 中設定反向代理:將內網或遠端網站映射至本機進行開發除錯
ServBay 是一套專為 macOS 設計的本機 Web 開發環境,整合了 PHP、Node.js、Python、Go、Java 等多種語言以及 MySQL、PostgreSQL、MongoDB、Redis 等資料庫。不僅能直接託管本機專案,還提供了強大的反向代理功能。透過反向代理,您可輕鬆將位於內網、虛擬機、容器甚至遠端伺服器上的 Web 網站映射到本地 ServBay 環境,簡化開發、除錯與存取流程。
本文將詳細介紹如何在 ServBay 中設定反向代理,協助您將內網或其他可存取地址上的網站代理到本機,方便統一管理並高效開發與除錯。
概述
反向代理伺服器負責接收來自用戶端(例如您的瀏覽器)的請求,再轉發至一個或多個後端伺服器(本範例即為您想代理的內網或遠端網站)。ServBay 透過內建的 Web 伺服器(Caddy 或 Nginx)實現此功能。
於本機開發時,設定反向代理的主要優勢包括:
- 統一存取入口: 透過本機 ServBay 的域名即可存取所有內部或外部資源,無需記憶複雜的 IP 與埠號。
- 簡化 SSL 配置: 可運用 ServBay 的 SSL 管理功能(如 ServBay CA 或 ACME),即便後端僅支援 HTTP,也能讓代理網站透過 HTTPS 存取。
- 本地化除錯: 可在本地瀏覽器環境下輕鬆除錯遠端或內網 Web 應用。
- 繞過網路限制: 某些情境下,方便由本機存取公司內網或受限網路的資源(前提是 ServBay 執行主機能連線至目標)。
前置條件
開始設定反向代理前,請確認以下幾點:
- 已安裝並啟動 ServBay: 請確保您已經於 macOS 系統中安裝並啟動 ServBay 應用程式。
- 目標網站可存取: 您想代理的內網或遠端網站必須運作正常,且 ServBay 運行所在的這台 macOS 電腦能直接連線該網站的 IP/網域及對應埠號。例如,若目標為
192.168.1.100:8080
,請確認 macOS 可以 ping 通192.168.1.100
且能存取192.168.1.100:8080
。
新增反向代理網站的步驟
以下是在 ServBay 配置反向代理網站的詳細操作流程:
步驟一:開啟 ServBay 管理介面
於您的 macOS 應用程式資料夾中尋找 ServBay
圖示,雙擊以啟動應用程式。
步驟二:前往網站管理
啟動後,會看到主畫面。於左側導航選單中點選 網站
,即可進入 ServBay 網站管理頁面,管理所有本地託管與反向代理網站。
步驟三:新增網站
在網站管理頁面底部,尋找並點擊 +
按鈕。點擊後,右側會展開新表單供您設定新網站資訊。
步驟四:設定網站反向代理相關資訊
於新網站表單中,請填寫關鍵資訊以定義反向代理行為:
- 名稱 (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 (手動): 若您已有現成憑證檔(如
.crt
、.key
、.ca-bundle
),可選此項來手動上傳/設定。 本地開發/代理內網資源,強烈推薦選用ServBay CA
。
- 網站類型 (Website Type): 請選
反向代理 (Reverse Proxy)
,這是實現代理功能的關鍵設定。 - 代理目標 (Proxy Target): 輸入您要代理的內網或遠端網站完整存取地址,可採
IP:Port
格式,或帶協議的完整 URL。- 範例一 (IP:Port):
192.168.1.100:8080
- 範例二 (含協議 URL):
http://192.168.1.100:8080
- 範例三 (內網主機名):
backend.internal:8443
(前提為 ServBay 可解析該主機名) - 範例四 (遠端 URL):
https://api.example.com
請確保此處輸入的目標地址,ServBay 執行主機能直接連線。
- 範例一 (IP:Port):
步驟五:完成並儲存設定
資訊填寫無誤,請點擊表單底部的 添加 (Add)
按鈕。ServBay 將自動儲存您的設定,並於 Web 伺服器(Caddy 或 Nginx)產生對應反向代理規則。
儲存成功後,新反向代理網站將顯示於網站列表中。
步驟六:存取反向代理網站
設定完成後,您可於瀏覽器中輸入於步驟四指定的域名(如 proxy.to.local
或 backend.servbay.demo
),直接瀏覽被代理的內網或遠端網站。
如採用 ServBay CA 並啟用 HTTPS,首次存取時可能會遇到瀏覽器憑證警告(若尚未信任 ServBay CA 根憑證)。
步驟七:網站操作快捷鍵
ServBay 為每個網站提供便捷操作按鈕,方便管理:
- 以 IDE 開啟網站根目錄: 對反向代理網站通常不必使用,因並無本機根目錄。
- 瀏覽器開啟網站: 於預設瀏覽器快速存取該網站。
- 查看網站日誌: 檢視 ServBay Web 伺服器(Caddy/Nginx)此網站的存取與錯誤日誌,有助於除錯。
- 暫停/啟用網站: 可臨時啟用或停用該反向代理設定。
- 刪除網站: 將此代理網站從 ServBay 中移除。
常見問題與解決方案 (FAQ)
Q: 網站無法瀏覽,瀏覽器顯示異常。
- 檢查 ServBay 狀態: 確認 ServBay 已運行,且 Web 伺服器(Caddy/Nginx)已啟動。
- 檢查域名解析: 確認瀏覽器輸入的域名正確,已正確指向本機 ServBay IP(常見情況 ServBay 會自動改寫
hosts
,但也可手動查驗)。 - 查看 ServBay 網站日誌: 點選網站列表中的「查看日誌」按鈕,檢查伺服器日誌。此處會記錄用戶端請求、ServBay 鏈接代理目標資訊及可能的錯誤,是定位問題最快方式。
- 確認防火牆/安全軟體: macOS 防火牆或任何安全相關軟體,可能阻擋 ServBay 監聽 80 或 443 埠,或阻擋 ServBay 對代理目標的連線。
Q: ServBay 主機能存取代理目標,但透過 ServBay 域名瀏覽器卻出錯。
- 檢查代理目標格式: 請確保在 ServBay 配置的「代理目標」格式正確,且 ServBay 主機可直接透過此地址聯網。您可於終端機輸入
curl [代理目標地址]
測試連通性。 - 檢查目標伺服器設定: 有些後端伺服器會檢查請求的
Host
標頭。ServBay 預設會將用戶端原始Host
標頭轉發至後端。若後端網站需特定的Host
(如內網域名),但透過不同域名存取,可能造成問題。可於 ServBay 進階設定中調整轉發標頭(須手動編輯 Caddyfile 或 Nginx 設定,超出基本 UI 範疇)。 - 檢查目標伺服器防火牆: 即便 ServBay 可聯網目標 IP 與埠,目標伺服器防火牆也可能僅允許特定 IP 範圍連線。請務必保障目標網站開放 ServBay 主機 IP 存取。
Q: 用 HTTPS 存取代理網站時遇到憑證警告。
- 採用 ServBay CA: 若選擇 ServBay CA,這屬預期行為,因 ServBay CA 為私人簽發機構,公眾瀏覽器不預設信任。需於作業系統或瀏覽器中手動信任 ServBay CA 根憑證。可於「設定」中直接安裝所需根憑證。
- 採用 ACME (Let's Encrypt): 請確保域名已正確解析至 ServBay 主機, 並已透過 SSL 證書管理平台申請 ACME 證書。詳情可查閱 ServBay 日誌,以掌握 ACME 申請過程中詳細錯誤資訊。
Q: 如何代理需要特定標頭或 cookie 的目標?
ServBay 的基本反向代理會轉遞大多數用戶端請求資訊。若情境較複雜,例如需加入自定請求標頭、調整回應標頭、處理特殊 cookie 或進行路徑重寫,則需啟用 ServBay 進階設定,手動編輯底層 Caddyfile 或 Nginx 配置文件,撰寫更細緻的代理規則。需具備一定 Caddy 或 Nginx 配置語法知識。
總結
善用 ServBay 反向代理功能,您可輕鬆將內網、虛擬機、容器或遠端伺服器上的 Web 網站整合入本機開發環境。不僅統一存取入口,也簡化本地除錯與 SSL 設定。依本文步驟,即可快速設定並開始使用代理網站。結合 ServBay 強大的日誌檢視與故障排除工具,確保代理網站穩定運作,顯著提升您的開發工作效率。