
Ich habe ein paar Tutorials befolgt und Apache so konfiguriert, dass es PHP FPM verwendet. Ich verstehe jedoch nicht, was ein Teil der SetHandler
Zeile bewirkt, und basierend auf einigen meiner Experimente scheint es redundant zu sein. Ich habe die Zeile:
SetHandler "proxy:unix:/run/php/php7.3-fpm.sock|fcgi://localhost"
Dies funktioniert unabhängig davon, ob das |fcgi://localhost
vorhanden ist oder nicht.
An verschiedenen Stellen, beispielsweise in der Plesk-Konfiguration, habe ich gesehen, dass der Teil fcgi://localhost
ersetzt wurde durchfcgi://127.0.0.1:9000
Was ist der Zweck des |fcgi://localhost
? Ist es überflüssig und kann es entfernt werden?
Ist die Pipe, die Sock und FCGI trennt, sock|fcgi
als „oder“ zu interpretieren, d. h., wenn der Unix-Socket nicht vorhanden ist, soll stattdessen die TCP-Verbindung verwendet werden?
In meiner FPM-Pool-Konfiguration habe ich versucht, die Listen-Direktive durch einen Host und einen Port zu ersetzen, oder auch nur durch einen Port, aber ich kriege es einfach nicht hin. Wie würden Sie PHP FPM so konfigurieren, dass es über TCP und nicht über einen Unix-Socket verfügbar ist? Im Moment habe ich keinen Grund, das zu tun, es ist nur zum Lernen.
Und abschließend: Ist dies die richtige „Stack“-Site, um diese Frage zu stellen?
Ich habe eine gefundenkleine Dokumentationvon Apache. Im letzten Beispiel im Beispielabschnitt geht es um die Verwendung |fcgi://something
im Zusammenhang mit der Erzwingung einer Reverse-Proxy-Anforderung, aber das verstehe ich wirklich nicht.
Antwort1
In der Dokumentation wird klar dargelegt, warum Sie es einschließen sollten, auch wenn es nicht obligatorisch ist:
Aus Leistungsgründen sollten Sie einen Worker definieren, der dasselbe
fcgi://
Backend darstellt. Der Vorteil dieser Form besteht darin, dass die normale Zuordnung von URI zu Dateinamen auf dem Server erfolgt und das Ergebnis des lokalen Dateisystems an das Backend übergeben wird. Wenn FastCGI auf diese Weise konfiguriert ist, kann der Server die genauesten PATH_INFO berechnen.