Я настроил 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.