Maison  >  Article  >  Opération et maintenance  >  Comment configurer le cache des pages nginx

Comment configurer le cache des pages nginx

WBOY
WBOYavant
2023-05-30 19:13:302952parcourir

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

levels spécifie la structure des répertoires, vous pouvez utiliser n'importe quel 1 ou Numéro à 2 chiffres comme structure de répertoire, tel que x, x:x ou x:x:x. Par exemple : "2", "2:2", "1:1:2", mais il ne peut s'agir que de trois. -répertoire de niveau au maximum.

Toutes les clés et métadonnées actives sont stockées dans le pool de mémoire partagée. Cette zone est spécifiée avec le paramètre keys_zone. L'un fait référence au nom de la piscine partagée et 10 m fait référence à la taille de la piscine partagée.

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


Syntaxe : proxy_cache zone_name; 🎜# Par défaut : aucun emplacement à utiliser.

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

# 🎜🎜# Valeur par défaut : aucun


Utiliser les champs : http, serveur, emplacement


#🎜 🎜#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


Si vous définissez uniquement l'heure :

proxy_cache_valid 5m;

Ensuite, seules les réponses avec les codes 200, 301 et 302 seront mises en cache

Vous pouvez également utiliser n'importe quel paramètre pour n'importe quelle réponse. 🎜#2. Définissez un simple serveur de cache nginx

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;
    }
}

4. #
[root@nginx ~]# mkdir -pv /data/nginx/cache/webserver

5 .Testons-le ci-dessous (Google Chrome)



Remarque, lorsque vous utilisez Google Chrome pour tester, vous pouvez appuyer sur f12 pour l'appeler Outils de développement, sélectionner l'option réseau, nous pouvons voir les en-têtes de réponse, ici nous pouvons voir si nous demandons du cache, mais nous ne pouvons pas encore le voir. Configurons-le et testons-le à nouveau.


6. Description de la variable de cache

$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 :

#🎜 🎜#missmiss

expiré - expiré. La demande est envoyée au backend.


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. Comment configurer le cache des pages nginx


périmé - expiré. Lors de l'utilisation de proxy/fastcgi_cache_use_stale, le backend reçoit des réponses obsolètes.


hit hit


[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!

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