Ten istý PHP súbor môže v termináli používať proxy a pri obsluhe cez PHP-FPM ísť priamo. Začnite porovnaním procesov, ktoré ho spúšťajú. Terminál spúšťa PHP s prostredím shellu; webový server posiela požiadavku workerom, ktoré FPM už vytvoril.

Pozrite sa na prostredie workera

Konfigurácia FPM poolu poskytuje clear_env a explicitné položky env[NAME]. Pri zapnutom čistení prostredia export premennej v prihlasovacom shelli neumiestni premennú do workera. Položky poolu môžu odovzdávať vybrané premenné:

env[http_proxy] = http://203.0.113.10:8080
env[https_proxy] = http://203.0.113.10:8080

Zmeny konfigurácie aplikujte bežným postupom pre načítanie FPM vo vašom nasadení. Hodnoty vložte do poolu, ktorý aplikáciu skutočne obsluhuje. Iný pool, servisný účet alebo kontajner môže vysvetliť, prečo zdanlivo správna úprava nemá účinok.

Pri ladení živej požiadavky kontrolujte len to, či očakávané nastavenia existujú. Verejná diagnostická stránka, ktorá vypisuje úplné hodnoty prostredia, môže odhaliť prihlasovacie údaje proxy spolu s nesúvisiacimi tajomstvami.

Potom skontrolujte transport PHP

libcurl má zdokumentované spracovanie proxy prostredia; explicitný PHP cURL handle má tiež vlastné možnosti. HTTP stream wrapper PHP má samostatnú konfiguráciu kontextu. Odovzdanie premenných workeru nespôsobí, že ich využije každé sieťové API PHP.

To dáva užitočnú dvojdielnu kontrolu: potvrďte, čo worker dostal, a potom potvrďte, ako zvolený HTTP klient číta nastavenia proxy. Ak CLI a FPM dostávajú rovnaké hodnoty, ale stále sa správajú odlišne, porovnajte ďalej možnosti klienta a pravidlá obchádzania. Opakovaná úprava profilu shellu nevyrieši rozdiel vnútri HTTP klienta workera.

Súvisiace články