反向代理可將請求轉發至後端服務,隱藏真實架構。本文提供一個基於 cURL 的 PhpReverseProxy 類,修正原版錯誤,新增檔案上傳支援、自定義目標 IP、SAE 環境適配等功能。
<?php $proxy = new PhpReverseProxy(); $proxy->port = "8080"; $proxy->host = "www.example.com"; // $proxy->ip = "1.1.1.1"; // 可選:指定後端 IP $proxy->forward_path = ""; $proxy->connect(); $proxy->output(); ?>
$_POST、$_FILES 多部份表單轉發。IS_SAE 常數,調整暫存路徑與 URL 組裝。| 方法 | 用途 |
|---|---|
| translateURL() | 組裝目標 URL,含查詢字串與 SAE 判斷 |
| preConnect() | 蒐集請求 Header、Cookie、Client IP |
| connect() | cURL 執行核心,處理 POST/檔案上傳、Header 設定 |
| postConnect() | 解析回應 Header/Body,處理狀態碼與重導向 |
| output() | 輸出最終內容與 Header,支援分塊傳輸 |
代碼較長,已整理於下方預覽區(可複製另存為 PhpReverseProxy.php)。
<?php // 完整類別代碼請參考原文,此處略去以節省篇幅 // 關鍵點:建構子初始化、cURL 參數組裝、檔案上傳暫存處理、Header 過濾與轉發 ?>
cURL 擴展。uploads/ 需可寫入(SAE 環境自動對應 SAE_TMP_PATH)。CURLOPT_SSL_VERIFYPEER => false 或提供 CA 憑證。