<?php // Créer un serveur proxy $proxy = stream_socket_server('tcp://127.0.0.1:8000', $errno, $errstr); if (!$proxy) { die("Échec de la création d'un serveur proxy:$errstr ($errno)"); } while (true) { // Acceptez les demandes de connexion du client $client = stream_socket_accept($proxy); if ($client) { // Lire les demandes du client $request = fread($client, 8192); // Modifiez l'en-tête de demande,Déguisé en paroles de Baidu WenxinAPIDemande $request = str_replace( 'Host: localhost:8000', 'Host: api.lovelive.tools', $request ); // Créer etAPIConnexion de l'interface $api = stream_socket_client('tcp://api.lovelive.tools:80', $errno, $errstr, 30); if ($api) { // VersAPIInterface envoie la demande fwrite($api, $request); // ObtenirAPIet renvoyer la réponse au client while (!feof($api)) { fwrite($client, fread($api, 8192)); } fclose($api); } else { fclose($client); } } } fclose($proxy);
Enregistrez le code sous proxy.php et exécutez-le via la ligne de commande:
php proxy.php
Cette fois, le serveur proxy s'exécute sur le port 127.0.0.1:8000.
Exemple d'envoi de demandes via Proxy à l'aide de la commande curl:
curl -x localhost: 8000 https://api.lovelive.tools/api/sweetnothings/1
serveur { Écoutez 80; server_name api.mydomain.com; emplacement / { proxy_pass http: // localhost: 8000; proxy_set_header hôte api.lovelive.tools; } }
Exemple de code PHP proxy inversé, implémentation de la requête de la demande et rendement de la réponse:
<?php // Créer etAPIConnexion de l'interface $api = stream_socket_client('tcp://api.lovelive.tools:80', $errno, $errstr, 30); if ($api) { // Lire les demandes du client体 $request = file_get_contents('php://input'); // VersAPIInterface envoie la demande fwrite($api, $request); // ObtenirAPIRépondre et retourner au client while (!feof($api)) { echo fread($api, 8192); } fclose($api); } else { header('HTTP/1.1 500 Internal Server Error'); echo "etAPILa connexion d'interface a échoué"; }
Enregistrez le code sous revers_proxy.php, démarrez la ligne de commande:
php -s localhost: 8000 reverse_proxy.php
Le serveur proxy inversé peut s'exécuter sur le port localhost: 8000.
La demande du client est envoyée directement à api.mydomain.com, et le serveur est responsable de le transmettre à l'API Baidu Wenxin Yiyan et de renvoyer la réponse.