2016-08-08 111 views
0

Ich versuche, statische Dateien auf einem Server zwischenzuspeichern, anstatt jedes Mal zum Upstream-Server gehen. Dieser Upstream-Server geschieht Cloudfront zu sein,Nginx nicht mit Proxy-Cache und Cloudfront

Hier ist meine nginx-Konfiguration:

nginx.conf http Kontext:

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/; 
} 

Ich dachte, dieses gearbeitete , aber ein Beispiel Antwort-Header zeigt dies:

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 

Es scheint sowohl CloudFront als auch den Cache auf dem Server zu treffen. Mache ich etwas falsch?

Danke,

Michael

Antwort

0

Wenn das Problem immer noch aktuell ist - ich habe eine Lösung gefunden. Im Allgemeinen sollte CloudFront vom Ladepfad der Assets ausgeschlossen werden und S3 Bucket sollte direkt als Datenquelle verwendet werden.

Lösung: https://dpb587.me/blog/2015/06/20/using-nginx-to-reverse-proxy-and-cache-s3-objects.html

ich meinem Fall nur eine Zeile hinzugefügt werden musste Cache magische Funktion zu erhalten:

# use google as dns 
    resolver 8.8.8.8; 

auch manchmal SELinux requres einige Tuning nginx (13: Zugriff verweigert) zu verhindern Fehler :

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