Error de Nginx / PHP-FPM "Acceso denegado".

14

Estoy tratando de configurar un servidor Ubuntu (12.04) recién instalado, pero no puedo ejecutar archivos PHP a través de php-fpm. No importa lo que haga, siempre obtengo un "Acceso denegado". página (texto sin formato, no html ni nada).

Paquetes instalados:

nginx
nginx-common
nginx-full
php5
php5-cli
php5-common
php5-fpm

Detalles de configuración:

PHP-FPM:

user = www-data
group = www-data
listen = /var/run/php5-fpm.sock

Nginx:

user www-data;
worker_processes 3;
events { worker_connections 1024; }

Dominio predeterminado / de prueba:

server {
    listen       80;
    server_name  localhost;
    root         /extra/htdocs/default;
    index        index.html index.php

    access_log   /extra/logs/default/access.log;
    error_log    /extra/logs/default/error.log;

    location / {
        try_files  $uri $uri/ /index.html;
    }

    location ~ \.php
    {
        fastcgi_split_path_info  ^(.+\.php)(/.+)$;

        include fastcgi_params;

        fastcgi_index   index.php;
        fastcgi_pass    unix:/var/run/php5-fpm.sock;
        fastcgi_param   PATH_INFO         $fastcgi_path_info;
        fastcgi_param   PATH_TRANSLATED   $document_root$fastcgi_path_info;
        fastcgi_param   SCRIPT_FILENAME   $document_root$fastcgi_script_name;
    }
}

/extra/htdocs/default/index.php:

<?php
phpinfo();

Todo lo demás es predeterminado. Los registros de Nginx y php-fpm no muestran errores. Sin embargo, cuando cargo http://<server-ip>/index.php, aparece la página "Acceso denegado".

Solución de problemas:

  • El archivo index.html funciona bien. Por lo tanto, debe ser php-fpm o el enlace fastcgi entre Nginx y php-fpm.
  • He establecido la propiedad (tanto del usuario como del grupo) de todo el /extradirectorio www-datay la propiedad en 777, solo para asegurarme (lo atenuaré una vez que funcione, por supuesto). Así que ciertamente no es un problema de permisos
  • No es el problema security.limit_extensions lo que veo mucho: por defecto, eso está configurado en .php, que es exactamente lo que estoy solicitando. Lo configuré explícitamente .php .htmlcon el mismo resultado.

Realmente me estoy cansando de esto, ya instalé esta configuración dos veces (aunque en máquinas OSX), y todo funcionó a la perfección. ¿Hay algo que estoy pasando por alto?

El contenido del registro:

El registro de errores de Nginx está vacío.

Registro de acceso de Nginx (ip eliminada):

<ip> - - [17/Jul/2012:11:21:25 +0200] "GET /favicon.ico HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11"
<ip> - - [17/Jul/2012:11:21:28 +0200] "GET /index.php HTTP/1.1" 403 46 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11"
<ip> - - [17/Jul/2012:11:21:34 +0200] "-" 400 0 "-" "-"

registro de php-fpm:

[17-Jul-2012 10:44:14] NOTICE: fpm is running, pid 4969
[17-Jul-2012 10:44:14] NOTICE: ready to handle connections
Peter Kruithof
fuente

Respuestas:

33

Finalmente lo arreglé.

El culpable fue esta línea en mi configuración:

fastcgi_param   PATH_TRANSLATED     $document_root$fastcgi_path_info;

Si comenté esta línea, todo funcionó bien. Sin embargo, vi esto en casi todas las publicaciones que leí sobre las configuraciones de Nginx, por lo que me molestó. Cuando miré mis configuraciones por enésima vez, vi que cgi.fix_pathinfo(in php.ini) estaba establecido en 0, donde debería haber sido 1. El valor predeterminado que PHP usa también es 1, por lo que debo haber cambiado esto en mis horas de depuración, porque Recuerdo haber leído sobre este valor, y pensé que estaba configurado correctamente.

De todos modos, tal vez ayude a cualquiera a buscar en Google este problema.

Peter Kruithof
fuente
55
Gracias por compartir la solucion. Se recomienda no confiar en los tutoriales ya que estos pueden contener configuraciones no seguras. Sin embargo, esas configuraciones aún pueden funcionar correctamente.
Pothi Kalimuthu
Gracias por el enlace, me encontré con eso un par de veces y he aplicado esas instrucciones. El error fue probablemente el mío en mi ira de depuración (después de x horas comienzas a perder la noción de algunas de las cosas que has modificado).
Peter Kruithof
El mío era un chownproblema.
Jürgen Paul
Muchas gracias. He estado trabajando en este problema durante horas y cgi.fix_pathinfoestablecido en 0 (configuración predeterminada) fue el problema.
Mauvis Ledford
2
cgi.fix_pathinfo = 0muchos tutoriales lo recomiendan porque ayuda a mitigar las vulnerabilidades, específicamente las vulnerabilidades que ejecutan código php a través de archivos arbitrarios. Entonces, si configura esto en 1, asegúrese de saber lo que está haciendo o especifique otras mitigaciones para compensarlo. Encontré que esta publicación tiene una buena explicación sobre el tema: nealpoole.com/blog/2011/04/…
MikeD