2016-08-08 25 views
0

我想缓存服务器上的静态文件,而不是每次都去'上游'服务器。这种上游服务器碰巧的Cloudfront,nginx不使用代理缓存和云端

这里是我的nginx的配置:

nginx.conf HTTP上下文:

proxy_cache_key "$scheme$host$request_uri"; 
proxy_cache_path /var/spool/nginx levels=1:1 keys_zone=oly_zone:1000m; 
proxy_cache_use_stale updating; 
proxy_cache_valid 200 301 302 10m; 
proxy_cache_valid any 10s; 
proxy_cache oly_zone; 

website.conf:

location /gameimages/stock/ { 
    proxy_ignore_headers "Set-Cookie"; 
    proxy_hide_header "Set-Cookie"; 
    add_header X-Proxy-Cache $upstream_cache_status; 
    proxy_cache_valid 404 1s; 
    proxy_cache_valid any 15d; 
    proxy_cache oly_zone; 

    proxy_pass http://d34sdfsfsadfasdfmhbsdafirsdfsdffelaut.cloudfront.net/; 
} 

我想这个工作,但示例响应标题显示了这一点:

Accept-Ranges:bytes 
Age:11515 
Connection:keep-alive 
Content-Length:11577 
Content-Type:image/jpeg 
Date:Mon, 08 Aug 2016 19:25:16 GMT 
ETag:"57a47349-2d39" 
Last-Modified:Fri, 05 Aug 2016 11:06:49 GMT 
Server:nginx/1.4.1 
Via:1.1 3ba457b8dbcd4sadfsdfe93515e26caad.cloudfront.net (CloudFront) 
X-Amz-Cf-Id:N0Dlk5c28sdfsf5Cvfskb3-T6PRBfSXfEPsdfasfuOLW7SHa1hjQ== 
X-Cache:Hit from cloudfront 
X-Proxy-Cache:HIT 

它似乎同时击中了CloudFront和服务器上的缓存。难道我做错了什么?

感谢,

迈克尔

回答

0

如果问题仍然是实际的 - 我已经找到了解决方案。 一般而言,CloudFront应该从资产加载路径中排除,S3存储桶应直接用作数据源。

解决方案:https://dpb587.me/blog/2015/06/20/using-nginx-to-reverse-proxy-and-cache-s3-objects.html

我我的情况下,只有一条线不得不被添加到获得缓存魔法工作:

# use google as dns 
    resolver 8.8.8.8; 

有时也SELinux的requres一些调整,以防止nginx的(13:权限被拒绝)错误:

sudo setsebool httpd_can_network_connect on -P 
sudo semanage permissive -a httpd_t