Maison  >  Article  >  Opération et maintenance  >  Analyser les détails de mise en œuvre du cache proxy inverse et du cache de contenu dynamique de Nginx

Analyser les détails de mise en œuvre du cache proxy inverse et du cache de contenu dynamique de Nginx

王林
王林original
2023-08-25 15:33:381279parcourir

Analyser les détails de mise en œuvre du cache proxy inverse et du cache de contenu dynamique de Nginx

Analysez les détails de mise en œuvre du cache proxy inverse et du cache de contenu dynamique de Nginx

Nginx est un serveur Web et un serveur proxy inverse hautes performances. Dans les applications Web actuelles, afin d'améliorer la vitesse d'accès et les performances du site Web, il est souvent nécessaire d'utiliser la mise en cache proxy inverse et la mise en cache de contenu dynamique pour accélérer le chargement et la réponse des pages Web. Cet article analysera en détail les détails de mise en œuvre du cache proxy inverse et du cache de contenu dynamique de Nginx, et donnera des exemples de code correspondants.

1. Détails d'implémentation du cache proxy inverse

Le cache proxy inverse signifie que même si Nginx agit comme un serveur proxy inverse, il peut également mettre en cache les résultats des réponses aux demandes des clients dans sa propre mémoire ou son disque pour la prochaine fois lors de la demande de la même ressource. , le résultat mis en cache est directement renvoyé, améliorant ainsi la vitesse d'accès et réduisant la pression sur le serveur back-end.

  1. Activer le cache proxy inverse

Vous devez d'abord activer la fonction de cache proxy inverse dans le fichier de configuration Nginx. Les informations de configuration suivantes peuvent être ajoutées dans le module http :

http {
    ...
    proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off;

    server {
        ...
    }
}

Dans la configuration ci-dessus, proxy_cache_path spécifie le chemin du cache et les paramètres associés. Le paramètre levels spécifie la structure des répertoires du cache, le paramètre keys_zone spécifie le nom et la taille du cache, le paramètre max_size spécifie la taille maximale capacité du cache, inactive spécifie le délai d'expiration du cache et le paramètre use_temp_path spécifie s'il faut utiliser un chemin temporaire pour la mise en cache. Dans la configuration ci-dessus, nous utilisons un cache nommé my_cache. proxy_cache_path指定了缓存的路径和相关参数。levels参数指定了缓存的目录结构,keys_zone参数指定了缓存的名称和大小,max_size参数指定了缓存的最大容量,inactive参数指定了缓存的过期时间,use_temp_path参数指定了是否使用临时路径进行缓存。在上述配置中,我们使用了名为my_cache的缓存。

  1. 配置反向代理缓存的规则

在Nginx的配置文件中,可以通过location指令来配置反向代理缓存的规则。例如,我们可以将指定的URL路径进行缓存,具体的配置如下所示:

server {
    ...
    
    location /cached {
        proxy_cache my_cache;
        proxy_cache_valid 200 304 10m;
        proxy_cache_use_stale error timeout invalid_header http_500;
        proxy_cache_background_update on;
        proxy_pass http://backend_server;
    }
}

以上配置中,proxy_cache指定了使用哪个缓存,proxy_cache_valid指定了缓存的有效期,proxy_cache_use_stale指定了当缓存过期时是否使用旧的缓存进行响应,proxy_cache_background_update指定了是否后台更新缓存,proxy_pass指定了后端服务器的地址。

  1. 清除缓存

有时候需要手动清除缓存,可以使用proxy_cache_purge模块来实现。在Nginx的配置文件中,可以添加以下配置:

location /purge {
    bproxy_cache_purge my_cache "$scheme$request_method$host$request_uri";
}

以上配置中,proxy_cache_purge指定了清除缓存的命令,并传递了缓存的名称和请求的URI。

二、动态内容缓存的实现细节

动态内容缓存是指Nginx在反向代理服务器的同时,也可以将动态生成的内容进行缓存,以减轻后端服务器的负载和提高响应速度。

  1. 启用动态内容缓存

首先需要在Nginx的配置文件中启用动态内容缓存的功能。在http模块内可以添加以下配置信息:

http {
    ...
    fastcgi_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off;

    server {
        ...
    }
}

以上配置中,fastcgi_cache_path指定了缓存的路径和相关参数,与反向代理缓存的配置类似。同样,我们使用了名为my_cache的缓存。

  1. 配置动态内容缓存的规则

在Nginx的配置文件中,也可以通过location指令来配置动态内容缓存的规则。例如,我们可以将指定的URL路径的动态内容进行缓存,具体的配置如下所示:

