Рейтинг:1

Как указать nginx учитывать кеш бэкэнда? uWSGI

флаг al

Это аналогичный вопрос но решение там не работает для меня.

У нас есть рекламный бэкэнд nginx и uWSGI. Нам нужно, чтобы nginx кэшировал ответ бэкенда в соответствии с тем, что находится в заголовке ответа.

Например, я бегу завиток -I https://example.com/api/project_data/. С использованием tcpdump Я вижу, что бэкэнд отвечает:

HTTP/1.1 200 ОК
Тип содержимого: приложение/json
Варьировать: Принять, Принять-Язык, Происхождение
Разрешить: ПОЛУЧИТЬ, ГОЛОВА, ОПЦИИ
Cache-Control: общедоступный, max-age=3600
Идентификатор X-запроса: 6aa...0d99
Параметры X-Frame: ЗАПРЕТИТЬ
X-Content-Type-Options: nosniff
Set-Cookie: longterm_session=45c6...67; Домен=example.com;

Тем не менее, ответ не кэшируется, и nginx обращается к бэкенду каждый раз, когда получает запрос.

Конфиг нгинкс:

http {
        uwsgi_cache_path /var/local/nginx_cachelevels=2:2 use_temp_path=off inactive=1h keys_zone=mycache:20m ;
....

  сервер {
    ....
    uwsgi_cache мой кэш;
    uwsgi_cache_key "$request_method$request_uri";

    расположение /api/project_data/ {
      add_header X-кэш $upstream_cache_status;
      add_header Прагма "общедоступная";
      uwsgi_pass 127.0.0.1:49002;
      включить uwsgi_params;

      uwsgi_cache мой кэш;
      uwsgi_cache_key "$request_method$request_uri";

    }

я продублировал uwsgi_cache просто на всякий случай, потому что некоторые директивы не наследуются в место расположения. Кроме того, есть x-кэш: МИСС в ответе, который nginx отправляет клиенту.

Что я делаю не так?

Рейтинг:0
флаг cn

Документы Nginx прямо указать что

Если заголовок включает поле «Set-Cookie», такой ответ не будет кэшироваться.

Вам нужно будет заставить ваше приложение не отправлять файлы cookie для кэширования соответствующего ответа по понятным причинам - файлы cookie являются дополнительными данными как для клиента, так и для сервера, например, например. тело ответа.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.