nginx 1.8.1 не кэширует с заголовком Vary Accept

У меня странное поведение кеширования nginx. Есть 2 отзыва. Первый перестал кэшировать, когда я обновил сервер с 1.6 до 1.8.1, другой кеширует, как и раньше. Первый (сломанный) имеет следующие заголовки ответа:

Разрешить → GET, HEAD, OPTIONS

Соединение → keep-alive

Content-Encoding → gzip

Content-Language → ru

Content- Тип → application / json

Дата → Вт, 15 марта 2016 г. 07:31:53 GMT

Сервер → nginx / 1.8.1

Передача-кодирование → фрагментировано

Различное → Принять, принять -Language, Cookie, Accept-Encoding

X-Frame-Options → SAMEORIGIN

Другой ответ (который работает, как я ожидал) имеет следующие заголовки:

Соединение → keep-alive

Content-Encoding → gzip

Content-Language → ru

Content-Type → application / json

Дата → Вт, 15 марта 2016 г. 07:32:40 GMT

Сервер → nginx / 1.8.1

Transfer-Encoding → chunked

Vary → Accept-Language, Cookie, Accept-Encoding

X-Frame-Options → SAMEORIGIN

Есть ни куки, ни заголовок Accept в первом случае, но только

proxy_ignore_headers Vary

спас ситуацию. С ним хорошо работает. Похоже на магию. Но что было не так, что мне не хватало? Ниже приведены текущие настройки:

proxy_pass    http://localhost:7050;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
limit_req zone=banka burst=5 nodelay;
proxy_cache   cache;
proxy_cache_valid 5m;
proxy_ignore_headers Vary;
2
задан 17 March 2016 в 18:22
1 ответ

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

В исходном коде Nginx установлено не более 42 символов, используемых Vary заголовки. В моем случае 51 символ, поэтому мои заголовки Vary обрабатываются как Vary: * (no-cache). Установка максимального значения 84 устранила это для меня.

Эта статья объясняет это более подробно.

https://thedotproduct.org/nginx-vary-header-handling/

Благодарность парню, разместившему эту короткую статью.

2
ответ дан 3 December 2019 в 11:33

Теги

Похожие вопросы