如何在 NGINX 中读取 apache 标头?

如何在 NGINX 中读取 apache 标头?

我已经设置 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 中做任何技巧了。

相关内容