Maison  >  Article  >  Opération et maintenance  >  Comment configurer la compression GZip lorsqu'un site Node.js utilise Nginx comme proxy inverse

Comment configurer la compression GZip lorsqu'un site Node.js utilise Nginx comme proxy inverse

PHPz
PHPzavant
2023-05-25 19:13:041263parcourir

Site développé par Node.js, si vous utilisez également nginx pour implémenter le proxy inverse.

Ensuite, vous pouvez facilement implémenter la compression gzip côté serveur pour rendre la navigation sur le site plus fluide.

Prérequis : proxy inverse node.js + nginx .

node.js Travail à effectuer :

express 4.0 ou inférieur :

app.use(express.compress()); //主要是这句
app.use(express.json()); 
app.use(express.urlencoded()); 
app.use(express.bodyparser()); 
app.use(express.methodoverride()); 
app.use(express.cookieparser());

Afin de compresser toutes les requêtes, compress est placé en haut.

express 4.0 ou supérieur (y compris 4.0)

var compress = require('compression');
app.use(compress());

4.0 ou supérieur le middleware est supprimé indépendamment.

Vous devez donc d'abord demander('compression')

Cliquez ici pour voir les principales différences entre express 3.5 et express 4.0

Le travail que node.js doit faire est aussi simple.

nginx doit être fait Travail :

Ouvrez le fichier de configuration nginx, modifiez la configuration et activez le commutateur gzip

nano /usr/local/nginx/conf/nginx.conf

nginx sur votre propre serveur n'est peut-être pas installé dans le répertoire /usr/local/, alors recherchez le fichier de configuration nginx.conf dans votre propre répertoire d'installation

Ajoutez la configuration suivante au nœud de configuration http :

gzip on;
    gzip_min_length 1k;
    gzip_buffers   4 16k;
    gzip_http_version 1.0;
    gzip_comp_level 2;
    gzip_types    text/plain application/x-javascript text/css application/xml;
    gzip_vary on;

http (
    //放上面配置节点  
)

Que signifie chaque élément de configuration ?

1) gzip

Syntaxe : gzip on/off

Valeur par défaut : off

Portée : http, serveur, emplacement

Description : Activez ou désactivez le module gzip, utilisez ici pour signifier début

2) gzip_min_length

Syntaxe : gzip_min_length length

Valeur par défaut : gzip_min_length 0

Scope : http, serveur, emplacement

Description : Définir l'autorisation Le nombre minimum d'octets de la page compressée Le nombre d'octets de la page est obtenu à partir de la longueur du contenu dans l'en-tête. La valeur par défaut est 0, ce qui compresse la page quelle que soit sa taille. Il est recommandé de définir le nombre d'octets sur une valeur supérieure à 1 Ko. S'il est inférieur à 1 Ko, il peut être de plus en plus compressé. |

3) gzip_buffers

Syntaxe : gzip_buffers number size

Valeur par défaut : gzip_buffers 4 4k/8k

Portée : http, serveur, emplacement

Description : Configurez le système pour obtenir plusieurs unités de cache pour stocker gzip. Compressez le flux de données résultant. 4 16 Ko signifie demander de la mémoire en unités de 16 Ko et 4 fois la taille des données d'origine en unités de 16 Ko.

4) gzip_comp_level

Syntaxe : gzip_comp_level 1..9

Valeur par défaut : gzip_comp_level 1

Portée : http, serveur, emplacement

Description : taux de compression gzip, 1 est le taux de compression minimum et la vitesse de traitement la plus rapide, 9 compression Que le traitement le plus important mais le plus lent (la transmission est rapide mais consomme plus de CPU). Ici, il est fixé à 5. ( Indépendamment du fait qu'il soit spécifié, le type "text/html" sera toujours compressé. Ceci est défini sur application/x-javascript text/css application/xml.

Il existe des types statiques couramment utilisés, selon la situation que vous devez compresser :

text/html
text/plain
text/css
application/x-javascript
text/javascript
application/xml

ok, le serveur de base a été configuré ici, nginx n'a qu'à être rechargé.

Testons-le maintenant. Comment utiliser curl pour tester que gzip a été activé sur le serveur (la condition de test est les gzip_types par défaut, c'est-à-dire que seul text.html est compressé et les autres types ne sont pas compressés) :

Vérifiez si gzip est activé, le client doit joindre : les informations d'en-tête " accept-encoding : gzip, deflate".

$ curl -i -h "accept-encoding: gzip, deflate" "http://localhost/tag.php"
http/1.1 200 ok
server: nginx
date: thu, 08 mar 2012 07:23:46 gmt
content-type: text/html
connection: close
content-encoding: gzip
$ curl -i -h "accept-encoding: gzip, deflate" "http://localhost/style.css"
http/1.1 200 ok
server: nginx
date: thu, 08 mar 2012 07:23:54 gmt
content-type: text/css
connection: close
last-modified: tue, 27 dec 2011 10:00:51 gmt
etag: "bc612352322d435769c4bdc03ddb2572"
content-length: 22834

Vous pouvez le voir. Le deuxième exemple n'est pas compressé.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer