2016-08-08 26 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