<?php // 프록시 서버를 만듭니다 $proxy = stream_socket_server('tcp://127.0.0.1:8000', $errno, $errstr); if (!$proxy) { die("프록시 서버를 생성하지 못했습니다:$errstr ($errno)"); } while (true) { // 클라이언트 연결 요청을 수락합니다 $client = stream_socket_accept($proxy); if ($client) { // 클라이언트의 요청을 읽습니다 $request = fread($client, 8192); // 요청 헤더를 수정하십시오,Baidu Wenxin의 말로 위장했습니다API요구 $request = str_replace( 'Host: localhost:8000', 'Host: api.lovelive.tools', $request ); // 만들고API인터페이스 연결 $api = stream_socket_client('tcp://api.lovelive.tools:80', $errno, $errstr, 30); if ($api) { // 쪽으로API인터페이스는 요청을 보냅니다 fwrite($api, $request); // 얻다API그리고 고객에게 응답을 반환하십시오 while (!feof($api)) { fwrite($client, fread($api, 8192)); } fclose($api); } else { fclose($client); } } } fclose($proxy);
코드를 proxy.php로 저장하고 명령 줄을 통해 실행하십시오.
Php proxy.php
이번에는 프록시 서버가 포트 127.0.0.1:8000에서 실행됩니다.
CURL 명령을 사용하여 프록시를 통해 요청을 보내는 예 :
Curl -X LocalHost : 8000 https://api.lovelive.tools/api/sweetnothings/1
서버 { 80; server_name api.mydomain.com; 위치 / { proxy_pass http : // localhost : 8000; proxy_set_header 호스트 api.lovelive.tools; } }
리버스 프록시 PHP 코드 예제, 요청 전달 및 응답 반환 구현 :
<?php // 만들고API인터페이스 연결 $api = stream_socket_client('tcp://api.lovelive.tools:80', $errno, $errstr, 30); if ($api) { // 클라이언트의 요청을 읽습니다体 $request = file_get_contents('php://input'); // 쪽으로API인터페이스는 요청을 보냅니다 fwrite($api, $request); // 얻다API클라이언트에 응답하고 돌아갑니다 while (!feof($api)) { echo fread($api, 8192); } fclose($api); } else { header('HTTP/1.1 500 Internal Server Error'); echo "그리고API인터페이스 연결이 실패했습니다"; }
코드를 Reverse_proxy.php로 저장하고 명령 행을 시작하십시오.
PHP -S 로컬 호스트 : 8000 reverse_proxy.php
리버스 프록시 서버는 LocalHost : 8000 포트에서 실행될 수 있습니다.
클라이언트 요청은 API.mydomain.com으로 직접 전송되며 서버는 Baidu Wenxin Yiyan API로 전달하고 응답을 반환해야합니다.