Składnia dyrektywy Apache SetHandler podczas konfigurowania PHP FPM

Nov 29 2020

Skorzystałem z kilku samouczków i skonfigurowałem Apache do używania PHP FPM. Jednak nie rozumiem, co robi część SetHandlerlinii, 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://localhostjest obecny, czy nie.

W różnych miejscach, takich jak konfiguracja Pleska, widziałem część fcgi://localhostwymienioną 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|fcgimają 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://somethingw kontekście wymuszania żądania zwrotnego proxy, ale naprawdę tego nie rozumiem.

Odpowiedzi

4 Tommiie Dec 01 2020 at 15:10

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.