Como conectar o nginx ao php-fpm usando o soquete UNIX ou TCP/IP
- 1072
- 318
- Mr. Mitchell Hansen
Nginx O servidor da web (como proxy reverso) serve aplicativos PHP através do Fastcgi Protocolo (como um servidor de aplicativos de back -end). Nginx emprega PHP-FPM (Fastcgi Process Manager), uma alternativa Php fastcgi implementação que é executada em segundo plano como daemon, ouvindo CGI solicitações de. Ele vem com recursos extras projetados para alimentar sites com carga pesada ou aplicativos da web, mas podem ser usados para sites de qualquer tamanho.
Não apenas faz PHP-FPM apoiar a configuração de Fastcgi pools de recursos, mas também melhora muitos dos Fastcgi internos e aumenta o relatório de erros, terminação de scripts e muito mais. Possui demonização PHP, gerenciamento de processos, um número dinâmico de processos dos quais solicitações podem vir, cabeçalho de erro, suporte de upload acelerado e mais.
Aceitar Fastcgi solicitações de Nginx, PHP-FPM pode ouvir em um TCP/IP soquete ou soquete de domínio Unix. Qualquer endereço que você escolher usar é o que Nginx usos para conectar (solicitações de proxy) a PHP-FPM, usando o fastcgi_pass
diretivo.
Este guia explica como configurar Nginx para os aplicativos de PHP do servidor usando PHP-FPM. Descreve quando usar um TCP/IP soquete ou soquete de domínio unix para conectar Nginx para PHP-FPM e porque.
Este guia assume que você tem Nginx e PHP-FPM Instalado no seu sistema Linux, caso contrário, consulte:
- Como instalar o servidor Lemp no CentOS 8
- Como instalar o Lemp Stack Phpmyadmin no Ubuntu 20.04 servidor
- Como instalar o nginx, mysql/mariadb e php no rhel 8
- Como instalar o Lemp no Debian 10 Server
O que devo usar: soquete de domínio unix ou soquete TCP/IP?
Unix domínio (ou IPC) Sockets são um meio de comunicação entre processos (IPC) que permitem a troca de dados eficientes entre os processos em execução no mesmo sistema operacional enquanto TCP/IP (ou Domínio da Internet) Sockets permitem que os processos se comuniquem em uma rede.
Ao contrário de um TCP/IP soquete que identifica um servidor por um endereço IP e porta (e.g 127.0.0.1: 9000), você pode vincular um servidor a um soquete de domínio UNIX usando um nome de caminho (e.g /run/php-fpm/www.meia), que é visível no sistema de arquivos.
Um soquete de domínio UNIX é um tipo especial de arquivo - permissões de arquivo e diretório se aplica a ele (como é o caso de qualquer outro tipo de arquivo Unix) e pode ser usado para restringir quais processos no host podem ler e gravar no arquivo, (e, assim, comunique -se com o servidor de back -end).
Dessa forma, um soquete de domínio UNIX é seguro porque apenas processos no host local podem usá -lo. A TCP/IP O soquete pode ser exposto à Internet que representa um risco de segurança, a menos que medidas extras de segurança, como um firewall, sejam implementadas.
Importante, usando um Unix O soquete de domínio não é o mesmo que usar um TCP/IP Socket sobre o desempenho, vários testes e benchmarks têm soquetes de domínio Unix comprovados para serem mais rápidos. A principal desvantagem dos soquetes do Domínio UNIX é que eles são menos escaláveis, eles só suportam a comunicação entre processos dentro do mesmo sistema operacional (OS).
Onde posso configurar php-fpm ouvir endereço?
Você pode configurar o endereço PHP-FPM ouve em um arquivo de configuração do pool de recursos. Observe isso com PHP-FPM, Você pode executar vários pools de processos com diferentes configurações. O pool padrão é chamado www
.
A localização do arquivo de configuração do pool de recursos depende da maneira Php e PHP-FPM estão instalados em um sistema Linux (seja uma versão padrão/única ou várias versões simultaneamente).
Por exemplo, em CENTOS 8, Com uma única versão, todos os arquivos de configuração do PHP estão localizados no /etc
diretório e o padrão PHP-FPM piscina (www)
O arquivo de configuração é /etc/php-fpm.d/www.conf:
Para listar todos os arquivos de configuração do PHP, use o seguinte comando ls.
# ls /etc /php*Liste todos os arquivos de configuração do PHP
Sobre Ubuntu 20.04, Os arquivos de configuração do PHP estão localizados no /etc/php //
diretório e o padrão PHP-FPM piscina (www)
O arquivo de configuração é /etc/php // fpm/pool.d/www.conf
:
$ ls/etc/php/7.4/Liste todos os arquivos de configuração do PHP no Ubuntu
Configurando o PHP-FPM para ouvir em um soquete de domínio UNIX
Para configurar PHP-FPM Para ouvir em um soquete de domínio UNIX, abra seu padrão PHP-FPM Arquivo de configuração do pool, usando seu editor de texto favorito.
$ sudo vim/etc/php/7.4/fpm/piscina.d/www.conf # ubuntu/debian ou # vim/etc/php-fpm.d/www.conf #centos/rhel/fedora
Em seguida, procure a diretiva de escuta e defina -a para o nome do caminho do arquivo do soquete do Domínio UNIX da seguinte maneira. Observe que a maioria das instalações usa um soquete de domínio UNIX por padrão.
Ouça =/RUN/PHP/PHP7.4-fpm.meia #ubuntu/debian ou ouvir =/run/php-fpm/www.meia #centos/rhel/fedora
Se você usar um soquete de domínio UNIX, também precisar. Por padrão, o nginx é executado como usuário e grupo nginx sobre CENTOS/RHEL/FEDORA e www-data sobre Ubuntu e Debian.
Então, encontre o ouvir.proprietário
e ouvir.grupo
parâmetros e defina -os de acordo. Além disso, defina o modo como 0660 usando o ouvir.modo
parâmetro.
------------- Em Debian e Ubuntu ------------- ouvir.proprietário = www-data ouça.Grupo = www-data ouça.modo = 0660 ------------- No CentOS/Rhel e Fedora ------------- ouvir.proprietário = nginx ouça.grupo = nginx ouça.modo = 0660
Observe que se as permissões no arquivo de soquete do Domínio UNIX não estiverem definidas corretamente, o Nginx poderá retornar um erro de gateway ruim.
Configuração do PHP-FPMConfigurando o PHP-FPM para ouvir em um soquete TCP/IP
Embora um soquete de domínio UNIX seja mais rápido que um soquete TCP/IP, o primeiro é menos escalável, porque só pode suportar a comunicação entre processos no mesmo sistema. Se Nginx e o servidor de aplicativos de back -end (PHP-FPM) estão funcionando em sistemas diferentes, você terá que configurar PHP-FPM Para ouvir em um soquete TCP/IP para conexões.
No PHP-FPM arquivo de configuração do pool, defina o ouvir
endereço da seguinte maneira. Verifique se a porta que você escolheu não está sendo usada por outro processo ou serviço no mesmo sistema.
Ouça = 127.0.0.1: 3000Configuração do PHP-FPM para soquete TCP
Configurando o nginx para trabalhar com o servidor de aplicativos PHP-FPM
Depois de configurar o endereço PHP-FPM ouve, você precisa configurar Nginx para solicitar proxy a ele através desse endereço, usando o fastcgi_pass
Parâmetro de configuração, em um arquivo de configuração de bloco de servidor virtual.
Por exemplo, se o arquivo de configuração do seu site for /etc/nginx/conf.d/exemplo.com.conf, Abra para editar.
# vim/etc/nginx/conf.d/exemplo.com.conf
Procure o localização
bloco para processamento .php
arquivos e defina o fastcgi_pass
Parâmetro da seguinte maneira, se você configurou o PHP-FPM para ouvir em um soquete de domínio UNIX.
fastcgi_pass Unix:/run/php/php7.4-fpm.SOCK #Ubuntu/Debian ou fastcgi_pass Unix:/run/php-fpm/www.meia #centos/rhel/fedoraConecte o nginx ao php-fpm usando o soquete Unix
Ou use um TCP/IP endereço se você configurou PHP-FPM Para ouvir em um TCP/IP soquete. Se o servidor de aplicativos de back -end (PHP-FPM) está em execução em um servidor separado (substitua 10.42.0.10 com o endereço IP da máquina na qual o servidor fastcgi php-fpm está em execução).
fastcgi_pass 10.42.0.10: 3000;Conecte o nginx ao php-fpm usando o soquete TCP
Importante: Sobre CENTOS 8, PHP-FPM é definido como um servidor upstream no /etc/nginx/conf.D/PHP-FPM.conf arquivo, dentro de um bloco a montante, com o nome PHP-FPM.
Você pode fazer alterações aqui de acordo com o endereço PHP-FPM está configurado para ouvir, no arquivo de configuração do pool. A configuração padrão aponta para um soquete de domínio UNIX.
upstream php-fpm server unix:/run/php-fpm/www.meia;Configure o servidor PHP upstream no nginx
E no arquivo de bloco de servidor do seu site, basta definir o fastcgi_pass
parâmetro como mostrado.
fastcgi_pass php-fpm;Configure o nginx para o servidor upstream php-fpm
Depois de fazer alterações no PHP-FPM e Nginx Configurações, verifique sua sintaxe de configuração para correção da seguinte maneira.
------------- Em Debian e Ubuntu ------------- $ sudo php -fpm -t $ sudo nginx -t ------------- No CentOS/Rhel e Fedora ------------- # php -fpm -t # nginx -t
Enquanto a saída do comando mostra apenas o arquivo de configuração principal, todos os outros arquivos de configuração estão incluídos e verificados também.
Verifique a configuração nginx e php-fpmEm seguida, você precisa reiniciar os dois serviços para aplicar as alterações, usando o comando SystemCTL.
------------- Em Debian e Ubuntu ------------- $ sudo systemctl reiniciar nginx $ sudo systemctl reiniciar php7.4-fpm ------------- No CentOS/Rhel e Fedora ------------- # SystemCtl Reiniciar nginx # SystemCtl Restart php-fpm
Se você receber algum erro, pode verificar o Nginx e PHP-FPM Arquivos de log usando o comando CAT.
------------- Em Debian e Ubuntu ------------- $ cat/var/log/nginx/erro.log $ cat/var/log/php7.4-fpm.registro ------------- No CentOS/Rhel e Fedora ------------- $ cat/var/log/nginx/erro.Log $ cat/var/log/php-fpm/www-error.registro
Isso é tudo o que tivemos para você. A seção de comentários abaixo pode ser usada para fazer perguntas. Para obter mais informações, consulte a documentação do NGINX e a documentação do PHP-FPM.
- « LFCA - Dicas úteis para proteger dados e Linux - Parte 18
- Principais editores hexadecimais para Linux »