我已经设置 nginx 来绕过 ajax 请求(具有标头):
set $accel "0";
if ($http_x_requested_with) {
set $accel "1";
}
proxy_cache_bypass $accel;
它工作正常,但我希望能够缓存一些 ajax 请求。并且我希望能够在 PHP 中设置缓存时间。我尝试为此使用 X-Accel-Expires,并且如果存在 X-Accel-Expires 标头,我尝试重写绕过设置。
set $accel "0";
if ($http_x_requested_with) {
set $accel "1";
}
if ($http_x_accel_expires) {
set $accel "0";
}
proxy_cache_bypass $accel;
但它不起作用...似乎 nginx 没有在 $http_x_accel_expires 变量中获取 Apache 标头 X-Accel-Expires。
答案1
headerX-Accel-Expires
是PHP发送的响应头,nginx只是将请求头填充到$http
变量中。
您应该将缓存逻辑完全移到 PHP 中。如果您不想缓存来自 Ajax 的某些响应,则可以X-Accel-Expires: 0
在 PHP 中添加。
这样你就不需要在 nginx 中做任何技巧了。