뚠뚠멍의 생각들

Impostazioni principali di nginx come web server

Creato: 2024-09-26

Creato: 2024-09-26 21:20

Nginx è un software open source, ampiamente utilizzato come server web o server proxy web.

Con una configurazione appropriata, può fornire contenuti statici in modo efficiente.

Voglio documentare alcune delle sue impostazioni principali.


Alcune impostazioni principali relative alle prestazioni

1. Compressione gzip

Quando si carica un sito web, si ricevono numerosi file dal server web, come JavaScript, immagini, HTML e CSS.

Invece di fornire questi contenuti nella loro forma originale, utilizzando la compressione gzip è possibile ridurre significativamente la quantità di dati trasmessi.


In altre parole, applicando questa compressione:

- Si riduce la quantità di dati, risparmiando larghezza di banda.

- Si possono risparmiare risorse del server.

- Dal punto di vista dell'utente, la velocità di caricamento effettiva aumenta.


D'altra parte, poiché il server deve eseguire la compressione gzip prima di rispondere al contenuto, l'utilizzo della CPU del server potrebbe aumentare.

È necessario testare attentamente prima dell'implementazione in produzione quali tipi di file comprimere, il livello di compressione e la dimensione dei file da comprimere.


Di seguito sono riportate alcune impostazioni relative a gzip.

* gzip_vary indica che il server può inviare contenuti compressi e non compressi a seconda che il client supporti gzip o meno. (Indica che possono essere forniti contenuti di diverse versioni in base all'header di richiesta del client (Accept-Encoding)).


2. Impostazione di proxy_buffer

Nginx memorizza la risposta in un buffer prima di inviarla al client.

Quando il server web invia una risposta al client, se la velocità del client è lenta, il server deve attendere continuamente per la trasmissione dei dati. (collo di bottiglia della rete)

In questo caso, poiché le risorse del server vengono utilizzate continuamente, per risolvere questo problema, viene utilizzato un buffer per elaborare temporaneamente la risposta indipendentemente dalla velocità di elaborazione del client. Questo porta ai seguenti vantaggi:

- Ottimizzazione del carico del server

- Riduzione dei colli di bottiglia di rete

※ Se la dimensione del buffer è troppo grande, la trasmissione di dati in tempo reale come lo streaming di testo potrebbe essere ritardata, quindi è necessario eseguire dei test. In particolare, con l'aumento dei servizi correlati all'IA, se lo streaming di testo non funziona, controlla attentamente questa impostazione.


3. Impostazione di worker e http

I worker sono i processi che gestiscono le richieste dei client ed è possibile impostare quanti worker utilizzare per ogni core della CPU del server.

Http normalmente segue il ciclo richiesta-connessione-risposta-chiusura connessione, ma per ridurre le risorse utilizzate per le connessioni multiple richieste, è possibile mantenere la connessione client. Questa è l'impostazione keep-alive.

Il motivo per cui queste due impostazioni sono raggruppate è il seguente.

Se il server ha 4 core, il numero teorico di connessioni possibili è 1.024 * 4 = 4.096.

(Potrebbe non essere preciso a seconda delle risorse e dell'ambiente di traffico)

Quando 4.096 client si connettono contemporaneamente e occupano tutti i keep-alive per 65 secondi,

se un 4.097° utente tenta di connettersi, potrebbe non riuscire a farlo, causando un ritardo nella risposta.


Pertanto, supponendo che le risorse del server siano stabili grazie all'auto-scaling, se si verifica un ritardo nella risposta durante un evento, le impostazioni di cui sopra potrebbero avere un impatto indiretto.


4. Altro - blocco location

Alcune impostazioni, come il buffer proxy, possono essere applicate per URL di richiesta specifici.

* Alcune impostazioni, come keep-alive, vengono applicate a livello di server HTTP e non possono essere impostate per blocco.

server {
listen 80;
server_name example.com;


Con le impostazioni di cui sopra è possibile ottimizzare le prestazioni web. Dopo aver eseguito test sufficienti considerando diversi casi di test, ottimizza le prestazioni del server!

* È possibile applicare la configurazione modificata di nginx senza tempi di inattività del server, quindi è generalmente stabile.






Commenti0