Lo sapevi?

ServerEasy offre un supporto tecnico dedicato per affrontare rapidamente e efficacemente qualsiasi minaccia alla sicurezza della tua rete?

Tuning avanzato di Nginx e Apache per siti ad alto traffico

Estimated reading: 4 minutes 29 views

Gestire siti ad alto traffico richiede molto più di una semplice installazione di Nginx o Apache.
Un web server non ottimizzato diventa rapidamente il collo di bottiglia dell’intera infrastruttura, causando latenze elevate, errori 502/503 e un consumo eccessivo di risorse.

In questa guida vedremo come ottimizzare Nginx e Apache per siti ad alto traffico, applicando tecniche di tuning avanzato, sicure e realmente utilizzate in ambienti di produzione.

La guida è valida per Ubuntu, Debian, AlmaLinux, CentOS, Rocky Linux e VPS/cloud server.

Come applicare correttamente le configurazioni

Prima di procedere con il tuning avanzato di Nginx e Apache, è fondamentale chiarire dove applicare le configurazioni, quali file modificare e come rendere effettive le modifiche in sicurezza.

File di configurazione principale

Nginx

Il file principale di configurazione di Nginx è:

				
					/etc/nginx/nginx.conf

				
			

All’interno di questo file trovi tre livelli fondamentali:

  • direttive globali
  • blocco events {}
  • blocco http {}

Le configurazioni di performance generali (worker, eventi, buffer, compressione, cache) vanno sempre inserite in questi blocchi, non nei VirtualHost.

I siti web veri e propri sono definiti nei file:

				
					/etc/nginx/sites-available/

				
			

Che vengono poi attivati in:

				
					/etc/nginx/sites-enabled/

				
			

Apache

Apache utilizza una struttura modulare. I file principali sono:

Su Ubuntu / Debian:

				
					/etc/apache2/apache2.conf
/etc/apache2/mods-available/

				
			

Su AlmaLinux / CentOS:

				
					/etc/httpd/conf/httpd.conf
/etc/httpd/conf.modules.d/

				
			

Le impostazioni di tuning (MPM, thread, limiti) non vanno nei VirtualHost, ma nei file di configurazione dei moduli.

Differenza tra configurazione globale e VirtualHost

La configurazione globale impatta su tutto il server, si applica a tutti i siti presenti e include worker, thread, cache e compressione.  

Il VirtualHost, invece, riguarda un singolo sito, include DocumentRoot,  ServerName, log e non deve contenere tuning strutturali.

Applicare le modifiche in sicurezza e correttamente

Ogni modifica va sempre seguita da:

  1. test della configurazione
  2. reload del servizio

Ngnix

				
					sudo nginx -t
sudo systemctl reload nginx

				
			

Apache

				
					sudo apachectl configtest
sudo systemctl reload apache2

				
			

Il comando reload applica le modifiche senza interrompere le connessioni attive, evitando downtime.

Tuning avanzato di Nginx

Worker processes e worker connections

Nginx scala grazie ai worker e la gestione dei essi è il cuore della scalabilità. Infatti, una configurazione errata porta a saturazione CPU o connessioni bloccate anche su server potenti. Per questo motivo consigliamo questa configurazione:

				
					worker_processes auto;
worker_connections 4096;

				
			
  • worker_processes auto usa tutti i core disponibili
  • worker_connections determina le connessioni simultanee
Questa configurazione è sicura e consigliata anche dalla documentazione ufficiale Nginx.

Ottimizzazione eventi

Utilizza sempre questo metodo, ovvero il più efficente:

				
					events {
    use epoll;
    multi_accept on;
}

				
			

epoll è il sistema più performante su Linux moderno.

Keepalive e timeout

Ridurre overhead di connessione è fondamentale.

				
					keepalive_timeout 30;
keepalive_requests 1000;
client_body_timeout 15;
client_header_timeout 15;
send_timeout 10;

				
			

Questi valori sopra elencati, migliorano la stabilità sotto carica reale. 

Buffer e upload

Evita saturazione RAM e I/O:

				
					client_body_buffer_size 128k;
client_max_body_size 50m;

				
			

Valori realistici per ambienti web moderni.

Compressione (Gzip / Brotli)

Ricorrere alla compressione significa avere meno traffico e quindi anche pagine più veloci.

				
					gzip on;
gzip_types text/plain text/css application/json application/javascript;
gzip_comp_level 5;

				
			

Livelli più alti aumentano CPU senza reali benefici.

FastCGI Cache

Per siti dinamici ad alto traffico:

				
					fastcgi_cache_path /var/cache/nginx levels=1:2 keys_zone=FASTCGI:100m inactive=60m;
fastcgi_cache_key "$scheme$request_method$host$request_uri";

				
			

La cache può ridurre fino all’80% il carico PHP.

Tuning avanzato di Apache

Scegliere l’MPM corretto

Usa MPM Event, non Prefork. Verifica:

				
					apachectl -V

				
			

MPM Event offre:

  • meno consumo RAM
  • migliore gestione connessioni
  • maggiore stabilità

Parametri MPM Event

Configurazione esempio:

				
					StartServers             4
MinSpareThreads         25
MaxSpareThreads         75
ThreadLimit             64
ThreadsPerChild         25
MaxRequestWorkers      400
MaxConnectionsPerChild 5000

				
			

Disabilitare moduli inutili

Ogni modulo caricato consuma risorse Disabilita tutto ciò che non serve:

				
					a2dismod status autoindex negotiation

				
			

Se Apache sarà più leggero, di conseguenza anche il server sarà più veloce.

Evitare .htaccess

.htaccess rallenta Apache perché viene letto a ogni richiesta. Usa:

				
					AllowOverride None

				
			

e sposta le regole nei VirtualHost.

Apache o Nginx + PHP-FPM

PHP è spesso il vero problema dell’ottimizzazione. Configurare correttamente PHP-FPM è essenziale:

  • limita pm.max_children
  • evita processi zombie
  • usa OPcache

Un web server perfetto con PHP mal configurato resta lento.

Sicurezza e performance

Un server sotto attacco è un server lento. Migliori pratiche per assicurare un server sicuro:

  • limitare connessioni per IP
  • rate limiting su Nginx
  • firewall e Fail2ban
  • disabilitare directory listing

La sicurezza migliora direttamente le prestazioni.

Leave a Comment

Share this Doc

Tuning avanzato di Nginx e Apache per siti ad alto traffico

Or copy link

CONTENTS