Cet article vous présente Nginx en tant que service Web de ressources statiques et compression de ressources statiques. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.
1. Service Web de ressources statiques
1. Type de ressource statique
类型 | 文件类型 |
---|---|
浏览器端渲染 | HTML、CSS、JS |
图片 | JEPG、GIF、PNG |
视频 | FLV、MPEG |
文件 | TXT等其他下载文件 |
2. Scénario de service de ressources statiques-CDN
2. Configuration du noyau de ressources statiques
1. Lecture de fichiers sendfile
sendfile est un mode efficace pour transférer des fichiers
Sendfile est activé pour indiquer un démarrage efficace. Le mode de transfert de fichiers. sendfile permet à Nginx de transférer des données directement entre le disque et le socket TCP lors du transfert de fichiers. Si ce paramètre n'est pas activé, il s'appliquera d'abord à un tampon dans l'espace utilisateur (espace de processus Nginx), utilisera la fonction read pour lire les données du disque vers le cache, puis lira le tampon dans l'espace utilisateur depuis le cache, puis utilisez la fonction d'écriture pour lire les données de l'espace utilisateur. Le tampon d'espace est écrit dans le tampon du noyau et enfin dans le socket TCP. Après avoir activé ce paramètre, les données n'ont pas besoin de passer par le tampon utilisateur.
Syntax: sendfile on | off; Default: sendfile off; Context: http, server, location, if in location
2. tcp_nopush
Lorsque sendfile est activé, améliorez l'efficacité de la transmission des paquets de données réseau.
La commande tcp_nopush active TCP_CORK sous Linux lors de la connexion à un socket. Cette option indique à la pile TCP d'ajouter des paquets et de les envoyer lorsqu'ils sont pleins ou lorsque l'application indique d'envoyer des paquets en supprimant explicitement TCP_CORK. Cela permet d'envoyer une quantité optimale de paquets de données et augmente donc l'efficacité de la transmission des paquets réseau.
C'est-à-dire que lorsque tcp_nopush=on, le résultat est que le paquet de données ne sera pas transmis immédiatement. Lorsque le paquet de données est le plus volumineux, il sera transmis en même temps, cela aidera à résoudre la congestion du réseau. il y aura un léger retard.
Syntaxe
Syntax: tcp_nopush on | off; Default: tcp_nopush off; Context: http, server, location
3. tcp_nodelay
Sous connexion keepalive, améliorez la transmission en temps réel des données réseau paquets.
L'option tcp_nodelay est exactement le contraire de tcp_nopush. Les paquets de données sont envoyés à l'utilisateur en temps réel sans attente.
Syntaxe
Syntax: tcp_nodelay on | off; Default: tcp_nodelay off; Context: server, location
4. Compression
Activez la compression pour accélérer la réponse des ressources et économiser les ressources de bande passante du réseau. .
ngx_http_gzip_module
Syntaxe
Activer la compression et désactivé
Syntax: gzip on | off; Default: gzip off; Context: http, server, location, if in location
Configuration du niveau de compression (plus le niveau de compression est élevé, plus les ressources du serveur sont consommées)
Syntax: gzip_comp_level level; Default: gzip_comp_level 1; Context: http, server, location
Configuration de la version du protocole gzip
Syntax: gzip_http_version 1.0 | 1.1; Default: gzip_http_version 1.1; Context: http, server, location
Module d'extension de compression
Fonction gzip pré-lue ngx_http_gzip_static_module
Syntax: gzip_static on | off | always; Default: gzip_static off; Context: http, server, location
L'application prend en charge la méthode de compression gunzip ngx_http_gunzip_module
Syntax: gunzip on | off; Default: gunzip off; Context: http, server, location Syntax: gunzip_buffers number size; Default: gunzip_buffers 32 4k|16 8k; Context: http, server, location
3. Exemple de compression de ressources statiques
1. vim /etc/nginx/conf.d/static.conf
server { #开启sendfile,提高网络包的传输效率 sendfile on; #配置txt|xml资源的路径 location ~ .*\.(txt|xml)$ { #开启压缩 gzip on; gzip_http_version 1.1; gzip_comp_level 1; gzip_types text/plain application/xml; root /vagrant/doc; } }
2. nginx -s reload Rechargez le fichier de configuration nginx
3 Créez le fichier /vagrant/doc/a.txt et vérifiez la taille du fichier
.[root/etc/nginx]# curl http://www.sina.com.cn/ > /vagrant/doc/a.txt % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 557k 100 557k 0 0 488k 0 0:00:01 0:00:01 --:--:-- 488k [root/etc/nginx]# ll /vagrant/doc/a.txt -rwxrwxrwx 1 vagrant vagrant 558K 7月 11 10:57 /vagrant/doc/a.txt*
On peut voir que la taille du fichier a.txt est de 558 Ko
4 Accédez à 192.168.33.88/a.txt via curl et affichez les informations d'en-tête de réponse http.
[root/etc/nginx]# curl -I 192.168.33.88/a.txt -H Accept-Encoding:gzip,defalte HTTP/1.1 200 OK Server: nginx/1.14.0 Date: Wed, 11 Jul 2018 11:01:43 GMT Content-Type: text/plain Last-Modified: Wed, 11 Jul 2018 10:57:22 GMT Connection: keep-alive ETag: W/"5b45e292-8b47f" Content-Encoding: gzip
D'après la réponse, il ressort des informations d'en-tête que le serveur utilise la compression gzip
5 Accédez à 192.168.33.88/a.txt via le navigateur et utilisez-le. les outils de développement pour vérifier la taille du fichier demandé
On constate qu'après compression gzip, le fichier demandé est compressé à partir de 558K à 148K, et le taux de compression est très élevé.
6. De plus, vous pouvez également vérifier la taille du fichier transféré via le journal nginx access.log
[root/etc/nginx]# tail /var/log/nginx/access.log 192.168.33.1 - - [11/Jul/2018:11:02:46 +0000] "GET /a.txt HTTP/1.1" 200 151549 "-" "Chrome/67.0.3396.99" "-"
On peut voir que le fichier transféré la taille du fichier est 151549, l'unité est B , convertie en Ko, elle fait environ 148 Ko.
Recommandations associées :
Erreur de démarrage nginx nginx proxy inverse nginx qu'est-ce que nginx lourd
Nginx install lua-nginx - module module
Créer des scripts nginx sous Linux -start, stop, reload..., tutoriel nginx-start_PHP
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!