Nginx e PHP · 3 min read · Feb 14, 2026
Installazione di Nginx Con PHP5 (E PHP-FPM) E Supporto MySQL Su CentOS 6.3 - Pagina 2
6 Configurazione di nginx
La configurazione di nginx si trova in /etc/nginx/nginx.conf che apriamo ora:
vi /etc/nginx/nginx.confLa configurazione è facile da capire (puoi saperne di più qui: http://wiki.codemongers.com/NginxFullExample e qui: http://wiki.codemongers.com/NginxFullExample2)
Per prima cosa (questo è facoltativo) puoi aumentare il numero di processi worker e impostare il keepalive_timeout a un valore ragionevole:
| [...] worker_processes 4; [...] keepalive_timeout 2; [...] |
I virtual host sono definiti nei contenitori server {} nella directory /etc/nginx/conf.d. Modifichiamo il vhost predefinito (in /etc/nginx/conf.d/default.conf) come segue:
vi /etc/nginx/conf.d/default.conf| [...] server { listen 80; server_name _; #charset koi8-r; #access_log logs/host.access.log main; location / { root /usr/share/nginx/html; index index.php index.html index.htm; } error_page 404 /404.html; location = /404.html { root /usr/share/nginx/html; } # reindirizza le pagine di errore del server alla pagina statica /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # proxy dei script PHP ad Apache in ascolto su 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # passa gli script PHP al server FastCGI in ascolto su 127.0.0.1:9000 # location ~ \.php$ { root /usr/share/nginx/html; try_files $uri =404; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } # nega l'accesso ai file .htaccess, se la root del documento di Apache # coincide con quella di nginx # location ~ /\.ht { deny all; } } |
servername ; rende questo un vhost catchall predefinito (ovviamente, puoi anche specificare un nome host qui come www.example.com).
Nella parte location / ho aggiunto index.php alla riga index. root /usr/share/nginx/html; significa che la root del documento è la directory /usr/share/nginx/html.
La parte importante per PHP è la stanza location ~ .php$ {}. Decommentala per abilitarla. Cambia la riga root con la root del documento del sito web (ad es. root /usr/share/nginx/html;). Si prega di notare che ho aggiunto la riga try_files $uri =404; per prevenire exploit zero-day (vedi http://wiki.nginx.org/Pitfalls#Passing_Uncontrolled_Requests_to_PHP e http://forum.nginx.org/read.php?2,88845,page=3). Assicurati di cambiare la riga fastcgi_param in fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; perché altrimenti l’interprete PHP non troverà lo script PHP che chiami nel tuo browser ( $document_root si traduce in /usr/share/nginx/html perché è quello che abbiamo impostato come nostra root del documento).
PHP-FPM ascolta sulla porta 9000 su 127.0.0.1 per impostazione predefinita, quindi diciamo a nginx di connettersi a 127.0.0.1:9000 con la riga fastcgi_pass 127.0.0.1:9000;. È anche possibile far utilizzare a PHP-FPM un socket Unix - descriverò questo nel capitolo 7.
Ora salva il file e ricarica nginx:
/etc/init.d/nginx reloadOra crea il seguente file PHP nella root del documento /usr/share/nginx/html…
vi /usr/share/nginx/html/info.php| |
Ora chiamiamo quel file in un browser (ad es. http://192.168.0.100/info.php):

Come puoi vedere, PHP5 sta funzionando, e sta funzionando tramite FPM/FastCGI, come mostrato nella riga Server API. Se scorri più in basso, vedrai tutti i moduli che sono già abilitati in PHP5, incluso il modulo MySQL:

7 Far Usare A PHP-FPM Un Socket Unix
Per impostazione predefinita PHP-FPM ascolta sulla porta 9000 su 127.0.0.1. È anche possibile far utilizzare a PHP-FPM un socket Unix che evita l’overhead TCP. Per fare ciò, apri /etc/php-fpm.d/www.conf…
vi /etc/php-fpm.d/www.conf… e fai in modo che la riga listen appaia come segue:
| [...] ;listen = 127.0.0.1:9000 listen = /tmp/php5-fpm.sock [...] |
Poi ricarica PHP-FPM:
/etc/init.d/php-fpm reloadSuccessivamente, passa attraverso la tua configurazione nginx e tutti i tuoi vhosts e cambia la riga fastcgi_pass 127.0.0.1:9000; in fastcgi_pass unix:/tmp/php5-fpm.sock;, ad esempio in questo modo:
vi /etc/nginx/conf.d/default.conf| [...] location ~ \.php$ { root /usr/share/nginx/html; try_files $uri =404; fastcgi_pass unix:/tmp/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } [...] |
Infine ricarica nginx:
/etc/init.d/nginx reload8 Link
- nginx: http://nginx.org/
- nginx Wiki: http://wiki.nginx.org/
- PHP: http://www.php.net/
- PHP-FPM: http://php-fpm.org/
- MySQL: http://www.mysql.com/
- CentOS: http://www.centos.org/
Informazioni sull’autore
Falko Timme è il proprietario di Timme Hosting (hosting web nginx ultra-veloce). È il principale manutentore di HowtoForge (dal 2005) e uno dei core developer di ISPConfig (dal 2000). Ha anche contribuito al libro O’Reilly “Linux System Administration”.
Ricevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.