ajp_cache_methods
指令 `ajp_cache_methods` 指定在 NGINX 使用 AJP 协议时可以被缓存的 HTTP 方法。
Support AJP protocol proxy with NGINX
·
httpserverlocation
语法ajp_cache_methods [GET | HEAD | POST];
默认值ajp_cache_methods GET HEAD;
上下文http, server, location
参数1+
说明
指令 ajp_cache_methods 定义了在 AJP 协议上下文中应当被考虑用于缓存响应的 HTTP 请求方法。默认情况下,它会缓存 GET 和 HEAD 方法的响应。如果用户指定 ajp_cache_methods POST,则对于 GET 和 HEAD 请求仍然会进行缓存,但对于 POST 请求的响应也会被缓存,前提是它们满足其他缓存指令定义的条件。此指令很重要,因为它允许细化何时以及哪些响应被存储在缓存中,从而优化性能和资源使用。
该指令可以接受多个方法作为参数,允许用户指定是否希望同时为 GET、HEAD 和 POST 方法开启缓存。然而,GET 和 HEAD 的缓存行为不能被禁用。这确保了默认行为与典型的 Web 服务器做法一致——这两种方法通常会产生可缓存的内容。使用此指令时需谨慎,尤其是对 POST,因为它通常与改变服务器状态的操作相关,如果把其响应缓存并重复使用,可能导致意外后果。
配置示例
http {
upstream tomcats {
server 127.0.0.1:8009;
keepalive 10;
}
server {
listen 80;
location / {
ajp_pass tomcats;
ajp_cache_methods GET HEAD POST;
}
}
}⚠
即使只指定了 POST,GET 和 HEAD 的缓存仍会发生。
⚠
对缓存 POST 响应应谨慎,因为它们可能不是幂等的,可能导致应用行为不正确。
⚠
确保你的缓存策略与应用的预期行为一致,特别是对于会改变状态的请求。