Я пытаюсь обслуживать страницу индекса с помощью nginx, используя его функции proxy_cache. При обычном просмотре с браузерами все работает нормально. Но когда я пытаюсь получить содержимое страницы с помощью curl или когда использую siege на странице индекса, nginx начинает работать не так, как я ожидал. Он передает запрос в apache, когда кеш страницы устарел.
Я не могу понять, почему nginx не создает новый кеш страницы индекса, когда он был запрошен с помощью curl или siege?
Вот часть nginx.conf:
proxy_cache_path /var/cache/nginx levels=2 keys_zone=pagecache:100m inactive=1m max_size=500m;
location = / {
set $o_uri $request_uri;
if ( $http_cookie !~ "mytestcookie" ) {
rewrite ^ /ng_cache last;
}
proxy_pass http://127.0.0.1:88;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /ng_cache {
internal;
root /home/$host/www;
proxy_cache pagecache;
proxy_cache_valid 200 301 302 304 1m;
proxy_hide_header "Set-Cookie";
proxy_ignore_headers "Cache-Control" "Expires";
proxy_pass http://127.0.0.1:88$o_uri;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
В proxy_hide_header Set-Cookie
строка в вашей конфигурации предполагает, что ваш бэкэнд возвращает заголовок Set-Cookie, который не позволит nginx кэшировать такой ответ по умолчанию. Вероятно, вы захотите добавить Set-Cookie в proxy_ignore_headers
в вашей конфигурации:
proxy_ignore_headers Cache-Control Expires Set-Cookie;
Видеть документы для подробностей.