Sintaxe da diretiva Apache SetHandler ao configurar PHP FPM

Sintaxe da diretiva Apache SetHandler ao configurar PHP FPM

Segui alguns tutoriais e configurei o Apache para usar PHP FPM. No entanto, não entendo o que parte da SetHandlerlinha está fazendo e, com base em alguns de meus experimentos, parece redundante. Eu tenho a linha:

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

Isso funciona esteja |fcgi://localhostpresente ou não.

Em vários lugares, como na configuração do Plesk, vi a parte fcgi://localhostsubstituída porfcgi://127.0.0.1:9000

Qual é o propósito do |fcgi://localhost? É redundante e pode ser removido?

O pipe que separa sock e fcgi deve sock|fcgiser interpretado como um 'ou', ou seja, se o soquete unix não estiver presente, use a conexão tcp?

Na configuração do meu pool FPM, tentei substituir a diretiva listen por um host e uma porta, também por apenas uma porta, mas não consigo fazê-la funcionar. Como você configuraria o PHP FPM para estar disponível via TCP em vez de um soquete unix? Não tenho motivos para querer fazer isso no momento, é apenas para aprender.

Finalmente. Este é o site de 'pilha' correto para fazer esta pergunta?


Edite para dizer que encontrei umum pequeno pedaço de documentaçãodo Apache. O exemplo final na seção de exemplos fala sobre o uso de |fcgi://somethingno contexto de forçar uma solicitação de proxy reverso, mas eu realmente não entendo isso.

Responder1

A documentação indica claramente por que você deve incluí-lo, mesmo que não seja obrigatório:

Por motivos de desempenho, você desejará definir um trabalhador que represente o mesmo fcgi://back-end. O benefício deste formulário é que ele permite que o mapeamento normal do URI para o nome do arquivo ocorra no servidor e o resultado do sistema de arquivos local seja passado para o backend. Quando FastCGI é configurado desta forma, o servidor pode calcular o PATH_INFO mais preciso.

informação relacionada