proxy_cache_methods

proxy_cache_methods 指令指定在代理缓存中哪些 HTTP 方法可被缓存。 — NGINX HTTP Core

proxy_cache_methods
httpserverlocation
语法proxy_cache_methods method1 [method2 ...];
默认值GET HEAD
上下文http, server, location
模块NGINX HTTP Core
参数1+

说明

NGINX 中的 proxy_cache_methods 指令用于定义通过代理服务器处理请求时应被缓存的 HTTP 方法。默认情况下,通常只有 'GET' 和 'HEAD' 方法会被缓存,这是因为这些方法在典型使用场景下是安全的——重复请求不会改变资源状态。然而,某些应用可能需要对其他方法(例如 'POST' 或 'PUT')采用特定的缓存策略,例如在实施激进缓存策略或优化性能时。 该指令接受一个或多个 HTTP 方法名称作为参数,包括 'GET'、'HEAD'、'POST'、'PUT' 等。要启用对非默认方法的缓存,必须在此指令的参数中显式列出该方法。NGINX 会根据 proxy_cache_methods 中定义的方法过滤传入请求并适当缓存响应。需要注意的是,对非幂等方法进行缓存有其影响,如果管理不当可能导致意外行为。 使用该指令的重要一点是其上下文的灵活性,允许在 http、server 或 location 上下文中设置。可以根据应用需求在不同层级微调设置。在更改 HTTP 方法的缓存行为时应谨慎,因为这可能显著影响应用逻辑和资源交互。

配置示例

location /api { 
    proxy_pass http://backend;
    proxy_cache_methods GET POST;
}

缓存非幂等方法(例如 POST)可能导致意外的应用行为。

确保后端服务器支持对指定方法进行缓存,否则配置可能无法达到预期效果。

对敏感操作的缓存配置不当可能会无意中返回过期的数据。