Ich habe statischen Inhalt, der von Cloudflare bereitgestellt wird. Cloudflare verweist auf Amazon S3, um den statischen Inhalt aufzunehmen und über einen CNAME (cdn.mydomain.com) bereitzustellen. Der Bucket ist ordnungsgemäß eingerichtet und alles funktionierte monatelang einwandfrei, bis am Freitag in meinem Browser das Zeitlimit für Anfragen ablief. Ich habe überprüft, ob der Inhalt noch über S3 zugänglich ist, und ein Ticket mit Cloudflare geöffnet. Cloudflare berichtete, dass "es scheint, dass etwas bei Amazon wahrscheinlich Anfragen von unseren IPs blockiert" und dass die folgenden Meldungen in ihren Protokollen angezeigt wurden:
upstream timed out (110: Connection timed out) while reading response header from upstream cdn.mydomain.com
upstream prematurely closed connection while reading response header from upstream cdn.mydomain.com
Folgendes hatte ich bereits in meiner CORS-Datei.
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>Authorization</AllowedHeader>
</CORSRule>
Soll ich ein * in AllowedHeader einfügen? Muss ich die Cloudflare-IP-Adressen explizit benennen? Was fehlt mir, um den Block zu vermeiden?
Antworten:
Gibt es einen Grund, warum Sie keine Amazon CloudFront- Distribution verwenden, die von einem S3-Bucket unterstützt wird, um Ihre statischen Inhalte bereitzustellen? Sollte effizienter sein als CloudFlare -> S3, und wenn Amazon CloudFlare tatsächlich daran hindert, auf S3 zuzugreifen (obwohl dies nicht viel Sinn macht, warum sie dies tun würden), wäre dies für Sie kein Problem mehr.
Sie können auch Ihren Hostnamen cdn.mydomain.com auf [Distribution_ID] .cloudfront.net CNAME, um Ihr URL-Schema beizubehalten und den Übergang für Ihre Benutzer transparent zu halten. CloudFront funktioniert sehr ähnlich wie CloudFlare, da die IP-Adressen von BGP an den nächstgelegenen Standort weltweit weitergeleitet werden. Amazon verfügt jedoch intern über effizientere CloudFront -> S3-Abrufsysteme.
Soweit ich mich erinnere, ist die Übertragung zwischen S3 und CloudFront kostenlos, sodass Sie nicht viel mehr (wenn überhaupt) für die Bandbreite bezahlen würden.
quelle