Syntaxe de la directive Apache SetHandler lors de la configuration de PHP FPM
J'ai suivi quelques tutoriels et configuré Apache pour utiliser PHP FPM. Cependant, je ne comprends pas quelle partie de la SetHandler
ligne 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://localhost
soit présent ou non.
À divers endroits, comme dans la configuration de Plesk, j'ai vu la partie fcgi://localhost
remplacé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|fcgi
doit-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://something
dans le contexte du forçage d'une demande de proxy inverse, mais je ne comprends vraiment pas cela.
Réponses
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.