HTTP 出站如何建立連線
用戶端先連線 server:port 指定的上游代理,再傳送 HTTP CONNECT 請求建立到目標主機的 TCP 隧道。目標網站使用 HTTP 還是 HTTPS,不會改變這裡的節點類型。
type: http 預設表示以明文連線上游代理。只有設定 tls: true,用戶端到上游代理這一段才會使用 TLS。HTTP 出站本身不提供 UDP 轉發。
最小必填欄位
以下四項構成一個無需認證的最小 HTTP 出站。節點名稱用於策略群組和規則引用,不能與其他節點重名。
name必填- 節點名稱,後續在
proxy-groups或規則中使用。 type必填- 固定填寫
http。 server必填- 上游 HTTP 代理的網域或 IP 位址。
port必填- 上游代理監聽連接埠,連接埠號本身不決定是否啟用 TLS。
認證與 CONNECT 請求標頭
上游需要 Basic 代理認證時同時填寫使用者名稱和密碼。headers 會加入 CONNECT 請求,可按閘道要求覆蓋預設的 Host、User-Agent 或 Proxy-Connection 等請求標頭。
username按需- 上游代理認證使用者名稱。目前實作只有使用者名稱和密碼都非空時才傳送 Basic 認證。
password按需- 與
username配套的代理認證密碼。 headers按需- 鍵值形式的 CONNECT 請求標頭。不要把目標網站的普通請求標頭設定在這裡。
HTTPS 上游與憑證驗證
開啟 TLS 後,SNI、憑證名稱和憑證鏈都針對上游代理,而不是最終存取的網站。正常情況下應保留憑證驗證。
tls按需- 設為
true後,以 TLS 連線上游 HTTP 代理。 sni按需- TLS 握手中的伺服器名稱,省略時使用
server。 name-cert-verify按需- 單獨指定憑證 DNSName 驗證目標,不會修改 SNI。
skip-cert-verify謹慎- 跳過憑證驗證,僅適合明確瞭解風險的臨時疑難排解。
fingerprint按需- 完整憑證的 SHA-256 指紋,不是瀏覽器用戶端指紋。
certificate / private-key按需- 成對填寫時啟用 mTLS,支援 PEM 內容或對應檔案路徑。
HTTPS 認證節點示例
示例同時啟用上游 TLS 和 Basic 認證。若上游無需認證,刪除 username 與 password;若上游是明文 HTTP 代理,刪除 tls 與 sni。
- 出現 TLS 握手錯誤時,先確認上游是否真的提供 HTTPS 代理服務。
- 出現 407 Proxy Authentication Required 時,核對帳號、密碼和上游允許的認證方式。
- 出現 CONNECT method not allowed 時,上游可能不是正向代理,或未允許 CONNECT 方法。
proxies:
- name: http-upstream
type: http
server: proxy.example.com
port: 443
username: user
password: pass
tls: true
sni: proxy.example.com