Sintaxe da diretiva Apache SetHandler ao configurar PHP FPM

Nov 29 2020

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 quer o |fcgi://localhostesteja presente 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 tubo, que separa o sock e o fcgi, sock|fcgideve ser interpretado como um 'ou', ou seja, se o soquete unix não estiver presente, use a conexão tcp?

Em minha configuração de pool FPM, tentei substituir a diretiva listen por um host e uma porta, também por apenas uma porta, mas não consigo fazer 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 essa pergunta?


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

Respostas

4 Tommiie Dec 01 2020 at 15:10

A documentação afirma claramente por que você deve incluí-la, embora não seja obrigatório:

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