Vernice con nginx è meglio del semplice utilizzo di nginx? [chiuso]


22

Vedo molti discorsi sull'uso di nginx con Varnish e non capisco perché. Nginx non è abbastanza?

Nginx ha SSI, ha cache proxy inversa, è leggera, ha SSL, può funzionare con cgi, fpm, ecc.

Varnish ha le stesse cose, ma niente SSL e nessun supporto CGI.


"Better" è davvero soggettivo. Dipende dai casi d'uso ...
voretaq7,

7
A volte una semplice domanda fa il lavoro meglio di quelli complessi. Sono molto preoccupato per azioni del genere da parte delle persone che hanno chiuso questa domanda supponendo che non fosse utile al "formato originale di domande e risposte". Sto cercando questo argomento ed ero molto interessato a vedere i risultati di questo dibattito.
Roger,

varnish ha una potente configurazione vcl, spurgo, cache proxy inversa, ESI nginx può funzionare con FCGI, cache proxy inversa, ssi, nessuna eliminazione (forse c'è un modulo) dal punto di vista delle prestazioni sono quasi uguali per i file statici, la cache ... se hai qualche domanda che posso aiutare
Bogdan Cosmin,

Risposte:


14

Ho trovato la vernice ~ 5% più veloce per i piccoli file statici di nginx - la vernice davanti ad apache o la vernice davanti a un server di app web sarebbe un grande guadagno; ma di fronte a nginx, il vantaggio è piuttosto trascurabile (soprattutto tenendo conto delle spese generali e della complessità extra)


Potete fornire alcuni risultati dei test a supporto di questo? E se sto già usando nginx + opcache. Allora, ci sono dei vantaggi nell'usare la vernice?
Grave

23

In primo luogo, per chiarire: Nginx è un web server, con tutte le funzionalità e la complessità che comporta. Ha anche la capacità di memorizzazione nella cache, ma questo non è il suo obiettivo principale di progettazione.

Varnish non è un web server. Non può ricoprire quel ruolo (non senza un VCL veramente malvagio, comunque). Il suo ruolo è memorizzare nella cache il contenuto fornito da un altro server. Se necessario, può modificare la richiesta o la risposta.

Se nginx è in grado di gestire il tuo traffico, è sufficiente. Se nginx non è in grado di tenere il passo, un modo per aumentarne la capacità è posizionando una cache di fronte ad essa e facendo in modo che la cache gestisca il maggior numero possibile di richieste.

Ad esempio, utilizziamo Apache per eseguire un numero di siti Web PHP relativamente complessi da un cluster di server Web. Quando abbiamo iniziato a riscontrare problemi di capacità, abbiamo posizionato un paio di server Varnish davanti al cluster Apache. Gli host Varnish ora gestiscono l'85% di tutte le richieste in arrivo senza disturbare il backend di Apache.


Quindi, Varnish memorizza nella cache il contenuto dinamico generato da PHP? O solo le altre cose?
Alix Axel,

Varnish cache qualsiasi cosa tu gli dica di memorizzare nella cache. Può memorizzare nella cache solo l'output di PHP, solo i file statici, entrambi o nessuno dei due. È uno strumento molto potente.
Insyte,

Stavo chiedendo il tuo esempio specifico. Mi sorprende il modo in cui è possibile memorizzare nella cache il contenuto dinamico senza incasinare l'applicazione dinamica (sessioni PHP per i principianti). La memorizzazione nella cache dei contenuti statici mi sembra un po 'ridondante.
Alix Axel,

3
Dipende dal contenuto dinamico. Supponiamo, ad esempio, che la pagina sia un post di blog con commenti. Generare il thread dei commenti può essere estremamente costoso ma perfettamente accettabile memorizzarlo nella cache per 5 minuti. D'altra parte, la memorizzazione nella cache del contenuto dinamico restituito da un'applicazione di webmail sarebbe chiaramente problematica. Puoi persino creare un caso misto: memorizza nella cache l'intero output di un'app di e-commerce, ma comunica a varnish di richiamare il backend per popolare l'indicatore del carrello.
Insyte,
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.