Miklix

Como configurar pools PHP-FPM separados no NGINX

Publicado: 15 de fevereiro de 2025 às 11:52:54 UTC
Última atualização: 12 de janeiro de 2026 às 08:30:04 UTC

Neste artigo, explico os passos de configuração necessários para executar múltiplos pools PHP-FPM e ligar o NGINX a eles via FastCGI, permitindo a separação e isolamento de processos entre hosts virtuais.


Esta página foi traduzida automaticamente do inglês para a tornar acessível ao maior número possível de pessoas. Infelizmente, a tradução automática ainda não é uma tecnologia aperfeiçoada, pelo que podem ocorrer erros. Se preferir, pode ver a versão original em inglês aqui:

How to Set Up Separate PHP-FPM Pools in NGINX

A informação neste artigo baseia-se no NGINX 1.4.6 e PHP-FPM 5.5.9 a correr no Ubuntu Server 14.04 x64. Pode ou não ser válida para outras versões. (Atualização: Posso confirmar que, a partir do Ubuntu Server 24.04, PHP-FPM 8.3 e NGINX 1.24.0, todas as instruções deste post continuam a funcionar)

Existem várias vantagens em configurar múltiplos pools de processos filhos PHP-FPM em vez de correr tudo no mesmo pool. Segurança, separação/isolamento e gestão de recursos vêm-me à cabeça como alguns dos principais exemplos.

Independentemente da tua motivação, este post vai ajudar-te a fazê-lo :-)

Parte 1 – Configurar um novo pool PHP-FPM

Primeiro, precisa de localizar o diretório onde o PHP-FPM armazena as suas configurações de pool. No Ubuntu 14.04, isto é /etc/php5/fpm/pool.d por defeito. Provavelmente já existe lá um ficheiro chamado www.conf, que contém a configuração do pool predefinido. Se nunca viste esse ficheiro antes, provavelmente deves analisá-lo e ajustar as definições para a tua configuração, já que os valores são para um servidor bastante pouco potente, mas por agora faz uma cópia para não termos de começar do zero:

sudo cp www.conf mypool.conf

Claro que substitui "mypool" pelo nome que queres que a tua piscina se chame.

Agora abre o novo ficheiro usando nano ou o editor de texto que preferires e ajusta-o para o teu propósito. Provavelmente vais querer ajustar os números dos processos filhos e possivelmente a que utilizador e grupo o pool corre, mas as duas definições que tens mesmo de alterar são o nome do pool e o socket que está a ouvir, caso contrário entra em conflito com o pool existente e as coisas deixam de funcionar.

O nome do pool está perto do topo do ficheiro, entre parênteses quadrados. Por defeito, é [www]. Muda isto para o que quiseres; Sugiro o mesmo que chamaste ao ficheiro de configuração, por isso, para efeitos deste exemplo, muda para [mypool]. Se não o alterares, parece que o PHP-FPM só carrega o primeiro ficheiro de configuração com esse nome, o que provavelmente vai quebrar problemas.

Depois tens de mudar o socket ou endereço que estás a ouvir, que é definido pela diretiva de listening. Por defeito, o PHP-FPM usa sockets Unix, por isso a tua diretiva de escuta provavelmente será assim:

listen = /var/run/php5-fpm.sock

Podes mudá-lo para o nome válido que quiseres, mas, mais uma vez, sugiro que mantenhas algo semelhante ao nome do ficheiro de configuração, por exemplo, para poderes definir para:

listen = /var/run/php5-fpm-mypool.sock

Pronto, então, guarda o ficheiro e sai do editor de texto.

Parte 2 – Atualização da configuração do host virtual NGINX

Agora precisas de abrir o ficheiro anfitrião virtual NGINX com a configuração FastCGI que queres mudar para um novo pool – ou melhor, ligar-te ao novo socket.

Por defeito no Ubuntu 14.04, estes são armazenados em /etc/nginx/sites-available, mas também podem ser definidos noutros locais. Provavelmente é melhor saberes onde estão localizadas as tuas configurações de alojamento virtual ;-)

Abre o ficheiro de configuração relevante no teu editor de texto favorito e procura a diretiva fastcgi_pass (que deve estar num contexto de localização) que define o socket PHP-FPM. Deve alterar este valor para que corresponda à nova configuração de pool PHP-FPM que fez no primeiro passo, por isso, continuando o nosso exemplo, mudaria isto para:

Fastcgi_pass unix:/var/run/php5-fpm-mypool.sock;

Depois guarda e fecha esse ficheiro também. Já estás quase a acabar.

Parte 3 – Reiniciar PHP-FPM e NGINX

Para aplicar as alterações de configuração que fez, reinicie tanto o PHP-FPM como o NGINX. Pode ser suficiente para recarregar em vez de reiniciar, mas acho que é um pouco imprevisível, dependendo das definições alteradas. No caso particular, queria que os antigos processos filhos do PHP-FPM morressem imediatamente, por isso era necessário reiniciar o PHP-FPM, mas para o NGINX uma recarga pode ser suficiente. Experimenta por ti mesmo.

sudo service php5-fpm restart
sudo service nginx restart

E voilà, está feito. Se fizeste tudo corretamente, o host virtual que modificaste deveria agora usar o novo pool PHP-FPM e não partilhar processos filhos com outros hosts virtuais.

Partilhar no BlueskyPartilhar no FacebookPartilhar no LinkedInPartilhar no TumblrPartilhar em XPartilhar no LinkedInFixar no Pinterest

Mikkel Christensen

Sobre o autor

Mikkel Christensen
Mikkel é o criador e proprietário do miklix.com. Tem mais de 20 anos de experiência como programador informático/desenvolvedor de software profissional e trabalha atualmente a tempo inteiro para uma grande empresa europeia de TI. Quando não está a escrever no blogue, dedica o seu tempo livre a um vasto leque de interesses, passatempos e actividades, que podem, em certa medida, refletir-se na variedade de tópicos abordados neste sítio Web.