server {
    ...
    
    location /dynamic {
        fastcgi_cache my_cache;
        fastcgi_cache_valid 200 10m;
        fastcgi_cache_methods GET HEAD;
        fastcgi_cache_use_stale error timeout invalid_header http_500;
        fastcgi_cache_lock on;
        fastcgi_cache_lock_timeout 5s;
        fastcgi_pass backend_server;
    }
}

以上配置中,fastcgi_cache指定了使用哪个缓存,fastcgi_cache_valid指定了缓存的有效期,fastcgi_cache_methods指定了哪些HTTP方法会被缓存,fastcgi_cache_use_stale指定了当缓存过期时是否使用旧的缓存进行响应,fastcgi_cache_lock指定了是否启用缓存锁和锁的超时时间,fastcgi_pass指定了后端服务器的地址。

  1. 清除缓存

同样地,有时候需要手动清除缓存,可以使用fastcgi_cache_purge模块来实现。在Nginx的配置文件中,可以添加以下配置:

location /purge {
    fastcgi_cache_purge my_cache "$scheme$request_method$host$request_uri";
}

以上配置中,fastcgi_cache_purge

    Configurer les règles de cache du proxy inverse

    🎜Dans le fichier de configuration Nginx, vous pouvez configurer les règles de cache du proxy inverse via la directive location. Par exemple, nous pouvons mettre en cache le chemin URL spécifié. La configuration spécifique est la suivante : 🎜rrreee🎜Dans la configuration ci-dessus, proxy_cache spécifie le cache à utiliser, et proxy_cache_valid spécifie La période de validité du cache, proxy_cache_use_stale précise s'il faut utiliser l'ancien cache pour répondre lorsque le cache expire, proxy_cache_background_update précise s'il faut mettre à jour le cache en arrière-plan, proxy_pass spécifie l'adresse du serveur backend. 🎜
      🎜Vider le cache🎜🎜🎜Parfois, vous devez vider manuellement le cache, vous pouvez utiliser le module proxy_cache_purge pour y parvenir. Dans le fichier de configuration Nginx, vous pouvez ajouter la configuration suivante : 🎜rrreee🎜Dans la configuration ci-dessus, proxy_cache_purge spécifie la commande pour vider le cache, et transmet le nom du cache et l'URI demandé. 🎜🎜2. Détails de mise en œuvre de la mise en cache dynamique du contenu🎜🎜La mise en cache dynamique du contenu signifie que Nginx peut également mettre en cache le contenu généré dynamiquement tout en agissant comme un serveur proxy inverse pour réduire la charge sur le serveur back-end et améliorer la vitesse de réponse. 🎜🎜🎜Activer la mise en cache dynamique du contenu🎜🎜🎜Vous devez d'abord activer la fonction de mise en cache dynamique du contenu dans le fichier de configuration Nginx. Les informations de configuration suivantes peuvent être ajoutées dans le module http : 🎜rrreee🎜Dans la configuration ci-dessus, fastcgi_cache_path spécifie le chemin du cache et les paramètres associés, ce qui est similaire à la configuration du cache du proxy inverse. Encore une fois, nous utilisons un cache nommé my_cache. 🎜
        🎜Configurer les règles de mise en cache dynamique du contenu🎜🎜🎜Dans le fichier de configuration Nginx, vous pouvez également configurer les règles de mise en cache dynamique du contenu via la directive location. Par exemple, nous pouvons mettre en cache le contenu dynamique du chemin URL spécifié. La configuration spécifique est la suivante : 🎜rrreee🎜Dans la configuration ci-dessus, fastcgi_cache spécifie quel cache utiliser, fastcgi_cache_valid. code > Spécifie la période de validité du cache, fastcgi_cache_methods spécifie quelles méthodes HTTP seront mises en cache, fastcgi_cache_use_stale spécifie s'il faut utiliser l'ancien cache pour répondre lorsque le cache expire, fastcgi_cache_lock spécifie s'il faut activer le verrouillage du cache et le délai d'expiration du verrouillage, et fastcgi_pass spécifie l'adresse du serveur backend. 🎜
          🎜Vider le cache🎜🎜🎜De même, vous devez parfois vider manuellement le cache, vous pouvez utiliser le module fastcgi_cache_purge pour y parvenir. Dans le fichier de configuration Nginx, vous pouvez ajouter la configuration suivante : 🎜rrreee🎜Dans la configuration ci-dessus, fastcgi_cache_purge spécifie la commande pour vider le cache, et transmet le nom du cache et l'URI demandé. 🎜🎜En résumé, cet article analyse en détail les détails de mise en œuvre du cache proxy inverse et du cache de contenu dynamique de Nginx, et donne des exemples de code correspondants. En configurant et en utilisant correctement la fonction de mise en cache de Nginx, les performances et l'expérience utilisateur des applications Web peuvent être considérablement améliorées. 🎜

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:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn