Maison >Opération et maintenance >Nginx >Comment configurer le cache des pages nginx
nginx page cache
1. 🎜#
Syntaxe : proxy_cache_path path [levels=number] keys_zone=zone_name:zone_size [inactive=time] [max_size=size]
#🎜 🎜 #Valeur par défaut : aucun
Utiliser le champ : http
La directive spécifie le chemin du cache et certains autres paramètres. Les données mises en cache sont stockées dans. le fichier et utilisez la valeur de hachage de l'URL du proxy comme clé et nom de fichier. Le paramètrelevels spécifie le nombre de sous-répertoires mis en cache, par exemple :
proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=one:10m;Le nom du fichier est similaire à :
/data/nginx/cache/c/29/b7f54b2df7773722d382f4809d65029c
Notez que chaque pool de mémoire défini doit avoir un chemin unique, par exemple :
proxy_cache_path /data/nginx/cache/one levels=1 keys_zone=one:10m; proxy_cache_path /data/nginx/cache/two levels=2:2 keys_zone=two:100m; proxy_cache_path /data/nginx/cache/three levels=1:1:2 keys_zone=three:1000m;Si les données mises en cache ne sont pas mises en cache dans le délai spécifié par l'inactif paramètre La demande est supprimée et la durée d'inactivité par défaut est de 10 minutes. Un processus appelé gestionnaire de cache contrôle la taille du cache du disque. Il est utilisé pour supprimer les caches inactifs et contrôler la taille du cache. Ceux-ci sont définis dans le paramètre max_size. Lorsque la valeur actuelle du cache dépasse la valeur spécifiée par max_size, elle dépasse sa taille. . Les dernières données les moins utilisées (algorithme de remplacement LRU) seront supprimées. La taille du pool de mémoire est définie proportionnellement au nombre de pages mises en cache. La taille des métadonnées d'une page (fichier) est déterminée par le système d'exploitation. Par exemple, elle est de 64 octets sous freebsd/i386 et de 128 octets sous freebsd/. amd64.
proxy_cache
Après la version 0.7.48, le cache suit les champs d'en-tête "expires", "cache-control: no-cache", "cache-control: max-age=xxx" du backend, après la version 0.7.66, les en-têtes "cache-control: "private" et "no-store" sont également suivis. nginx ne traitera pas l'en-tête "vary" pendant le processus de mise en cache, afin de garantir que certaines données privées ne sont pas visibles pour tous les utilisateurs, le backend doit définir l'en-tête "no-cache" ou "max-age=0", ou proxy_cache_key contient des données spécifiées par l'utilisateur telles que $cookie_xxx. L'utilisation de la valeur du cookie dans le cadre de proxy_cache_key peut empêcher les données privées. d'être mis en cache, il peut donc être utilisé dans différents Spécifiez la valeur de proxy_cache_key séparément dans l'emplacement pour séparer les données privées et les données publiques
L'instruction de cache dépend des tampons proxy (buffers). . Si proxy_buffers est désactivé, le cache ne prendra pas effet. …] heure
#🎜 🎜#Définissez différents temps de cache pour différentes réponses, par exemple : #🎜 🎜#
proxy_cache_valid 200 302 10m; proxy_cache_valid 404 1m;Définissez le temps de cache sur 10 minutes pour les codes de réponse 200 et 302, et 1 minute pour les codes 404
proxy_cache_valid 5m;
proxy_cache_valid 200 302 10m; proxy_cache_valid 301 1h; proxy_cache_valid any 1m;3. Créez un nouveau répertoire de cache
[root@nginx ~]# vim /etc/nginx/nginx.conf proxy_cache_path /data/nginx/cache/webserver levels=1:2 keys_zone=webserver:20m max_size=1g; server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { proxy_pass http://webservers; proxy_set_header x-real-ip $remote_addr; proxy_cache webserver; proxy_cache_valid 200 10m; } }
[root@nginx ~]# mkdir -pv /data/nginx/cache/webserver5 .Testons-le ci-dessous (Google Chrome)
$server_addr
adresse du serveur, après avoir terminé le système once Cette valeur peut être déterminée après l'appel. Si vous souhaitez contourner l'appel système, vous devez spécifier l'adresse dans Listen et utiliser le paramètre bind.
$upstream_cache_status
Dans la version 0.8.3 sa valeur peut être :
mise à jour - expiré. Étant donné que proxy/fastcgi_cache_use_stale est en cours de mise à jour, l'ancienne version de la réponse sera utilisée.
périmé - expiré. Lors de l'utilisation de proxy/fastcgi_cache_use_stale, le backend reçoit des réponses obsolètes.
[root@nginx webserver]# service nginx reload nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful 重新载入 nginx: [确定]
7. Recharger le fichier de configuration
[root@nginx ~]# vim /etc/nginx/nginx.conf proxy_cache_path /data/nginx/cache/webserver levels=1:2 keys_zone=webserver:20m max_size=1g; server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; #增加两头部 add_header x-via $server_addr; add_header x-cache $upstream_cache_status; location / { proxy_pass http://webservers; proxy_set_header x-real-ip $remote_addr; proxy_cache webserver; proxy_cache_valid 200 10m; } }#🎜🎜 # 8. Testez-le
注,从图中我们可以看到,我们访问的服务器是192.168.18.208,缓存命中。大家可以看到是不是很直观啊。下面我们看一下缓存目录。
9.查看一下缓存目录
[root@nginx ~]# cd /data/nginx/cache/webserver/f/63/ [root@nginx 63]# ls 681ad4c77694b65d61c9985553a2763f
注,缓存目录里确实有缓存文件。
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!