Een machine met meerdere lokale adressen heeft er mogelijk één nodig voor de verbinding met een forward-proxy. cURL kan beide keuzes expliciet maken:

curl_setopt_array($handle, [
    CURLOPT_URL => 'https://example.com/',
    CURLOPT_INTERFACE => '192.0.2.20',
    CURLOPT_PROXY => 'http://proxy.example:8080',
]);

Dit is een illustratieve configuratie voor een bestaande cURL-handle. Vervang 192.0.2.20 door een bronadres dat daadwerkelijk beschikbaar is op de machine waarop PHP draait. Voor een toegestaan openbaar verzoek zonder proxyaccount kan de HTTP-proxylijst de externe listener leveren voor de proxywaarde.

CURLOPT_INTERFACE kiest de lokale kant van de uitgaande verbinding. CURLOPT_PROXY kiest de tussenlaag die het verzoek verder draagt. Een lokale bron kiezen maakt die machine geen externe proxy en geeft haar geen willekeurig openbaar IP.

Op dit pad beïnvloedt de lokale keuze de verbinding naar de proxy. De website ziet doorgaans het verdere bronadres van de proxy. NAT tussen welk paar dan ook kan het adres dat elke ontvanger ziet verder vertalen.

Als de interfacekeuze wordt weggelaten, laat libcurl de TCP-stack een geschikte bron kiezen. Die keuze volgt de netwerkconfiguratie van de machine; het is geen universele regel dat het eerste adres in een configuratiebestand wint.

libcurl accepteert interfacenamen op ondersteunde platforms, maar de documentatie sluit Windows-interfacenaamkeuze voor deze optie uit. Het gebruik van een hostnaam kan ook een blokkerende opzoeking veroorzaken. Een bekend lokaal adres is een duidelijker invoer wanneer dat de keuze is die de toepassing bedoelt.

Gerelateerde artikelen