Nginx忽略用于caching某些文件的查询string

我知道我的设置有点疯狂,但无论….

我在Openshift上设置了Nginx来caching地图查看器(对于地图查看器,您可以猜测目的:-)),这些地图查看器是从我的家庭networking(具有有限的带宽(愚蠢的无线连接!))提供的。 Openshift给我无限的带宽和1 GB的磁盘,这应该足以caching地图的stream行部分。

但是,地图查看器喜欢这样的请求:

http://localhost/tiles/world/t/-1_0/-27_23.png?1381358434308 

这使得nginx认为这个文件是不可caching的! 我已经做了一些Googlesearch,但是因为我在阅读和编写正则expression式时非常可怕,所以我想请求(从你这里)让nginx忽略.png文件的查询string,并且只提供没有请求参数。

以下是服务器configuration的相关部分:

 http { proxy_cache_path ${OPENSHIFT_RUNTIME_DIR}/cachefile levels=1:2 keys_zone=my-cache:599m max_size=700m inactive=250m; proxy_temp_path ${OPENSHIFT_RUNTIME_DIR}/cachefile/tmp; include mime.types; default_type application/octet-stream; # Format for our log files log_format main '$remote_addr - $remote_user [$time_local] $status ' '"$request" $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; sendfile on; keepalive_timeout 5; access_log ${OPENSHIFT_LOG_DIR}/access.log; port_in_redirect off; server_tokens off; tcp_nopush on; # off may be better for Comet/long-poll stuff tcp_nodelay off; # on may be better for Comet/long-poll stuff # Enable Gzip gzip on; gzip_http_version 1.0; gzip_comp_level 2; gzip_min_length 1100; gzip_buffers 4 8k; gzip_proxied any; gzip_types # text/html is always compressed by HttpGzipModule text/css text/javascript text/xml text/plain text/x-component application/javascript application/json application/xml application/rss+xml font/truetype font/opentype application/vnd.ms-fontobject image/svg+xml; gzip_static on; gzip_proxied expired no-cache no-store private auth; gzip_disable "MSIE [1-6]\."; gzip_vary on; server { listen ${OPENSHIFT_DIY_IP}:${OPENSHIFT_DIY_PORT}; #server_name *; location / { proxy_pass http://[CENSORED]; proxy_cache my-cache; proxy_cache_valid 200 302 60m; if ($scheme = https) { rewrite ^(.*)? http://$http_host$1 permanent; } } } } 

你可以使用proxy_cache_key 。 它定义了一个查找caching的密钥。 这个想法是关键不应该有查询string。

默认情况下 ,指令的值接近string

 proxy_cache_key $scheme$proxy_host$uri$is_args$args; 

所以你想设置

 proxy_cache_key $scheme$proxy_host$uri; 

强制caching。

来源: nginx邮件列表