Miklix

Como configurar pools PHP-FPM separados no NGINX

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

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


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

How to Set Up Separate PHP-FPM Pools in NGINX

As informações neste post são baseadas no NGINX 1.4.6 e PHP-FPM 5.5.9 rodando no Ubuntu Server 14.04 x64. Elas podem ou não ser válidas 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 neste post ainda funcionam.)

Existem diversas vantagens em configurar vários pools de processos filhos do PHP-FPM em vez de executar tudo no mesmo pool. Segurança, separação/isolamento e gerenciamento de recursos são algumas das principais que vêm à mente.

Independentemente da sua motivação, este post vai te ajudar a alcançá-la :-)

Parte 1 – Configurar um novo pool PHP-FPM

Primeiro, você precisa localizar o diretório onde o PHP-FPM armazena suas configurações de pool. No Ubuntu 14.04, este diretório é /etc/php5/fpm/pool.d por padrão. Provavelmente já existe um arquivo chamado www.conf lá, que contém a configuração do pool padrão. Se você nunca examinou esse arquivo antes, é recomendável analisá-lo e ajustar as configurações de acordo com o seu sistema, pois os valores padrão são para um servidor com recursos limitados. Por enquanto, basta fazer uma cópia dele para não precisarmos começar do zero.

sudo cp www.conf mypool.conf

Claro, substitua “minhapiscina” pelo nome que você quiser dar à sua piscina.

Agora abra o novo arquivo usando o nano ou qualquer editor de texto de sua preferência e ajuste-o conforme necessário. Provavelmente você vai querer ajustar o número de processos filhos e possivelmente o usuário e grupo sob os quais o pool é executado, mas as duas configurações que você precisa absolutamente alterar são o nome do pool e o socket que ele está usando, caso contrário, haverá conflito com o pool existente e tudo deixará de funcionar.

Nome do pool está próximo ao início do arquivo, entre colchetes. Por padrão, é [www]. Altere para o nome que desejar; sugiro que use o mesmo nome do arquivo de configuração, então, para este exemplo, altere para [mypool]. Se não alterar, parece que o PHP-FPM carregará apenas o primeiro arquivo de configuração com esse nome, o que provavelmente causará problemas.

Em seguida, você precisa alterar o socket ou endereço que está escutando, o qual é definido pela diretiva `listen`. Por padrão, o PHP-FPM usa sockets Unix, então sua diretiva `listen` provavelmente será semelhante a esta:

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

Você pode alterá-lo para qualquer nome válido que desejar, mas, novamente, sugiro que use algo semelhante ao nome do arquivo de configuração. Por exemplo, você poderia defini-lo como:

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

Muito bem, salve o arquivo e feche o editor de texto.

Parte 2 – Atualizar a configuração do host virtual NGINX

Agora você precisa abrir o arquivo de host virtual do NGINX com a configuração FastCGI que deseja alterar para um novo pool – ou melhor, conectar-se ao novo socket.

Por padrão, no Ubuntu 14.04, essas configurações são armazenadas em /etc/nginx/sites-available, mas também podem ser definidas em outro local. Provavelmente você sabe melhor onde estão localizadas as configurações do seu host virtual ;-)

Abra o arquivo de configuração relevante no seu editor de texto preferido e procure pela diretiva `fastcgi_pass` (que deve estar em um contexto de localização) que define o socket do PHP-FPM. Você deve alterar esse valor para que corresponda à nova configuração do pool do PHP-FPM que você criou na primeira etapa. Portanto, continuando com o nosso exemplo, você alteraria para:

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

Em seguida, salve e feche esse arquivo também. Você está quase terminando.

Parte 3 – Reiniciar PHP-FPM e NGINX

Para aplicar as alterações de configuração que você fez, reinicie o PHP-FPM e o NGINX. Pode ser suficiente recarregar em vez de reiniciar, mas geralmente funciona de forma inconsistente, dependendo das configurações alteradas. No meu caso específico, eu queria que os processos filhos antigos do PHP-FPM fossem encerrados imediatamente, então foi necessário reiniciar o PHP-FPM, mas para o NGINX, uma recarga pode ser suficiente. Experimente você mesmo.

sudo service php5-fpm restart
sudo service nginx restart

E pronto, você terminou. Se você fez tudo corretamente, o host virtual que você modificou agora deve estar usando o novo pool PHP-FPM e não compartilhar processos filhos com nenhum outro host virtual.

Compartilhe no BlueskyCompartilhe no FacebookCompartilhe no LinkedInCompartilhe no TumblrCompartilhar em XCompartilhe no LinkedInFixar no Pinterest

Mikkel Christensen

Sobre o autor

Mikkel Christensen
Mikkel é o criador e proprietário do miklix.com. Ele tem mais de 20 anos de experiência como programador de computador/desenvolvedor de software profissional e atualmente trabalha em tempo integral para uma grande empresa europeia de TI. Quando não está blogando, ele dedica seu tempo livre a uma grande variedade de interesses, hobbies e atividades, o que pode, até certo ponto, refletir-se na variedade de tópicos abordados neste site.