Hosting web

Nginx

Definizione

Nginx (si pronuncia «engine-x») è un server web open source con architettura a eventi, usato anche come reverse proxy, bilanciatore di carico e cache HTTP. Consuma poca memoria anche con molte connessioni simultanee, passa gli script PHP a PHP-FPM e non legge i file .htaccess.

Nginx, Hosting web

Nato per reggere un gran numero di connessioni simultanee, Nginx si è affermato come server web principale o come reverse proxy collocato davanti ad altri server. WordPress lo raccomanda, insieme ad Apache, tra i server più robusti per ospitare il CMS.

Come funziona Nginx

Secondo la sua documentazione, Nginx avvia un processo master e diversi processi worker. Il master legge e verifica la configurazione e gestisce i worker; sono questi ultimi a trattare le richieste, secondo un modello a eventi. Invece di riservare un processo o un thread a ogni connessione, ciascun worker segue molte connessioni insieme e reagisce appena una di esse è pronta. Il numero di worker si imposta spesso sul numero di core del processore.

La configurazione sta nel file nginx.conf e nei file che include. Una modifica si applica solo dopo un reload (nginx -s reload): il master verifica la nuova configurazione, avvia nuovi worker e ferma con calma quelli vecchi, oppure mantiene la configurazione precedente se la nuova contiene un errore.

Nginx e PHP

Nginx non esegue PHP da solo. Passa gli script a un server FastCGI, quasi sempre PHP-FPM, con la direttiva fastcgi_pass. Il dialogo avviene tramite un socket Unix o una porta locale; la documentazione di PHP avverte che un endpoint FastCGI esposto in rete permette l’esecuzione di codice arbitrario, da cui la preferenza per un socket quando tutto gira sulla stessa macchina.

Schema del percorso di una richiesta WordPress con Nginx: il browser chiede una pagina, un worker Nginx la tratta nel suo ciclo di eventi, try_files cerca un file esistente e serve direttamente immagini, CSS e JavaScript, altrimenti la richiesta viene riscritta verso index.php, fastcgi_pass la passa a PHP-FPM tramite un socket e un worker di PHP-FPM esegue WordPress.
Nginx serve da solo i file statici e affida il PHP a PHP-FPM.

Niente .htaccess

È la differenza che sorprende di più chi arriva da Apache: la documentazione di WordPress ricorda che Nginx non ha un file di configurazione per cartella come il .htaccess. Tutto si imposta a livello di server, e WordPress non può scrivere da solo le sue regole di riscrittura. Per i permalink la riga essenziale è:

location / {
    try_files $uri $uri/ /index.php?$args;
}

Serve il file o la cartella richiesti se esistono, altrimenti passa la richiesta a index.php mantenendo i parametri dell’URL. Senza questa riga i permalink personalizzati restituiscono errori 404.

Video: «NGINX in 100 secondi: il web server che domina Internet!» (Managed Server)

Per WordPress

  • Le regole dei plugin non si applicano da sole: un plugin che scrive nel .htaccess (cache, sicurezza, redirect) non ha alcun effetto su Nginx. Bisogna riportarne le regole nella configurazione, o chiedere al provider di hosting di farlo.
  • Proteggi l’amministrazione e i file sensibili con blocchi location, come mostra la nostra guida per proteggere wp-admin a livello di server.
  • Dietro una CDN o un proxy, configura il modulo real_ip per recuperare l’indirizzo del visitatore; vedi Cloudflare davanti a WordPress.
  • Ricarica dopo ogni modifica e prova prima la configurazione con nginx -t.

WP Masquerade funziona su Nginx senza regole lato server, con due eccezioni: gli alias di file della versione Pro, per i quali il plugin genera il blocco da copiare, e una riga che nasconde la cartella del plugin, come spiega la pagina compatibilità con hosting e cache.

Errori frequenti

Aggiungere protezioni in un .htaccess su un server Nginx e credere il sito protetto; lasciare PHP-FPM in ascolto su un indirizzo raggiungibile da Internet; dimenticare ?$args in try_files, il che rompe gli indirizzi con parametri. Molti provider mettono anche Nginx davanti ad Apache: in quel caso il .htaccess torna a funzionare per le richieste passate ad Apache.

Per approfondire

  • Articolo Cloudflare davanti a WordPress: vero IP, WAF ed errori da evitare
  • Pagina Compatibilità con hosting e cache

Fonti

  1. nginx: Beginner’s Guide (link esterno, si apre in una nuova scheda)
  2. WordPress Advanced Administration: Nginx (link esterno, si apre in una nuova scheda)
  3. PHP Manual: FPM configuration (link esterno, si apre in una nuova scheda)

Tutte le definizioni

Sicurezza WordPress, senza rumore

Un’email quando conta: nuovi attacchi osservati, aggiornamenti del plugin e guide pratiche. Niente spam, disiscrizione con un clic.

Inizia gratis, passa a Pro quando sei pronto

La versione gratuita nasconde già WordPress e sposta la pagina di login. Pro aggiunge alias, autenticazione a due fattori e monitoraggio.