Vernice -> Nginx -> Apache una buona idea?


10

Sto pensando all'architettura per un nuovo server web. Avere Varnish come cache davanti a Nginx come proxy inverso e servire file statici davanti ad Apache per tutti i lavori pesanti sarebbe una buona idea?

Ho intenzione di eseguire php e ruby ​​su applicazioni rotaie.

Ci saranno troppe spese generali che passano richieste php per apache attraverso altri due processi?

Molte grazie!

Risposte:


8

Sì, è valido Il mio approccio personale sarebbe usare Varnish in anticipo e usare VCL per dividere il traffico tra richieste NGINX statiche e il tuo sollevamento pesante (che sia Apache o Passeggero o ... non importa). Ciò è particolarmente vero se si trova sulla stessa macchina in quanto non è necessario l'overhead aggiuntivo. Non ti compra necessariamente nulla.


sì, questa è una buona idea, dato che la vernice dovrebbe essere abbastanza veloce per questo
Zoran Zaric,

6

Varnish non supporta (ancora) la compressione gzip, quindi potrebbe essere un'idea scambiarlo con nginx davanti per comprimere ciò che la vernice rimanda. Poiché varnish e nginx non combattono per le stesse risorse (nginx utilizza la CPU per la compressione gzip, mentre varnish utilizza la memoria) dovrebbero funzionare senza problemi sulla stessa macchina.

Varnish ora supporta la compressione gzip , quindi a meno che tu non abbia bisogno della terminazione SSL (come suggerito nei commenti), suggerirei di mettere la vernice direttamente in contatto con Internet.

Per http:

(internet) -> (vernice, gzip, cache, esi) -> (applicazione)

Per https:

(internet) -> (nginx, ssl) -> (vernice, gzip, cache, esi) -> (applicazione)

Se vuoi anche l'apache (per l'onnipresente supporto mod_foobar), lo metterei tra vernice e l'applicazione

Aggiornamento: aggiornato per includere il supporto gzip in vernice 3.0. Aggiunto ssl / esi come suggerito nei commenti


Se tutto ciò che serve al contenuto per la vernice lo codifica in gzip, allora la vernice lo passerà su gzip senza lamentarsi: varnish-cache.org/wiki/FAQ/Compression L'unica cosa che la vernice non fa è prendere il contenuto che non è compresso dal non cache applicazione e riservarlo compresso. Anche questa è la tua comprensione?
ewalk

L'unica volta che si esegue nginx davanti alla vernice è quando si utilizza ESI. Poiché non è possibile eseguire l'assemblaggio ESI da pagine compresse e Varnish non comprime una pagina assemblata, Nginx viene posizionato davanti a Varnish per fornire tale compressione. Se l'origine serve il contenuto compresso, Varnish passerà tali dati al client in forma compressa.
user6738237482

Sì, ESI è uno dei motivi per cui consiglierei questa configurazione, ma immagino che se il tuo backend si comprime e non usi ESI, potresti rinunciare a nginx, poiché credo che la vernice possa gestire un bel po 'di traffico senza rompere un sudore.
mogsie,

@ user6738237482, nginx supporta la terminazione SSL, Vernice no. In effetti, essere di fronte a qualcosa come la vernice o Apache è esattamente ciò per cui nginx è stato originariamente progettato, come un server proxy veloce e leggero.
rmalayter,

4

La quantità di spese generali non dovrebbe essere significativa. Sto assumendo parte del motivo per cui si desidera avere questi due livelli è per la scalabilità; nel qual caso molto probabilmente vedresti, rispetto all'apache, che vernice e nginx non stanno lavorando molto duramente.

Se tutti e tre i livelli su un computer, si dovrebbe avere un impatto minore sulle prestazioni prima di raggiungere la capacità del server stesso.

In alternativa, perché non verniciare + nginx con passeggero? Ho usato questa configurazione in passato e nginx usando il passeggero è relativamente leggero e ha funzionato abbastanza bene. Potrebbe valere la pena pensarci se non sei sposato con Apache che esegue il tuo stack di binari.


sì, potrei passare da apache a nginx per le rotaie, ma dare ai clienti la possibilità di usare i file .htaccess è un + per apache, almeno per php.
Zoran Zaric,

2

Sono l'amministratore di sistema per una piattaforma di e-commerce di avvio. Usiamo la vernice + nginx davanti al nostro stack PHP / apache e ha funzionato a meraviglia.

Abbiamo un'applicazione ad alto consumo di memoria e l'app utilizzava circa 15-20 grammi di RAM per nodo web e una volta che abbiamo messo la vernice davanti è ora circa 8 grammi di RAM per nodo. Non hanno mai avuto un picco.

Quindi lo consiglio vivamente.


3
Sai che la vernice non parla ssl giusto?
Mike,

1

Sto eseguendo Drupal, con il modulo boost su un server Apache + PHP + MySQL, ma davanti a loro sto usando Nginx con la funzione gzip-static attiva e usando i risultati di boost per servire gli utenti.

E soprattutto sto usando la vernice, tutto sullo stesso PC, sto ottenendo buoni risultati.

Sto anche usando Nginx per modificare le intestazioni che Drupal non fa molto bene per la cache.


0

Non è una buona idea se non hai bisogno di qualcosa come ESI. Nginx ha il proprio sistema di memorizzazione nella cache che offre prestazioni migliori .


So che questa è una vecchia risposta, ma sfortunatamente quel link non è più disponibile, quindi non sono in grado di verificare il tuo reclamo. Nella mia esperienza, Varnish è difficile da battere nella sua velocità e flessibilità come proxy inverso.
Martijn Heemels,


-1

Apache può essere utilizzato per terminare SSL (decrittografare), controllare http://noosfero.org/Development/Varnish#SSL


1
Evita di pubblicare link come risposte, poiché è probabile che la tua risposta perda ogni significato quando è interessata da linkrot . Ti preghiamo di considerare di modificare la tua risposta e di includere le parti pertinenti dal link che hai fornito nella tua risposta. Lasciare sempre il collegamento in posizione come riferimento.
Bryan,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.