English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Причины и решения проблем с кэшированием nginx

nginx.conf часть содержимого:

  proxy_temp_path  /nginx/cache/temp;
  proxy_cache_path /nginx/cache/path levels=1:2 keys_zone=cache_test:2048m inactive=7d max_size=10g;
......
 ......
    location ~ .(gif|jpg|jpeg|png)$ {
    proxy_ignore_headers X-Accel-Expires Expires Cache-Control Set-Cookie;
    proxy_pass http://upstreams;
    #Установить кэш cache_test;
    #Установить ключ кэширования
    #Установить, что ответы с кодом состояния 200 и 304 можно кэшировать, и время кэширования составляет 1 день
    proxy_cache_valid 200 304 1d;
    expires 30d;
  }

Причины не кэширования nginx

По умолчанию, кэширование nginx зависит от совместно принятого решения между сервером кэширования nginx и сервером источника. Сервер кэширования должен строго следовать заголовкам ответа сервера источника, чтобы определить, кэшировать ли ответ и как долго.

Основные заголовки следующие:

Cache-control: no-cache, no-store

Если эти два значения присутствуют, сервер кэширования nginx绝对不会 кэшировать.

Expires: 1980-01-01

Если дата早于 текущее время, кэширование не будет производиться.

Решение проблемы не кэширования

Метод 2.1:

Измените заголовки ответа программы или веб-сервера источника

Метод 2.2:

Прямо в nginx-прокси добавьте следующую строку:

proxy_ignore_headers X-Accel-Expires Expires Cache-Control Set-Cookie;

Обобщение

Вот и все, что есть в этой статье. Надеюсь, что контент статьи поможет вам в изучении или работе. Если у вас есть вопросы, оставляйте комментарии.

Основной курс
Давай посмотрим