Proč PHP-FPM ztrácí proxy, který funguje v terminálu
Sledujte konfiguraci proxy do pracovníků PHP-FPM a odlište jejich prostředí od stream kontextů PHP.
Stejný soubor PHP může v terminálu používat proxy a při obsluze přes PHP-FPM jít přímo. Začněte porovnáním procesů, které jej spouštějí. Váš terminál spouští PHP s prostředím svého shellu; webový server posílá požadavek pracovníkům, které FPM již vytvořil.
Podívejte se na prostředí pracovníka
Konfigurace poolu FPM poskytuje clear_env a explicitní položky env[NAME]. Při zapnutém čištění prostředí export proměnné ve vašem přihlašovacím shellu ji do pracovníka neumístí. Položky poolu mohou předávat vybrané proměnné:
env[http_proxy] = http://203.0.113.10:8080
env[https_proxy] = http://203.0.113.10:8080
Změny konfigurace aplikujte obvyklým postupem restartu FPM ve vašem nasazení. Hodnoty vložte do poolu, který aplikaci skutečně obsluhuje. Jiný pool, servisní účet nebo kontejner mohou vysvětlit, proč zdánlivě správná úprava nemá účinek.
Při ladění živého požadavku kontrolujte pouze to, zda očekávaná nastavení existují. Veřejná diagnostická stránka, která vypisuje úplné hodnoty prostředí, může odhalit přihlašovací údaje k proxy spolu s nesouvisejícími tajemstvími.
Poté zkontrolujte transport PHP
libcurl má dokumentované zpracování prostředí proxy; explicitní handle PHP cURL má také vlastní možnosti. HTTP stream wrapper PHP má samostatnou konfiguraci kontextu. Poskytnutí proměnných pracovníkovi neznamená, že je každé síťové API PHP spotřebuje.
To dává užitečnou dvoudílnou kontrolu: potvrďte, co pracovník obdržel, a poté potvrďte, jak zvolený HTTP klient čte nastavení proxy. Pokud CLI i FPM dostávají stejné hodnoty, ale stále se chovají odlišně, porovnejte dále možnosti klienta a pravidla obcházení. Opakované úpravy profilu shellu nemohou vyřešit rozdíl uvnitř HTTP klienta pracovníka.