Składnia dyrektywy Apache SetHandler podczas konfigurowania PHP FPM
Skorzystałem z kilku samouczków i skonfigurowałem Apache do używania PHP FPM. Jednak nie rozumiem, co robi część SetHandler
linii, a niektóre z moich eksperymentów wydają się zbędne. Mam linię:
SetHandler "proxy:unix:/run/php/php7.3-fpm.sock|fcgi://localhost"
Działa to niezależnie od tego, czy |fcgi://localhost
jest obecny, czy nie.
W różnych miejscach, takich jak konfiguracja Pleska, widziałem część fcgi://localhost
wymienioną nafcgi://127.0.0.1:9000
Jaki jest cel |fcgi://localhost
? Czy jest zbędny i czy można go usunąć?
Czy potok, separator socka i fcgi w sock|fcgi
mają być interpretowane jako „lub”, co oznacza, że jeśli nie ma gniazda unix, należy zamiast tego użyć połączenia tcp?
W mojej konfiguracji puli FPM próbowałem zastąpić dyrektywę nasłuchiwania hostem i portem, również tylko z portem, ale nie wydaje mi się, aby działało. Jak skonfigurowałbyś PHP FPM, aby był dostępny przez TCP, a nie przez gniazdo unix? W tej chwili nie mam powodu, żeby to robić, to tylko nauka.
Wreszcie. Czy to jest właściwa witryna ze stosem, aby zadać to pytanie?
Edytuj, aby powiedzieć, że znalazłem niewielką część dokumentacji z Apache. Ostatni przykład w sekcji przykładów mówi o używaniu |fcgi://something
w kontekście wymuszania żądania zwrotnego proxy, ale naprawdę tego nie rozumiem.
Odpowiedzi
Dokumentacja jasno określa, dlaczego należy ją dołączyć, mimo że nie jest to obowiązkowe:
Ze względu na wydajność będziesz chciał zdefiniować pracownika reprezentującego ten sam
fcgi://
backend. Zaletą tej formy jest to, że pozwala na normalne mapowanie URI na nazwę pliku na serwerze, a wynik lokalnego systemu plików jest przekazywany do zaplecza. Gdy FastCGI jest skonfigurowane w ten sposób, serwer może obliczyć najdokładniejszą PATH_INFO.