Sintaxis de la directiva Apache SetHandler al configurar PHP FPM

Nov 29 2020

Seguí un par de tutoriales y configuré Apache para usar PHP FPM. Sin embargo, no entiendo qué parte de la SetHandlerlínea está haciendo y, según algunos de mis experimentos, parece ser redundante. Tengo la linea:

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

Esto funciona tanto si |fcgi://localhostestá presente como si no.

En varios lugares, como la configuración de Plesk, he visto la parte fcgi://localhostreemplazada porfcgi://127.0.0.1:9000

¿Cuál es el propósito del |fcgi://localhost? ¿Es redundante y se puede eliminar?

¿La tubería, que separa sock y fcgi, sock|fcgidebe interpretarse como un 'o', lo que significa que si el socket Unix no está presente, use la conexión tcp en su lugar?

En la configuración de mi grupo de FPM, intenté reemplazar la directiva listen con un host y un puerto, también con solo un puerto, pero parece que no puedo hacer que funcione. ¿Cómo configurarías PHP FPM para que esté disponible a través de TCP en lugar de un socket Unix? No tengo ninguna razón para querer hacer esto en este momento, es solo para aprender.

Finalmente. ¿Es este el sitio de "pila" correcto para hacer esta pregunta?


Edite para decir que encontré un poco de documentación de Apache. El ejemplo final en la sección de ejemplos habla sobre el uso de |fcgi://somethingen el contexto de forzar una solicitud de proxy inverso, pero realmente no entiendo esto.

Respuestas

4 Tommiie Dec 01 2020 at 15:10

La documentación indica claramente por qué debe incluirla aunque no es obligatorio:

Por motivos de rendimiento, querrá definir un trabajador que represente el mismo fcgi://backend. El beneficio de este formulario es que permite que se produzca la asignación normal de URI al nombre de archivo en el servidor, y el resultado del sistema de archivos local se pasa al backend. Cuando FastCGI se configura de esta manera, el servidor puede calcular la PATH_INFO más precisa.