我有 nginx/1.4.2 + Apache,我想用 nginx 缓存所有请求。此位置规则为 .php 创建缓存文件,但不为 .html 创建缓存文件:
location ~* \.(html|php)$ {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host my-host-name.com;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
add_header cache "html";
proxy_cache default;
proxy_cache_min_uses 1;
proxy_cache_valid 1d;
proxy_cache_key "$host|$request_uri";
proxy_hide_header "Set-Cookie";
proxy_ignore_headers "Cache-Control" "Expires";
}
标头“缓存”添加到响应中,因此位置有效。
我尝试过使用“location /” - 对存储在缓存中的带有 .php 扩展名(并且没有任何扩展名)的脚本的请求。对于扩展名为 .html 的脚本,nginx 不会创建缓存。
我找不到 nginx 忽略扩展名为 .html 的脚本的原因。将脚本重命名为 .php - 这不是办法。我有 CMS,它为带有 .html 的页面提供人类可读的 URL,Google 索引中有数千个页面,现在重命名将导致站点重新索引。