我尝试使用 nginx 的 proxy_cache 功能来提供索引页。使用浏览器进行普通浏览时,一切都运行良好。但是当我尝试使用 curl 获取页面内容或在索引页上使用 siege 时,nginx 开始工作,但效果不如我预期。当页面的缓存过期时,它会将请求进一步传递给 apache。
我不明白,为什么当使用 curl 或 siege 请求时,nginx 不创建索引页的新缓存?
以下是 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;
}