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.
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, < Le paramètre code>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
的缓存。
在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
指定了后端服务器的地址。
有时候需要手动清除缓存,可以使用proxy_cache_purge
模块来实现。在Nginx的配置文件中,可以添加以下配置:
location /purge { bproxy_cache_purge my_cache "$scheme$request_method$host$request_uri"; }
以上配置中,proxy_cache_purge
指定了清除缓存的命令,并传递了缓存的名称和请求的URI。
二、动态内容缓存的实现细节
动态内容缓存是指Nginx在反向代理服务器的同时,也可以将动态生成的内容进行缓存,以减轻后端服务器的负载和提高响应速度。
首先需要在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
的缓存。
在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
指定了后端服务器的地址。
同样地,有时候需要手动清除缓存,可以使用fastcgi_cache_purge
模块来实现。在Nginx的配置文件中,可以添加以下配置:
location /purge { fastcgi_cache_purge my_cache "$scheme$request_method$host$request_uri"; }
以上配置中,fastcgi_cache_purge
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. 🎜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
. 🎜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. 🎜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!