Apache & Nginx. Collegati da una catena

Come è implementata l'integrazione tra Apache e Nginx in Timeweb

Per molte aziende, Nginx + Apache + PHP è una combinazione molto comune e diffusa, e Timeweb non fa eccezione. Tuttavia, capire come sia realizzata può essere interessante e utile.

Apache & Nginx. Collegati in una catena

L'uso di questa combinazione è certamente dettato dalle esigenze dei nostri clienti. Sia Nginx che Apache svolgono ruoli specifici, ognuno risolve determinati compiti.

Impostazioni principali Apache vengono eseguite nei file di configurazione di Apache stesso, mentre le impostazioni per i siti dei clienti avvengono attraverso il file .htaccess. .htaccess è un file di configurazione in cui il cliente può impostare autonomamente regole e comportamenti del server web. Questo tipo di configurazione riguarderà specificamente il suo sito. Ad esempio, grazie alle funzionalità di Apache, gli utenti possono cambiare il modo di operare all'interno di una stessa versione di PHP da mod_php a mod_cgi; è possibile impostare reindirizzamenti, ottimizzazione SEO, URL amichevoli, alcuni limiti per PHP.

Nginx viene utilizzato come server proxy per reindirizzare il traffico ad Apache e come server web per la distribuzione di contenuti statici. Abbiamo anche sviluppato moduli di sicurezza per Nginx, che consentono di proteggere i dati dei nostri utenti, come ad esempio separare i diritti di accesso.

Immaginiamo che un utente acceda al sito di un nostro cliente. Inizialmente, l'utente arriva su Nginx, che distribuisce contenuti statici. Questo avviene istantaneamente. Successivamente, quando si tratta di caricare PHP, Nginx reindirizza la richiesta ad Apache. Ed è Apache, insieme a PHP, a generare il contenuto dinamico.

Caratteristiche della combinazione Apache & Nginx su Timeweb

Sul nostro hosting virtuale sono implementati 2 principali schemi di funzionamento di Apache & Nginx: Shared e Dedicated.

Schema Shared

Questo schema è utilizzato dalla maggior parte degli utenti. Si distingue per la sua semplicità e l'efficienza delle risorse: lo schema Shared utilizza meno risorse, rendendo quindi le sue tariffe più economiche. In base a questo schema, è attivato un solo Nginx sul server, che gestisce tutte le richieste degli utenti, e diversi istanze di Apache.

Lo schema Shared è stato perfezionato nel tempo: gradualmente abbiamo corretto le imperfezioni. È comodo che possa essere realizzato senza la necessità di modificare il codice sorgente.

Apache & Nginx. Collegati in una catena
schema Shared

Schema Dedicated

Il Dedicated richiede più risorse, quindi il suo piano è più costoso per i clienti. Nello schema Dedicated, viene avviato un Apache separato per ogni cliente. Le risorse qui sono riservate per il cliente, e sono assegnate in modo esclusivo. Ecco come funziona: sul server sono disponibili diverse versioni di PHP. Supportiamo le versioni 5.3, 5.4, 5.6, 7.1, 7.2, 7.3, 7.4. Così, per ogni versione di PHP viene avviato un proprio Apache.

Apache & Nginx. Collegati in una catena
schema Dedicated

Safe zone. Configurazione delle zone in Nginx

In precedenza, per Nginx usavamo molte zone di memoria condivisa (zone) — un blocco server per ogni dominio. Questa configurazione richiede molte risorse, poiché per ogni sito viene creata una zona separata. Tuttavia, nelle impostazioni di Nginx, la maggior parte dei siti è simile, quindi è possibile inserirli in un'unica zona grazie all'uso delle direttive map nel modulo ngx_http_map_module, che consentono di definire associazioni. Ad esempio, abbiamo un modello di zona in cui dobbiamo fornire variabili: il percorso del sito, la versione di PHP, l'utente. In questo modo, è stato accelerato il caricamento della configurazione di Nginx, cioè il reload.

Questa configurazione ha notevolmente ridotto il consumo di memoria e accelerato le prestazioni di Nginx.

Il reload non sarà eseguito!

Nello schema Shared abbiamo eliminato la necessità di riavviare (reload) Apache quando si apportano modifiche alle impostazioni dei siti. In passato, quando un cliente voleva aggiungere un dominio o cambiare la versione di PHP, era necessario un riavvio obbligatorio di Apache, il che causava ritardi nelle risposte e influiva negativamente sulle prestazioni dei siti.

Abbiamo eliminato i riavvii creando configurazioni dinamiche. Grazie a mpm-itk (modulo Apache), ogni processo viene eseguito da un utente separato, aumentando il livello di sicurezza. Questo metodo consente di trasferire i dati dell'utente e il suo document_root da Nginx a Apache2. Pertanto, Apache non contiene configurazioni dei siti, le riceve dinamicamente e non è più necessario alcun riavvio.

Apache & Nginx. Collegati in una catena
Configurazione dello schema Shared

E Docker?

Molte aziende sono passate a un sistema basato su container. Attualmente Timeweb sta valutando la possibilità di una tale transizione. Certamente, in ogni soluzione è possibile trovare vantaggi e svantaggi.

Sebbene il sistema container abbia vantaggi indiscutibili, l'utente dispone di meno risorse. Con Timeweb, grazie al sistema di hosting descritto, non ci sono limiti alla memoria operativa. L'utente riceve più risorse rispetto a un container. Inoltre, l'utente può caricare più moduli Apache.

Timeweb gestisce circa 500.000 siti web. Ci assumiamo una grande responsabilità e non facciamo modifiche improvvise e ingiustificate alla complessa architettura. La combinazione di Apache & Nginx è affidabile e collaudata nel tempo. Da parte nostra, ci sforziamo di ottenere le massime prestazioni grazie a configurazioni uniche.

Per garantire un funzionamento efficiente e veloce di un gran numero di siti, è necessario utilizzare una configurazione template e dinamica di Apache e Nginx. Essa consente di amministrare rapidamente e facilmente un gran numero di server simili.

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster