<?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로 전달하고 응답을 반환해야합니다.
관련 태그:
API