联系我们

info@serverion.com

给我们打电话

+1 (302) 380 3902

NGINX 配置倒带:Serverion 重现了代理缓存调整的遗失技巧

NGINX 配置倒带:Serverion 重现了代理缓存调整的遗失技巧

想要更快的网站和更低的服务器负载吗? NGINX 代理缓存是您的解决方案。通过存储频繁请求的内容,它可以加快交付速度并减轻源服务器的压力。 服务器 分享实用技巧来优化缓存设置,以获得更好的性能和可靠性。

关键要点:

  • 提供过时的内容:在服务器停机期间使用缓存的响应 proxy_cache_use_stale.
  • 背景更新:刷新缓存条目而不干扰用户使用 proxy_cache_background_update.
  • 防止过载:避免源服务器承受过多压力 代理缓存锁.

示例设置:

proxy_cache_path /var/cache/nginx 级别=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off; proxy_cache my_cache; proxy_cache_use_stale 更新; proxy_cache_background_update 开启; proxy_cache_lock 开启; 

这些设置可确保快速响应、高效利用资源和可靠交付内容。无论您运行的是 小型 VPS 或高流量服务器,这些技术可以帮助您充分利用 NGINX 代理缓存。

NGINX:使用反向代理进行内容缓存(超快……

NGINX

NGINX 代理缓存基础知识

Serverion 的缓存调整技术依赖于 NGINX 代理缓存的核心原理,该原理涉及存储和提供原始内容的副本。该系统使用三个主要组件:缓存路径、共享内存区域和缓存管理器,当缓存达到其限制时,缓存管理器会删除过期或最近最少使用 (LRU) 的文件。

NGINX 代理缓存操作

当 NGINX 处理请求时,它首先检查其共享内存区域,查看请求的内容是否已被缓存。这种内存查找可以快速确定缓存命中或未命中。作为参考,一个 1 MB 的键区域可以存储大约 8,000 个缓存键[1]。

缓存过程的工作原理如下:

  • NGINX 对请求进行散列以创建唯一的缓存键。
  • 它检查共享内存区域中是否存在该密钥。
  • 如果找到该键(缓存命中),则直接从缓存中提供内容。
  • 如果未找到密钥(缓存未命中),则从原始服务器获取内容并将其存储在缓存中以供将来使用。

Serverion 通过确保高效的键查找和使用目录层次结构组织缓存存储来优化性能。

核心缓存元素

指示 目的 影响
proxy_cache_path 指定缓存存储位置 确定内容的缓存位置和方式
代理缓存 为特定请求激活缓存 在位置块内启用缓存
键区 为缓存键分配共享内存 允许快速内存查找
不活跃 定义未使用的项目在缓存中保留的时间 控制缓存新鲜度和驱逐时间

为了最大限度地提高性能,使用两级 级别 层次结构,以防止文件系统速度变慢。此外,设置 使用临时路径=关闭 将缓存文件直接写入其最终位置,从而减少 I/O 开销。

NGINX 遵循源服务器的缓存指令。它只存储包含以下内容的响应: 过期 带有未来日期或 缓存控制 标题带有 最大年龄 值大于零。

您现在可以在 NGINX 代理缓存设置中应用这些原则。

[1] NGINX 文档:1 MB 的密钥区域可存储大约 8,000 个密钥的数据。

NGINX 代理缓存设置指南

了解如何逐步配置和优化 NGINX 代理缓存。

缓存参数设置

NGINX 代理缓存设置的基础是 proxy_cache_path 指令。以下是示例配置:

proxy_cache_path /var/cache/nginx 级别=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off; 

此配置创建一个两级目录结构,为 键区 (足够容纳大约 80,000 个密钥),设置最大缓存大小为 10 GB,并定义 60 分钟的非活动超时时间。

您还可以包含这些可选指令以实现更好的控制:

指示 目的
proxy_cache_use_stale 如果源服务器不可用,则提供过时的内容
proxy_cache_revalidate 使用条件 GET 请求来检查内容是否仍然有效
proxy_cache_background_update 在后台刷新过时的内容
代理缓存锁 防止多个请求压垮源服务器

定义这些参数后,根据预期的流量分配内存和磁盘空间。

缓存大小管理

为了有效地调整缓存大小,请同时考虑内存和磁盘的使用情况。具体方法如下:

  • 内存区域大小键区 以满足您的缓存需求:
    keys_zone=enterprise_cache:100m; # 支持大约 800,000 个缓存键 
  • 磁盘空间分配 调整 proxy_cache_path 指定最大磁盘空间:
    proxy_cache_path /var/cache/nginx 级别=1:2 keys_zone=enterprise_cache:100m max_size=10g inactive=24h use_temp_path=off; 

一旦设置了这些参数,您就可以初始化并启用缓存。

缓存初始化

微调参数和大小后,按照以下步骤激活缓存:

  1. 使用 proxy_cache_path 上面例子中的指令并添加 proxy_cache my_cache 到您的配置。
  2. 在相关 服务器 要么 位置 堵塞:
    代理缓存我的缓存; 
  3. 或者,可以包括前面提到的任何微调指令来增强性能。
  4. 通过添加自定义标头来监控缓存状态:
    添加标头X-Cache-Status $upstream_cache_status; 

笔记:根据 NGINX 文档,1 MB 键区 可存储约 8,000 个密钥。

此设置可确保您的缓存能够有效处理流量,同时保持调整的灵活性。

企业 NGINX 缓存管理

一旦设置了缓存路径和参数,就可以扩展设置以有效处理企业级流量。

缓存命中率优化

为了提高缓存效率,请启用条件请求和后台更新等功能:

proxy_cache_revalidate 开启;proxy_cache_background_update 开启;proxy_cache_use_stale 更新; 

通过配置以下设置来防止源服务器过载:

proxy_cache_lock 开启;proxy_cache_lock_timeout 5秒;proxy_cache_min_uses 2; 

对于高流量环境,将缓存负载分布在多个存储设备之间以提高性能:

split_clients "${request_uri}" $disk { 20% "/data/cache1"; 20% "/data/cache2"; 20% "/data/cache3"; 20% "/data/cache4"; * "/data/cache5"; } 

一旦您的缓存针对性能进行了优化,请集中精力确保它能够处理敏感内容。

缓存安全控制

为了保护敏感请求,请绕过缓存并根据需要自定义缓存键:

proxy_cache_bypass $http_pragma; proxy_cache_bypass $cookie_nocache; proxy_ignore_headers 缓存控制; 

对于个性化内容或基于cookie的请求,调整缓存键和支持的方法:

proxy_cache_key“$host$request_uri$cookie_user”; proxy_cache_methods 获取 HEAD POST; 

保护缓存后,请确保持续监控其性能。

缓存性能跟踪

使用状态定义监控缓存行为来微调您的设置:

地位 定义
更新 更新过程中提供过时的内容
重新验证 缓存内容已通过源服务器重新验证

分析 X-缓存状态 定期监控指标并调整指令以适应流量模式,从而获得最佳结果。

服务器的 NGINX 缓存配置

服务器

Serverion 根据每个工作负载的具体需求定制 NGINX 缓存设置。它们使用核心指令,针对 VPS 和 专用服务器.

按工作负载划分的缓存路径

VPS 工作负载

对于 VPS 设置,此配置在内存效率和快速响应时间之间取得平衡:

proxy_cache_path /data/nginx/cache 级别=1:2 keys_zone=SERVERCACHE:10m max_size=10g inactive=60m use_temp_path=off; proxy_cache_key “$scheme$request_method$host$request_uri”; proxy_cache_valid 200 302 60m; proxy_cache_valid 404 1m; 

键区 大小设置为容纳大约 80,000 个键。

专用服务器

对于专用服务器上的高流量应用程序,Serverion 使用跨多个 SSD 的分布式缓存系统:

proxy_cache_path /cache1 级别=1:2 keys_zone=cache1:10m; proxy_cache_path /cache2 级别=1:2 keys_zone=cache2:10m; proxy_cache_path /cache3 级别=1:2 keys_zone=cache3:10m; split_clients "${request_uri}" $cachezone { 33% "cache1"; 33% "cache2"; * "cache3"; } 

此设置使用以下方式将缓存写入均匀分布在三个 SSD 上: 拆分客户端 指示。

这些配置的具体值来自 Serverion 的缓存参数参考表。

基础设施设置

为了进一步提高性能,NGINX 工作器设置进行了调整,以有效处理缓存输入和输出:

worker_processes auto;worker_connections 1024;worker_cpu_affinity 0-3;# 将工作者与 CPU 核心对齐 

这些调整确保以最高效率传递缓存的响应。

摘要:NGINX 缓存调整结果

Serverion 提高了其整个系统的性能和可靠性 托管系统 通过详细的代理缓存调整。通过优化缓存层次结构、管理新鲜度设置和优化标头处理,他们保持了无缝的内容交付。实时 X-代理缓存 指标使 IT 团队能够有效地调整缓存设置,从而缩短响应时间、减少原始服务器的压力并提高企业运营的可用性。

相关博客文章

zh_CN