Syntaxe de la directive Apache SetHandler lors de la configuration de PHP FPM

Nov 29 2020

J'ai suivi quelques tutoriels et configuré Apache pour utiliser PHP FPM. Cependant, je ne comprends pas quelle partie de la SetHandlerligne fait et sur la base de certaines de mes expériences, il semble être redondant. J'ai la ligne:

SetHandler "proxy:unix:/run/php/php7.3-fpm.sock|fcgi://localhost"

Cela fonctionne que le |fcgi://localhostsoit présent ou non.

À divers endroits, comme dans la configuration de Plesk, j'ai vu la partie fcgi://localhostremplacée parfcgi://127.0.0.1:9000

Quel est le but du |fcgi://localhost? Est-il redondant et peut-il être supprimé?

Le tube séparant sock et fcgi sock|fcgidoit-il être interprété comme un 'ou', ce qui signifie que si le socket Unix n'est pas présent, utilisez plutôt la connexion tcp?

Dans ma configuration de pool FPM, j'ai essayé de remplacer la directive listen par un hôte et un port, également par un simple port, mais je n'arrive pas à le faire fonctionner. Comment configureriez-vous PHP FPM pour qu'il soit disponible via TCP plutôt que via un socket Unix? Je n'ai aucune raison de vouloir faire ça pour le moment, c'est juste pour apprendre.

Finalement. Est-ce le bon site «stack» pour poser cette question?


Modifier pour dire que j'ai trouvé un petit peu de documentation d'Apache. Le dernier exemple de la section exemple parle de l'utilisation de |fcgi://somethingdans le contexte du forçage d'une demande de proxy inverse, mais je ne comprends vraiment pas cela.

Réponses

4 Tommiie Dec 01 2020 at 15:10

La documentation indique clairement pourquoi vous devez l'inclure même si ce n'est pas obligatoire:

Pour des raisons de performances, vous souhaiterez définir un worker représentant le même fcgi://backend. L'avantage de ce formulaire est qu'il permet le mappage normal de l'URI au nom de fichier sur le serveur et le résultat du système de fichiers local est transmis au backend. Lorsque FastCGI est configuré de cette manière, le serveur peut calculer le PATH_INFO le plus précis.