Apache e Nginx. Collegato da una catena

Come viene implementata la combinazione Apache e Nginx in Timeweb

Per molte aziende Nginx + Apache + PHP è una combinazione molto tipica e comune e Timeweb non fa eccezione. Tuttavia, capire esattamente come viene implementato può essere interessante e utile.

Apache e Nginx. Collegato da una catena

L'utilizzo di tale combinazione è, ovviamente, dettato dalle esigenze dei nostri clienti. Sia Nginx che Apache svolgono un ruolo speciale, ognuno risolve un problema specifico.

Impostazioni di base Apache vengono eseguite nei file di configurazione di Apache stesso e le impostazioni per i siti client vengono eseguite tramite file .htaccess. .htaccess è un file di configurazione in cui il client può configurare autonomamente le regole e il comportamento del server web. Questa impostazione si applicherà specificamente al suo sito. Ad esempio, grazie alla funzionalità Apache, gli utenti possono cambiare la modalità operativa all'interno della stessa versione PHP da mod_php a mod_cgi; puoi impostare reindirizzamenti, ottimizzazione per SEO, URL convenienti, alcuni limiti per PHP.

Nginx utilizzato come server proxy per reindirizzare il traffico su Apache e come server Web per servire contenuto statico. Abbiamo anche sviluppato moduli di sicurezza per Nginx che ci consentono di proteggere i dati dei nostri utenti, ad esempio separando i diritti di accesso.

Immaginiamo che un utente visiti il ​​sito web del nostro cliente. Innanzitutto, l'utente arriva a Nginx, che fornisce contenuti statici. Succede all'istante. Quindi, quando si tratta di caricare PHP, Nginx inoltra la richiesta ad Apache. E Apache, insieme a PHP, genera già contenuti dinamici.

Funzionalità del pacchetto Apache e Nginx in Timeweb

Il nostro hosting virtuale implementa 2 schemi operativi principali per Apache e Nginx: Condiviso e dedicato.

Schema condiviso

Questo schema è utilizzato per la maggior parte degli utenti. Si distingue per la sua semplicità e intensità di risorse: lo schema Condiviso utilizza meno risorse, motivo per cui la sua tariffa è più economica. Secondo questo schema, il server esegue un Nginx, che gli consente di servire tutte le richieste degli utenti, e diverse istanze di Apache.

Lo schema Condiviso sta migliorando da tempo: gradualmente abbiamo corretto le carenze. Convenientemente, può essere fatto senza la necessità di modificare il codice sorgente.

Apache e Nginx. Collegato da una catena
Schema condiviso

Schema dedicato

Dedicato richiede più risorse, quindi la sua tariffa è più costosa per i clienti. Nello schema dedicato, ogni client ottiene il proprio Apache separato. Le risorse qui sono riservate al cliente, sono assegnate esclusivamente. Come funziona: sul server sono presenti diverse versioni di PHP. Supportiamo le versioni 5.3, 5.4, 5.6, 7.1, 7.2, 7.3, 7.4. Quindi, per ogni versione di PHP viene lanciato il proprio Apache.

Apache e Nginx. Collegato da una catena
Schema dedicato

Zona sicura. Configurazione di zone in Nginx

In precedenza, per Nginx utilizzavamo molte zone di memoria condivisa (zone): un blocco server per dominio. Questa configurazione richiede molte risorse, poiché viene creata una zona separata per ciascun sito. Tuttavia, nelle impostazioni di Nginx, la maggior parte dei siti sono dello stesso tipo, quindi possono essere posizionati in una zona grazie all'uso delle direttive mappa nel modulo ngx_http_map_module, che consentono di specificare le corrispondenze. Ad esempio abbiamo un template di zona in cui dobbiamo fornire delle variabili: percorso del sito, versione PHP, utente. Così è stata accelerata la rilettura della configurazione di Nginx, cioè il reload.

Questa configurazione ha consentito di risparmiare notevolmente risorse RAM e di velocizzare Nginx.

La ricarica non funzionerà!

Nello schema condiviso, abbiamo eliminato la necessità di ricaricare Apache quando si modificano le impostazioni del sito web. In precedenza, quando un cliente voleva aggiungere un dominio o modificare la versione PHP, era necessario ricaricare Apache obbligatoriamente, il che portava a ritardi nelle risposte e incideva negativamente sulle prestazioni del sito.

Ci siamo sbarazzati delle ricariche creando configurazioni dinamiche. Grazie a mpm-itk (modulo Apache), ogni processo viene eseguito come utente separato, il che aumenta il livello di sicurezza. Questo metodo consente di trasferire i dati sull'utente e la sua document_root da Nginx ad Apache2. Pertanto, Apache non contiene configurazioni del sito, le riceve dinamicamente e non è più necessario ricaricarle.

Apache e Nginx. Collegato da una catena
Configurazione dello schema condiviso

E che dire di Docker?

Molte aziende sono passate a un sistema basato su container. Timeweb sta attualmente valutando la possibilità di tale transizione. Naturalmente, ci sono pro e contro per ogni decisione.

Oltre ad innegabili vantaggi, il sistema dei contenitori fornisce all’utente meno risorse. In Timeweb, grazie allo schema di hosting descritto, l'utente non ha limitazioni nella RAM. Riceve più risorse che nel contenitore. Inoltre, l'utente potrebbe avere caricati più moduli Apache.

Timeweb alimenta circa 500 siti web. Ci assumiamo una grande responsabilità e non apportiamo modifiche istantanee e ingiustificate ad architetture complesse. La combinazione Apache e Nginx è affidabile e collaudata nel tempo. Noi, a nostra volta, cerchiamo di ottenere le massime prestazioni attraverso configurazioni uniche.

Per un funzionamento rapido e di alta qualità di un gran numero di siti, è necessario utilizzare un modello e una configurazione dinamica di Apache e Nginx. Ti consente di amministrare facilmente e rapidamente un gran numero di server simili.

Fonte: habr.com

Aggiungi un commento