Назад | Перейти на главную страницу

Как читать заголовок apache в NGINX?

Я настроил 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 не получает заголовок Apache X-Accel-Expires в переменной $ http_x_accel_expires.

В X-Accel-Expires header - это заголовок ответа, отправленный PHP, а nginx заполняет только заголовки запроса в $http переменные.

Вам следует полностью перенести логику кеширования в PHP. Если вы не хотите кэшировать некоторые ответы от Ajax, вы добавляете X-Accel-Expires: 0 в PHP.

Таким образом, вам не нужно проделывать какие-либо трюки в nginx.