NginxWeb缓存配置详细说明以及案例
参考资料
Nginx Web缓存配置可以通过proxy_cache模块实现,用于缓存后端服务器的响应内容,减少后端服务器的负载并提高响应速度。以下是详细配置说明及案例:
1. 配置缓存路径
首先,需要在Nginx配置文件中定义缓存路径和缓存区域。
http {
# 定义缓存路径和缓存区域
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off;
server {
listen 80;
server_name example.com;
location / {
proxy_cache my_cache; # 使用定义的缓存区域
proxy_pass http://backend_server; # 后端服务器地址
proxy_cache_valid 200 302 10m; # 缓存200和302状态码的响应10分钟
proxy_cache_valid 404 1m; # 缓存404状态码的响应1分钟
proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504; # 在错误时使用过期的缓存
add_header X-Cache-Status $upstream_cache_status; # 添加缓存状态头信息
}
}
}2. 配置缓存键
缓存键用于区分不同的缓存内容。默认情况下,Nginx使用完整的URL作为缓存键,但可以通过proxy_cache_key指令自定义。
location / {
proxy_cache my_cache;
proxy_pass http://backend_server;
proxy_cache_key "$scheme$proxy_host$request_uri"; # 自定义缓存键
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;
add_header X-Cache-Status $upstream_cache_status;
}3. 配置缓存绕过
在某些情况下,可能需要绕过缓存,直接请求后端服务器。可以通过proxy_cache_bypass和proxy_no_cache指令实现。
location / {
proxy_cache my_cache;
proxy_pass http://backend_server;
proxy_cache_bypass $cookie_nocache $arg_nocache$arg_comment; # 当条件满足时绕过缓存
proxy_no_cache $cookie_nocache $arg_nocache$arg_comment; # 当条件满足时不缓存
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;
add_header X-Cache-Status $upstream_cache_status;
}4. 配置缓存清理
Nginx本身不提供直接的缓存清理功能,但可以通过第三方模块(如ngx_cache_purge)或手动删除缓存文件来实现。
location ~ /purge(/.*) {
proxy_cache_purge my_cache "$scheme$proxy_host$1"; # 清理指定URL的缓存
}5. 完整案例
以下是一个完整的Nginx Web缓存配置案例:
http {
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off;
server {
listen 80;
server_name example.com;
location / {
proxy_cache my_cache;
proxy_pass http://backend_server;
proxy_cache_key "$scheme$proxy_host$request_uri";
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;
proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
add_header X-Cache-Status $upstream_cache_status;
}
location ~ /purge(/.*) {
proxy_cache_purge my_cache "$scheme$proxy_host$1";
}
}
}6. 注意事项
确保缓存路径
/var/cache/nginx存在且Nginx有写入权限。根据实际需求调整缓存大小、缓存时间等参数。
使用
add_header X-Cache-Status $upstream_cache_status;可以方便地查看缓存命中情况。
通过以上配置,Nginx可以有效地缓存Web内容,提升网站性能。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
本文来自《西里网 . 宝塔 | 西里网》 -- 发布时间:2025-03-29
本页链接:https://bt.ciilii.com/show/news-101.html
原创声明:本篇文章均为西里网原创,由《DeepSeek-R1 模型》自动生成。内容真实性仅供参考学习。
本作品采用 知识共享署名—非商业性使用—相同方式共享 4.0 国际许可协议 (CC BY-NC-SA 4.0) 进行许可。
