Errore "Accesso negato". Nginx / PHP-FPM


14

Sto cercando di configurare un server Ubuntu (12.04) appena installato, ma non riesco a ottenere i file PHP in esecuzione attraverso php-fpm. Non importa quello che faccio, ricevo sempre un "Accesso negato". pagina (testo semplice, non html o altro).

Pacchetti installati:

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

Dettagli di configurazione:

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 predefinito / test:

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();

Tutto il resto è predefinito. Entrambi i registri Nginx e php-fpm non mostrano errori. Tuttavia, quando carico, visualizzo http://<server-ip>/index.phpla pagina "Accesso negato".

Risoluzione dei problemi:

  • Il file index.html funziona bene. Pertanto deve essere php-fpm o l'associazione fastcgi tra Nginx e php-fpm.
  • Ho impostato la proprietà (sia dell'utente che del gruppo) dell'intera /extradirectory www-datae la proprietà su 777, per essere sicuro (lo abbasserò di tono una volta che funziona ovviamente). Quindi non è certamente un problema di autorizzazioni
  • Non vedo molto il problema security.limit_extensions : per impostazione predefinita è impostato su .php, che è esattamente quello che sto richiedendo. L'ho impostato esplicitamente su .php .html, con lo stesso risultato.

Mi sto davvero stancando di questo, ho già installato questa configurazione due volte (anche se su macchine OSX) e tutto ha funzionato alla perfezione. C'è qualcosa che sto trascurando?

Il contenuto del registro:

Il registro degli errori di Nginx è vuoto.

Registro di accesso Nginx (IP rimosso):

<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 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

Risposte:


33

Finalmente risolto.

Il colpevole era questa linea nella mia configurazione:

fastcgi_param   PATH_TRANSLATED     $document_root$fastcgi_path_info;

Se ho commentato questa riga, tutto ha funzionato bene. Comunque l'ho visto in quasi tutti i post che ho letto sulle configurazioni di Nginx, quindi mi ha infastidito. Guardando le mie configurazioni per la milionesima volta, ho visto che cgi.fix_pathinfo(in php.ini) era impostato su 0, dove avrebbe dovuto essere 1. Il valore predefinito che PHP utilizza è anche 1, quindi devo averlo cambiato nelle mie ore di debug, perché ricordati di leggere questo valore e ho pensato che fosse impostato correttamente.

Ad ogni modo, forse aiuta qualcuno a cercare su Google questo problema.


5
Grazie per aver condiviso la soluzione. Si consiglia di non fidarsi dei tutorial poiché tali tutorial potrebbero contenere configurazioni non sicure. Tali configurazioni potrebbero comunque funzionare correttamente.
Pothi Kalimuthu,

Grazie per il link, mi sono imbattuto un paio di volte e ho applicato queste istruzioni. L'errore è stato probabilmente mio nella mia rabbia di debug (dopo x ore inizi a perdere traccia di alcune delle cose che hai modificato).
Peter Kruithof,

Il mio era un chownproblema.
Jürgen Paul,

Grazie mille. Ho lavorato su questo problema per ore e cgi.fix_pathinfoimpostato su 0 (configurazione predefinita) era il problema.
Mauvis Ledford,

2
cgi.fix_pathinfo = 0è raccomandato da molti tutorial perché aiuta a mitigare le vulnerabilità, in particolare le vulnerabilità che eseguono il codice php attraverso file arbitrari. Quindi, se lo imposti su 1, assicurati di sapere cosa stai facendo o specifica altre mitigazioni per compensarlo. Ho trovato questo post per avere una buona spiegazione sul problema: nealpoole.com/blog/2011/04/…
MikeD
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.