我想用Nginx反向代理网站www.gstatic.com。
基本上它可以工作,但如果我再次访问同一个链接,它将不会返回304。我在Nginx启用了缓存,并尝试设置etag和expires属性。 这是我的Nginx配置,
upstream gstatic {
server www.gstatic.com;
}
proxy_buffering on;
etag on;
proxy_temp_file_write_size 1024k;
proxy_temp_path /var/cache/nginx/temp;
proxy_cache_path /var/cache/nginx/cache levels=1:2 keys_zone=cache_one:100m inactive=19d max_size=5g;
server {
listen 80;
server_name gstatic.178.re;
resolver 8.8.8.8;
location / {
sub_filter "www.gstatic.com" "gstatic.178.re";
sub_filter "https" "http";
sub_filter_once off;
sub_filter_types *;
proxy_pass_header Server;
proxy_set_header Host www.gstatic.com;
proxy_set_header Accept-Encoding '';
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_pass http://gstatic;
proxy_cache cache_one;
proxy_cache_valid 200 304 365d;
proxy_cache_key $host$uri$is_args$args;
proxy_cache_min_uses 1;
expires max;
proxy_cache_revalidate on;
add_header X-Proxy-Cache $upstream_cache_status;
add_header Cache-Control "public";
if_modified_since before;
}
}
以下是一个用于测试的示例链接:http://gstatic.178.re/charts/loader.js
答案 0 :(得分:0)
我在提供的资源的响应标头中发现了几个问题。 首先,您违反了RFC之一的规则,其中包含:
HTTP / 1.1服务器不应发送多个过期日期 未来一年。
因此,请尽量减少max-age和Expires值以满足该要求。
其次,您在响应标头中没有ETag。