Nginx Proxy Manager (NPM) 是一个基于Nginx的图形化管理工具,可以方便地实现反向代理、SSL证书管理和缓存等功能。下面我将介绍如何使用NPM来实现动态内容的缓存。
动态内容缓存是指对经常变化但不需要实时更新的内容进行缓存,以减轻服务器负载并提高响应速度。与静态内容缓存不同,动态内容缓存需要更精细的控制策略。
确保你已经安装并运行了Nginx Proxy Manager。可以通过Docker快速安装:
docker run -d \
--name=nginx-proxy-manager \
-p 80:80 \
-p 81:81 \
-p 443:443 \
-v npm_data:/data \
-v npm_letsencrypt:/etc/letsencrypt \
--restart unless-stopped \
jc21/nginx-proxy-manager:latest
http://服务器IP:81
)在代理主机的高级配置中添加缓存规则:
# 在"Advanced"选项卡中添加以下配置
proxy_cache_path /tmp/nginx_cache levels=1:2 keys_zone=my_cache:10m inactive=60m use_temp_path=off;
proxy_cache_key "$scheme$request_method$host$request_uri";
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;
proxy_cache_bypass $http_cache_control;
proxy_no_cache $http_pragma $http_authorization;
对于动态内容,通常需要更精细的控制:
# 在"Custom Locations"或"Advanced"中添加
location ~* \.php$ {
proxy_cache my_cache;
proxy_cache_valid 200 302 5m;
proxy_cache_valid 404 1m;
proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
proxy_cache_background_update on;
proxy_cache_lock on;
add_header X-Proxy-Cache $upstream_cache_status;
# 传递必要的头信息
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://backend;
}
X-Proxy-Cache
字段bash
curl -I http://yourdomain.com
proxy_cache_key "$scheme$request_method$host$request_uri$cookie_user";
location /dynamic-content {
proxy_cache my_cache;
proxy_cache_valid 200 1m;
proxy_pass http://backend;
}
location /real-time {
proxy_pass http://backend;
proxy_no_cache 1;
proxy_cache_bypass 1;
}
可以通过定期访问关键URL或使用脚本自动预热缓存。
proxy_cache_purge
模块实现按需清除缓存通过以上配置,你可以有效地利用Nginx Proxy Manager实现动态内容的缓存,显著提高网站性能同时保持内容的相对新鲜度。