php5-fpm ping e páginas de status com erro? LimitInternalRecursion error?

0

Eu tenho o php5-fpm rodando muito bem. Todo o meu site está funcionando como esperado, quase sem problemas. No entanto, não consigo usar as páginas de ping e status. Quando eu navego para mydomain.com/status ou mydomain.com/ping, recebo um erro (403, 404, 500, depende da configuração).

Sou muito novo na pilha LAMP. Eu fui jogado para os lobos sobre isso, mas eu tenho que descobrir isso.

Eu vou incluir qualquer coisa que eu achar pertinente abaixo, mas se eu perder alguma coisa, agradeço antecipadamente por sua paciência!

Executando o Ubuntu 14.04
Apache 2.4
PHP 5.5

Mods ativados no Apache (os mais importantes, pelo menos):

  • mpm_event
  • fastcgi
  • ações
  • alias

Vou deixar de fora a maior parte da configuração do fpm porque ele está funcionando, mas aqui estão as configurações de ping e status ... Configuração bonita de baunilha.

pm.status_path = /status
ping.path = /ping

Escutando em um soquete para reduzir a sobrecarga de TCP / IP ...

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

Eu tenho o php5-fpm.conf configurado em / etc / apache2 / conf-available / e um symlink em conf-enabled, cujo conteúdo é:

<IfModule mod_fastcgi.c>

    AddHandler php5-fcgi .php
    Action php5-fcgi /php5-fcgi
    Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi
    FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -socket /var/run/php5-fpm.sock -pass-header Authorization

    <LocationMatch "/(ping|status)">
        SetHandler php5-fcgi-virt
        Action php5-fcgi-virt /php5-fpm-handler.fcgi virtual
    </LocationMatch>

</IfModule>

A maior parte da documentação que encontrei faz referência ao LocationMatch como o único hotfix necessário para o funcionamento das páginas de ping e status. Não tenho certeza para onde ir a partir daqui. Eu tentei tudo o que posso encontrar na web sem sucesso. Eu fiz várias alterações no arquivo php5-fpm.conf e cada alteração não tem efeito ou me leva a um erro diferente. Eu encontrei erro de servidor interno, problemas de permissões, etc. Com essa configuração, estou recebendo atualmente um erro interno de 500 servidores.

Toda ajuda está além de ser apreciada! Obrigada!

EDIT 09Fev2015:

Depois de ler este guia útil aqui I substituímos o LocationMatch no php5-fpm.conf por:

<FilesMatch "^ping|status$">
    SetHandler php-script
</FilesMatch>

Isso não resolveu o problema, mas alterou o efeito. Agora estou recebendo um erro 404. Ainda não tenho certeza do que sinto falta aqui ...

EDIT 10Fev2015:

Voltei para a noção mais popular de que o "LocationMatch" está correto e o "FilesMatch" não me aproximará do sucesso. Novamente, muito novo para hospedagem e servidores LAMP em geral, mas descobri que quando recebo um erro 404 (usando o "FilesMatch) nada é registrado em /var/log/apace2/error.log, mas ao usar o" LocationMatch " Ainda recebo um Erro 500 e recebo uma entrada de log:

[Tue Feb 10 00:29:17.216917 2015] [core:error] [pid 8978:tid 140200547378944] [client IP:Port] AH00124: Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.

Eu fiz uma pequena pesquisa na Web, mas não consegui encontrar uma boa documentação descrevendo uma correção para esse problema. Alguma idéia?

    
por Erick Christian 06.02.2015 / 21:18

1 resposta

2

Eu tive o mesmo problema. Com muito Google e tentando, descobri.

Você precisa combinar o que você configurou em seu host virtual com o que está configurado no fastcgi.conf (do php-fpm.conf).

Além disso, é melhor usar '/ fpm-status' e '/ fpm-ping' na configuração /etc/php5/fpm/pool.d/www.conf. Então você não deve ter conflitos com a página 'status' do Apache.

Então este é meu fastcgi.conf:

<IfModule mod_fastcgi.c>
    AddType application/x-httpd-fastphp5 .php
    Action application/x-httpd-fastphp5 /php5-fcgi
    Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi
    FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -socket /var/run/php5-fpm.sock -pass-header Authorization
    <Directory /usr/lib/cgi-bin>
            Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
            Require all granted
            Order allow,deny
            Allow from all
    </Directory>
</IfModule>

E foi isso que eu adicionei no meu Apache 000-default.conf:

<LocationMatch "/(fpm-ping|fpm-status)">
     SetHandler php5-fcgi-virt
     Action php5-fcgi-virt /php5-fcgi virtual
</LocationMatch>

Se você não limitar o acesso ao vache padrão do Apache, adicione-o no LocationMatch para o status fpt-ping e fpm:

     Order deny,allow
     Deny from all
     Allow from <your-IP>

Para permitir o uso do php-fpm por host virtual, mantenha o libphp.so 'padrão' e adicione as próximas linhas ao seu host virtual para redirecionar todos os arquivos php para o php-fpm:

    <FilesMatch ".+\.ph(p[345]?|t|tml)$">
            SetHandler application/x-httpd-fastphp5
    </FilesMatch>

Feliz php-fpm'ing !!!

    
por Harold Snel 12.02.2015 / 21:02