最新消息:

Nginx 缓存

Nginx (eNgine x) 是高性能 HTTP 和反向代理服务器,也是 IMAP/POP3/SMTP 代理服务器。由 Igor Sysoev 为 Rambler.ru 站点 (俄罗斯访问量第二) 开发,它已经在该站点运行超过四年。Igor 将源代码以类 BSD 许可证的形式发布。Nginx 因为稳定性、丰富的功能集、示例配置文件和低系统资源消耗而闻名。目前,国内各大门户网站已经部署了 Nginx,如新浪、网易、腾讯等;国内几个重要视频分享网站也部署了 Nginx。Nginx 技术在国内日趋火热,越来越多的网站开始部署 Nginx。Nginx 体积小、配置简单、扩展性强,通过众多开源模块发挥强大的功能。Nginx 性能远远超越传统的 Apache。Nginx 配合 PHP 的 FastCGI 模式,充分利用 PHP 天生的优势,具有极大的负载能力。Nginx 还是反向代理软件,可实现负载平衡和集群。在 Nginx 中可以实现传统的缓存以及基于 proxy_cache 的缓存。从 Nginx-0.7.44 版开始支持类似 Squid 的较正规的缓存功能,但是目前还处于开发阶段,支持相当有限。这个缓存把链接用 md5 编码经哈希后保存,所以支持任意链接,同时支持 404/301/302 这样的非 200 状态。

配置一个缓存空间的代码如下:

proxy_cache_path /path/to/cache levels =1:2 keys_zone =NAME:10m inactive =5m max_size =2m clean_time=1m;

注意: 这个配置在 server 标签外,levels 指定该缓存空间有两层 hash 目录,第一层 1 个字母,第二层 2 个字母,保存的文件名类似于 /path/to/cache/c/29/b7f54b2df7773722d382f4809d65029c;keys_zone 为这个空间起个名字,10m 指空间大小为 10MB;inactive 的 5m 指缓存默认时长为 5 分钟;max_size 的 2m 指单个文件超过 2MB 就不缓存;clean_time 指定 1 分钟清理一次缓存。

location / {
 proxy_pass https://www.ivicos.com/;
 proxy_cache NAME; #使用 NAME 这个 keys_zone
 proxy_cache_valid 200 302 1h; # 200 和 302 状态码保存 1 小时
 proxy_cache_valid 301 1d; # 301 状态码保存 1 天
 proxy_cache_valid any 1m; # 其他的保存 1 分钟
}

此外,还有基于第三方插件的缓存,例如新浪开发的针对 Nginx 0.6.39 及以下版本的 NCache 插件,利用 Nginx 和 Memcached 实现一部分类似 Squid 的缓存功能。此插件现在已经停止维护,并且在最新的 Nginx 稳定版本已经不兼容此插件。因 Nginx 集成的 proxy_cache 已经能满足大部分需求,所以其成为在 Nginx 服务器上实现缓存机制的最流行、最简单的选择。还有一些代理服务器及加速器等也能实现缓存管理,如 Squid、Vanish 等,但这类软件和实现方案都有一定的局限性。比如 Squid 部署虽然比较简单,但是处理能力低;而 Vanish 虽然处理能力和连接速度都很出色,但是在大负载下存在丢包问题。而 Apache 模块众多,功能丰富,却损失了处理速度和负载能力。我们应该根据自己实际需求,在充分测试的前提下,选择最合适我们的方案。

好了,Nginx 缓存 就分享到这里,非常感谢你的来访。如果你喜欢本站,请不要忘记收藏本站,以便下次继续访问;也可以 关注站长微博 随时获取最新动态。你的支持就是我最大的动力!

转载请注明:爱维科斯 » Nginx 缓存

支付宝打赏支付宝打赏 微信打赏微信打赏

如果文章对你有帮助,欢迎点击上方按钮打赏作者