首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 反向代理類實作:支援檔案上傳、指定 IP、SAE 環境適配

     編輯:PHP 綜合知識

前言

反向代理可將請求轉發至後端服務,隱藏真實架構。本文提供一個基於 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();
?>

核心功能解析

  • 自動處理 GET/POST:包含 $_POST、$_FILES 多部份表單轉發。
  • Header 透傳:User-Agent、X-Forwarded-For、Cookie、X-Requested-With 等。
  • 重導向處理:301/302 自動重寫 Location 至當前域名。
  • 錯誤碼映射:404、500 等直接輸出對應 HTTP 狀態。
  • 快取控制:支援 If-Modified-Since、Last-Modified、Expires、Cache-Control。
  • SAE 相容:偵測 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 過濾與轉發
?>

部署提醒

  • 需啟用 PHP cURL 擴展。
  • 上傳暫存目錄 uploads/ 需可寫入(SAE 環境自動對應 SAE_TMP_PATH)。
  • 若後端為 HTTPS,需設定 CURLOPT_SSL_VERIFYPEER => false 或提供 CA 憑證。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved