Contents

主機跳板本機串接整合測試 API

在進行 OAuth 串接開發時,常會遇到「只有測試環境機器才能存取後端服務」的問題。這時要如何在本地端(Localhost)進行除錯與整合測試?

本文將分享一個實用的解決方案:透過 mkcertSSH Tunneling 以及 Reverse Proxy (Caddy) 的組合,在本地建立一個模擬真實環境的網路架構。

核心概念

當我們在本地開發時,往往無法直接連線到遠端的生產或測試環境 API。透過以下流程,我們可以將流量導向正確的地方:
前端 → Redirect 至後端入口 → 後端 → 目標服務

操作步驟

1. 生成本地信任憑證 (mkcert)

首先,我們需要讓瀏覽器與系統信任我們的開發網域。使用 mkcert 工具來產生對應的 SSL 憑證。

1
mkcert api.server.tw

2. 修改主機檔案 (Hosts File)

將自訂網域指向本地 IP,讓電腦知道當存取 api.server.tw 時,應該到哪裡找伺服器。

編輯路徑:C:\Windows\System32\drivers\etc\hosts
新增內容:

1
127.0.0.1 api.server.tw

3. 建立 SSH Tunnel (隧道)

透過 SSH 將遠端伺服器的特定連接埠映射到本地,這樣就能在本地存取遠端服務。

1
ssh -L 9091:api.server.tw:443 主機帳號@主機IP

4. 配置反向代理 (Reverse Proxy)

最後,使用 Caddy 或類似工具配置 Reverse Proxy。這樣能確保請求進入時,正確處理 TLS 並轉發到已建立的隧道連接埠。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
api.server.tw {
    log {
        output stderr
        level DEBUG
        format console
    }
    
    # 載入 API 網域憑證
    tls "C:\Users\steve\cert\api.server.tw.pem" "C:\Users\steve\cert\api.server.tw-key.pem"
    
    # 將請求反向代理至本機的 9091 Port (對應 SSH Tunnel)
    reverse_proxy https://localhost:9091 {
        transport http {
            tls_insecure_skip_verify
        }

        header_up -X-Forwarded-For
        header_up -X-Forwarded-Proto
        header_up -X-Forwarded-Host
        header_up -Forwarded
    }
}

總結

透過這套組合拳,我們可以在不改動遠端環境的情況下,在本地建立一個完整且具備正確網域與憑證的開發環境。對於處理複雜的 OAuth 回調(Callback)或跨網域請求時,特別實用。

小提示
在設定 reverse_proxy 時,請確認路徑中的憑證檔案位置與你的實際環境一致。