Red de conocimiento del abogados - Respuesta jurídica de la empresa - Cómo implementar proxy inverso usando thinkphp

Cómo implementar proxy inverso usando thinkphp

Adaptado de PHP Reverse Proxy PRP, corrige algunos errores en la versión original, admite la carga de archivos y la identificación del tipo de archivo cargado, admite IP especificada y se adapta al entorno SAE.

Uso 123456789 port="8080"; $proxy->host="ww"; //$proxy->ip=" 1.1 .1.1"; $proxy->forward_path=""; $proxy->connect(); $proxy->output(); ?>

Código fuente

http_code=='404'){ encabezado( " HTTP/1.1 404 no encontrado"); exit("HTTP/1.1 404 no encontrado"); }elseif($this->http_code=='500'){ header('HTTP/1.1 500 Error interno del servidor'); salir ("HTTP/1.1 500 Error interno del servidor"); }else{ exit("HTTP/1.1 ".$this->http_code." Error interno del servidor"); , d M Y H:i:s",time()); $expiredTime=gmdate("D, d M Y H:i:s",(time()+$this->cacheTime)); $doOriginalHeaders = true; if ( $doOriginalHeaders){ if($this->IMS){ header("HTTP/1.1 304 No modificado"); header("Fecha: miércoles, $currentTimeString GMT"); "); header("Servidor: $this->version"); }else{ header("HTTP/1.1 200 OK"); header("Fecha: miércoles, $currentTimeString GMT"); header("Tipo de contenido: ".$this->content_type); header("Última modificación: $this->lastModified"); header("Cache-Control: max-age=$this->cacheTime"); header("Expira: $ expiredTime GMT"); header("Servidor: $this->version"); preg_match("/Set-Cookie:[^\n]*/i",$this->resultHeader,$resultado); fo

alcance($resultado como $i=>$valor){ encabezado($resultado[$i] } preg_match("/Content-Encoding:[^\n]*/i",$this->resultHeader,$resultado ); foreach($resultado como $i=>$valor){ //encabezado($resultado[$i] } preg_match("/Transfer-Encoding:[^\n]*/i",$this-> resultHeader,$resultado); foreach($resultado como $i=>$valor){ //encabezado($resultado[$i]); echo($this->content); >contenido, "error")){ echo print_r($this->sendPost); } */ } } else{ $headerString = $this->resultHeader; //cadena $headerArray = explotar("\n", $headerString; ); foreach($headerArray as $privHeader){ header($privHeader } if(stristr($headerString, "Codificación de transferencia: fragmentada")){ ob_flush(); = strlen($this->content); while($i < $maxLen){ $endChar = $i + self::chunkSize; if($endChar >= $maxLen){ $endChar = $maxLen - 1; trozo = substr($this->content, $i, $endChar); $this->dump_chunk($chunk()); $i = $i + $endChar; $this->content); } //echo "encabezado: ".print_r($headerArray); //encabezado($this->resultHeader); \n", strlen($chunk)); echo $chunk; echo "\r\n"; } function getOutsideHeaders(){ $headers = array(); foreach ($_SERVER as $nombre => $valor)

{ if (substr($nombre, 0, 5) == 'HTTP_') { $nombre = str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($nombre, 5) ))))); $encabezados[$nombre] = $valor; }elseif ($nombre == "CONTENIDO_TIPO") { $encabezados["Contenido-Tipo"] = $valor; ") { $encabezados["Contenido-Longitud"] = $valor; }elseif(stristr($nombre, "X-Requested-With")) { $encabezados["X-Requested-With"] = $valor; $ this->XRequestedWith = $value; } } //echo print_r($headers); $this->outsideHeaders = $headers; return $headers;