Maison > Article > Opération et maintenance > Comment utiliser nginx pour mettre en cache des fichiers statiques sur le serveur
1. Avantages de la mise en cache nginx
Comme le montre la figure, la mise en cache nginx peut, dans une certaine mesure, réduire la pression sur le serveur source lors du traitement des requêtes.
Parce que de nombreux fichiers statiques (tels que CSS, JS, images) ne sont pas mis à jour fréquemment. nginx utilise proxy_cache pour mettre en cache les requêtes des utilisateurs dans un répertoire local. La même requête suivante peut appeler directement le fichier cache, sans avoir à solliciter le serveur.
Après tout, le traitement des services io-intensives est la force de nginx.
Deuxièmement, comment configurer
D'abord une châtaigne :
http{ proxy_connect_timeout 10; proxy_read_timeout 180; proxy_send_timeout 5; proxy_buffer_size 16k; proxy_buffers 4 32k; proxy_busy_buffers_size 96k; proxy_temp_file_write_size 96k; proxy_temp_path /tmp/temp_dir; proxy_cache_path /tmp/cache levels=1:2 keys_zone=cache_one:100m inactive=1d max_size=10g; server { listen 80 default_server; server_name localhost; root /mnt/blog/; location / { } #要缓存文件的后缀,可以在以下设置。 location ~ .*\.(gif|jpg|png|css|js)(.*) { proxy_pass http://ip地址:90; proxy_redirect off; proxy_set_header host $host; proxy_cache cache_one; proxy_cache_valid 200 302 24h; proxy_cache_valid 301 30d; proxy_cache_valid any 5m; expires 90d; add_header wall "hey!guys!give me a star."; } } # 无nginx缓存的blog端口 server { listen 90; server_name localhost; root /mnt/blog/; location / { } } }
Parce que je testais sur un serveur, j'ai utilisé deux ports 80 et 90 pour simuler l'interaction de deux serveurs.
Le port 80 est connecté à l'accès au nom de domaine ordinaire ().
Le port 90 est responsable du traitement de l'accès aux ressources proxy par le port 80.
Équivalent au port 90 étant le serveur source et au port 80 étant le serveur proxy de cache inverse nginx.
Ensuite, parlons des éléments de configuration :
2.1 Paramètres de la couche http
proxy_connect_timeout 10; proxy_read_timeout 180; proxy_send_timeout 5; proxy_buffer_size 16k; proxy_buffers 4 32k; proxy_busy_buffers_size 96k; proxy_temp_file_write_size 96k; proxy_temp_path /tmp/temp_dir; proxy_cache_path /tmp/cache levels=1:2 keys_zone=cache_one:100m inactive=1d max_size=10g;
proxy_connect_timeout délai de connexion au serveur
proxy_read_timeout Une fois la connexion réussie, attendez le temps de réponse du serveur backend
proxy_send_timeout après l'heure de retour des données du serveur final
proxy_buffer_size Taille du tampon
proxy_buffers Définissez le nombre de tampons pour chaque connexion sur nombre et la taille de chaque tampon sur size
proxy_busy_buffers_size Après avoir activé la réponse tamponnée fonction , sans lire toutes les réponses, lorsque le tampon d'écriture atteint une certaine taille, nginx enverra définitivement une réponse au client jusqu'à ce que le tampon soit plus petit que cette valeur.
proxy_temp_file_write_size Définissez la limite de taille pour que nginx écrive des données dans des fichiers temporaires à chaque fois
proxy_temp_path Le chemin de stockage des fichiers temporaires reçus du serveur backend
proxy_cache_path Définissez le chemin du cache et d'autres paramètres. Si les données mises en cache ne sont pas accessibles dans le délai spécifié par le paramètre inactif (actuellement 1 jour), elles seront supprimées du cache
2.2 Paramètres de la couche serveur
2.2.1 Serveur proxy du cache inversé
server { listen 80 default_server; server_name localhost; root /mnt/blog/; location / { } #要缓存文件的后缀,可以在以下设置。 location ~ .*\.(gif|jpg|png|css|js)(.*) { proxy_pass http://ip地址:90; proxy_redirect off; proxy_set_header host $host; proxy_cache cache_one; proxy_cache_valid 200 302 24h; proxy_cache_valid 301 30d; proxy_cache_valid any 5m; expires 90d; add_header wall "hey!guys!give me a star."; } }
proxy_pass nginx ne peut pas obtenir la ressource dans le cache, transférer la demande à cette adresse, obtenir la nouvelle ressource et la mettre en cache
proxy_redirect Définir l'en-tête de réponse "emplacement" du serveur principal et le texte de remplacement du " en-tête de réponse « rafraîchir »
proxy_set_header permet de redéfinir ou d'ajouter l'en-tête de requête envoyé au serveur backend
proxy_cache spécifie la mémoire partagée utilisée pour la mise en cache des pages, correspondant à la zone de clés définie par la couche http
proxy_cache_valid sets différents temps de cache pour différents codes d'état de réponse
expiration du temps de cache
Ici, j'ai configuré les ressources statiques images, CSS et js pour la mise en cache.
Lorsque l'utilisateur saisit le nom de domaine, l'adresse d'accès de ip:port est obtenue par analyse. Le port par défaut est 80. Par conséquent, la demande de page sera interceptée par le serveur actuel et traitée.
Lorsque la ressource statique se terminant par le nom de fichier ci-dessus est analysée, la ressource statique sera obtenue à partir de la zone de cache.
Si la ressource correspondante est obtenue, les données seront restituées directement.
Si elle ne peut être obtenue, la demande sera transmise à l'adresse indiquée par proxy_pass pour traitement.
2.2.2 Serveur source
server { listen 90; server_name localhost; root /mnt/blog/; location / { } }
Ici, la requête reçue sur le port 90 est directement traitée, et les ressources sont récupérées dans le répertoire local du serveur /mnt/blog pour répondre.
3. Comment vérifier si le cache est valide
Les lecteurs attentifs devraient remarquer que j'ai laissé un œuf de Pâques add_header wall "hé ! les gars ! donnez-moi une étoile dans le deuxième paragraphe."
add_header est utilisé pour définir des informations personnalisées dans l'en-tête.
Donc, si le cache est valide, l'en-tête renvoyé par la ressource statique contiendra certainement cette information.
Les résultats de la visite sont les suivants :
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!