Нарушает ли отсутствие заголовка Set-Cookie Nginx proxy_cache?

У меня есть прокси-сервер Nginx для службы Node.js, который читает несколько файлов и генерирует ответ. Я хочу, чтобы Nginx добавил для меня базовые кеши:

      upstream my_http_servers {
    server 127.0.0.1:7001;
}

proxy_cache_path /var/cache/nginx-combo levels=1:2 keys_zone=my_cache:10m inactive=1w max_size=200m;

server {
    listen 80;

    proxy_cache my_cache;

    location / {

        # %%%%%%%%%%%%% SPECIAL LINE OF IGNORING %%%%%%%%%%%%%
        # proxy_ignore_headers Expires Cache-Control Set-Cookie Vary;

        # expires    24h;

        proxy_cache_lock on;
        proxy_cache_lock_timeout 10s;

        proxy_cache_key $scheme://$host$uri$is_args$query_string;
        proxy_cache_valid 200 1m;
        proxy_cache_valid any 5s;
        proxy_cache_use_stale error timeout http_500 http_502 http_503 http_504 http_429;
        proxy_read_timeout 10s;


        add_header Access-Control-Allow-Origin *;
        add_header Access-Control-Expose-Headers "X-Log, X-Reqid";
        add_header Access-Control-Max-Age 2592000;

        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   Host $http_host;
        add_header X-Proxy-Cache $upstream_cache_status;

        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass         http://my_http_servers;

    }
}

Я пытался нажать «Проверить», и он всегда отвечал:X-Proxy-Cache: EXPIREDилиX-Proxy-Cache: MISS, что вызвало сильное давление на Node.js, поскольку слишком много запросов не попало в кеш.

Затем я также протестировал его в Chrome и неожиданно обнаружилX-Proxy-Cache: HITбыло создано после первого ответа.

Итак, я догадался о разнице в заголовках HTTP отwrk/curlи Chrome вызвал разницу. После нескольких попыток я обнаружил, что разница имеет значение, и ее можно было решить с помощьюproxy_ignore_headers Set-Cookieчтобы гарантировать постоянное поведение Nginx с обеих сторон.

И вопрос, почему? Почему Nginx обрабатывает запросы с/безSet-Cookie: ...иначе? Что происходит, когда Nginx решает, использовать или нет кеш?

0 ответов

Другие вопросы по тегам