2016-05-11 4 views
3

Ich habe den Prozess des Erstellens einer CloudFront-Distribution mit dem Origin Domain-Namen, der auf meine Hauptanwendung Rails zeigt, wo sich Assets (Bilder, css, js, ect) unter /assets befinden.Wie schränke ich AWS CloudFont so ein, dass es nur Anfragen aus einem einzigen Verzeichnis meiner Domain bedient?

Die CloudFront-Verteilung spiegelt jedoch standardmäßig die gesamte Domäne (einschließlich dynamischer Seiten) wider.

Wie kann ich es auf nur den /assets Unterbaum beschränken?

PS Dies ist der Artikel, den ich folgende bin:

https://devcenter.heroku.com/articles/using-amazon-cloudfront-cdn

Dank!

Antwort

3

Da das Standard-Cache-Verhalten kann nicht (afaik) entfernt wird, scheint dies wie eine kluge "serverless" Lösung:

  • einen Eimer in S3 erstellen. Der Name spielt keine Rolle. Setze nichts hinein.

  • Fügen Sie Ihrer CloudFront-Verteilung einen zweiten Ursprung hinzu, indem Sie den neuen Bucket als Ursprung auswählen.

  • Erstellen Sie ein zweites Cache-Verhalten mit dem Pfadmuster /assets/*, das auf Ihren ursprünglichen Ursprung verweist.

  • Ändern Sie das Standard-Cache-Verhalten, um den neuen S3-Ursprung (den nicht verwendeten, leeren Bucket) zu verwenden.

  • Cloudfront werden Anfragen nach /assets/* zu Ihrem vorhandenen Server weiterleiten, wo sie als jetzt behandelt werden, sondern auch alle anderen Anforderungen an den leeren Eimer gesendet werden, die keinen Inhalt und keine Berechtigungen hat, so wird die Antwort 403 Forbidden sein .

  • Fügen Sie optional eine entsprechende Datei "robots.txt" zu diesem ansonsten leeren Bucket hinzu und machen Sie sie öffentlich lesbar, damit CloudFront alle Crawler, die Ihre CloudFront-Distribution besuchen, nicht indizieren kann sollte sie hoffentlich dazu auffordern, bereits indexierte Ergebnisse zu entfernen und nicht zu versuchen, die Assets oder andere Pfade, die sie möglicherweise bereits gelernt haben, zu indizieren, indem sie den zuvor veröffentlichten Inhalt unter der "falschen" URL crawlen.

The red line is origin (Rails) server

+1

Das heißt genial! Ich habe es gerade getestet und es funktioniert super! Vielen Dank –