当前位置:   article > 正文

Nginx 实战:Nginx缓存web服务

Nginx 实战:Nginx缓存web服务

在实战中利用Nginx配置缓存服务可以显著提升网站性能,减少后端服务器压力,并加快重复请求的响应时间。以下是配置Nginx作为web缓存服务器的基本步骤与实例:

1. 启用缓存模块

确保Nginx已经安装了ngx_http_proxy_modulengx_http_fastcgi_cache_module(根据需要缓存的内容是通过代理还是FastCGI处理的)。大多数现代Nginx版本默认已经包含这些模块。

2. 配置缓存路径

首先,你需要创建一个用于存储缓存文件的目录,并配置Nginx使用该目录:

proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m inactive=60m max_size=1g;
  • 1

这里:

  • /path/to/cache 是缓存文件的实际路径。
  • levels 设置缓存目录的层级结构。
  • keys_zone=my_cache:10m 定义了一个名为my_cache的键值区域,占用10MB内存来存储缓存元数据。
  • inactive=60m 表示缓存项在60分钟内未被访问则视为过期。
  • max_size 指定缓存的最大容量。

3. 开启缓存功能

在代理服务器或FastCGI服务器的上下文中启用缓存:

代理缓存示例(针对反向代理场景):

location / {
    proxy_pass http://upstream_server;
    proxy_cache my_cache; # 使用上面定义的缓存区域
    proxy_cache_key "$scheme$request_method$host$request_uri"; # 定义缓存键
    proxy_cache_valid 200 302 12h; # HTTP 200和302状态码的缓存有效期为12小时
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

FastCGI缓存示例(针对PHP-FPM等应用):

location ~ \.php$ {
    fastcgi_pass   127.0.0.1:9000;
    include        fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    
    fastcgi_cache_path /path/to/fastcgi_cache levels=1:2 keys_zone=my_fcgi_cache:10m inactive=1h;
    fastcgi_cache_key "$scheme$request_method$host$request_uri";
    fastcgi_cache_use_stale error timeout invalid_header http_500;
    fastcgi_cache_min_uses 1;
    fastcgi_cache_lock on;
    fastcgi_cache_valid 200 60m;
    
    fastcgi_cache my_fcgi_cache; # 使用FastCGI缓存区域
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

4. 清理缓存

可以通过发送 PURGE 请求或使用 Nginx 控制台命令清理缓存条目。例如,在 location 块中添加:

location ~ /purge(/.*) {
    allow ip_address_of_admin_server; # 允许特定IP地址执行purge操作
    deny all; # 其他所有请求禁止
    proxy_cache_purge my_cache $1$is_args$args;
}
  • 1
  • 2
  • 3
  • 4
  • 5

然后,通过 curl 发送 PURGE 请求:

curl -X PURGE http://your-site.com/path/to/resource
  • 1

5. 监控与管理

为了更好地管理和监控缓存,可以结合Nginx的状态接口以及相应的管理工具查看缓存命中率、缓存状态等信息。

请确保在实际生产环境中根据业务需求调整缓存策略,比如缓存过期时间、缓存控制规则等。同时注意不要缓存那些涉及用户私密信息或频繁变化的内容。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/311452?site
推荐阅读
相关标签
  

闽ICP备14008679号