Statisches Hosting unter Amazon S3 - DNS-Konfiguration


117

Ich arbeite an einer kleinen Webanwendung (alle clientseitig), die ich auf Amazon S3 hosten möchte. Ich habe mehrere Anleitungen dazu gefunden und es geschafft, mir einen Bucket (mit demselben Namen wie meine Domain) zu erstellen, ihn als Website festzulegen und Inhalte hochzuladen.

Wo ich Probleme habe und wo die gesamte Dokumentation etwas vage wird, ist die richtige Konfiguration meines DNS.

Alles, was mein Registrar ( 123-reg ) vorschlagen konnte, war eine Webweiterleitung, die mir mydomain.com.s3.amazonaws.com gibt

Was muss ich konfigurieren und wo (dh 123-reg / Amazon) kann ich eine saubere URL erhalten?


Seit diese Frage gestellt wurde, haben sich die Dinge geändert. Es ist jetzt möglich, Ihre Site auf S # mit einer Root-Domain zu hosten. Eine
Anleitung finden Sie

Antworten:


248

Klingt so, als hätten Sie den größten Teil der Arbeit bereits erledigt. Aus Gründen der Übersichtlichkeit werde ich diese Schritte noch einmal durchgehen, um sicherzustellen, dass Sie richtig eingerichtet sind:

  1. Erstellen Sie einen S3-Bucket mit Ihrem Domain-Namen als Bucket-Namen (Ihr Bucket-Name sollte www.example.com sein, wenn Ihre Site example.com oder www.example.com sein soll).

  2. Laden Sie Ihre Inhalte in den s3-Bucket hoch. Wählen Sie einen konsistenten Namen für Ihre Website-Indexdateien (normalerweise index.html). Sie können auch eine benutzerdefinierte Seite für 404 Not Found-Fehler hochladen. Nennen Sie dies 404.html. Geben Sie jeder Datei auf Ihrer Website Leseberechtigungen, damit die Öffentlichkeit sie anzeigen kann. Geben Sie dem Bucket keine zusätzlichen Berechtigungen, sondern nur die darin enthaltenen Dateien.

  3. Konfigurieren Sie Ihren Bucket als Website. Mit der AWS-Konsole ( https://console.aws.amazon.com/s3/ ) können Sie Ihren Bucket auswählen, auf Eigenschaften klicken und dann die Registerkarte "Website" auswählen. Klicken Sie auf aktiviert und setzen Sie Ihr Indexdokument auf "index.html" und Ihr Fehlerdokument auf "404.html". Sie müssen Ihren Bucket auch mit Zugriffsberechtigungen einrichten, um den Zugriff über das Web zu ermöglichen ( http://docs.amazonwebservices.com/AmazonS3/latest/dev/WebsiteAccessPermissionsReqd.html ).

  4. Notieren Sie sich die URL "Endpunkt" auf der Registerkarte "Website-Konfiguration". Hier lebt Ihre Website. Sie können den Link in einem neuen Fenster öffnen und sollten Ihre Website so sehen, wie sie aussehen wird. Klicken Sie sich um und stellen Sie sicher, dass alles wie erwartet funktioniert.

Sie MÜSSEN die Endpunktadresse in allen folgenden Schritten verwenden. Das normale www.example.com.s3.amazonaws.com funktioniert nicht - Sie müssen die regionale Version verwenden ( http://www.example.com.s3-website-us-east-1.amazonaws.com/). )

Jetzt können wir das DNS so einrichten, dass Sie eine saubere, benutzerdefinierte URL erhalten.

Zunächst ordnen wir Ihrer Website www.example.com zu.

Mithilfe der Tools Ihres DNS-Anbieters (in Ihrem Fall 123-reg) müssen Sie einen CNAME-Eintrag erstellen, um www.example.com www.example.com.s3-website-us-east-1.amazonaws.com zuzuordnen

Der CNAME ist das einzige, was Sie benötigen, wenn Sie nur www.example.com möchten. Die meisten Leute möchten auch, dass "example.com" funktioniert, also brauchen wir einen weiteren Schritt.

example.com wird häufig als nackte Domain oder als Apex-Datensatz der Domain bezeichnet. Der Grund, warum es ein Problem ist, ist, dass es kein CNAME sein kann. CNAMEs funktionieren nur in Subdomains wie "www". Dies macht es schwieriger, auf s3 zu zeigen.

Der übliche Ansatz besteht darin, einen Dienst zu verwenden, um automatisch jede Anfrage an example.com umzuleiten, die auf www.example.com verweist. Dadurch wird Ihr CNAME-Eintrag abgerufen und Ihre Site wird von s3 aus bedient.

Die automatische Umleitung ist mit einfachem altem DNS nicht möglich, sodass Sie einen anderen Dienst verwenden müssen. Einige DNS-Anbieter bieten diesen Dienst zusammen mit ihrem DNS an (Godaddy, Amazon Route53 nicht. Nicht sicher über 123-reg)

Wenn Ihr DNS-Anbieter dies nicht tut, gibt es einige kostenlose Dienste. Eine, die ich verwendet habe, ist http://wwwizer.com/naked-domain-redirect - es ist keine Registrierung oder Zahlung erforderlich.

Um diese Art von Dienst nutzen zu können, müssen Sie einen DNS-Eintrag "A" für Ihre nackte Domain erstellen. Für den Dienst wwwizer.com müssten Sie einen A-Datensatz erstellen, um example.com auf 174.129.25.170 zu verweisen. Das ist alles!

Wenn ein Benutzer bei diesem Setup example.com in seinen Browser eingibt, geschieht Folgendes:

  1. DNS-Abfrage: example.com -> 174.129.25.170 (Dienst von wwwizer.com)
  2. HTTP-Anfrage an 174.129.25.170 für example.com
  3. 174.129.25.170 leitet example.com -> www.example.com weiter
  4. DNS-Abfrage: www.example.com -> CNAME an www.example.com.s3-website-us-east-1.amazonaws.com
  5. DNS-Abfrage: www.example.com.s3-website-us-east-1.amazonaws.com -> verweist auf Amazon S3
  6. Die HTTP-Anfrage für www.example.com wird jetzt von Amazon S3 bereitgestellt

Genießen!


2
Vielen Dank für die Klarheit all dessen! Ich habe die Änderungen vorgenommen und nur darauf gewartet, dass sie richtig funktionieren. Ich drücke die Daumen, alles wird funktionieren.
Merlin Mason

hmmm, scheint immer noch nicht zu funktionieren. Hier ist ein Screenshot der DNS-Konfiguration - cl.ly/CP6U Der Punkt am Ende scheint verdächtig zu sein. Ich habe ihn dort nicht hinzugefügt. Wenn Sie diese URL in einen Browser mit dem Punkt am Ende einfügen, wird ein nicht gefundener Fehler angezeigt. Ich habe versucht, es zu entfernen, aber es kommt zurück, sobald ich es gespeichert habe, und ich habe versucht, es durch ein / zu ersetzen, aber dann erhalte ich einen ungültigen Fehler. Denken Sie, dass dies am Ende von 123-regs ein Problem sein könnte?
Merlin Mason

Hallo Merlin, ich habe versucht, Ihren Domain-Namen (wpfill.me) nachzuschlagen, und ich sehe keinen der Einträge in Ihrem Screenshot. Hat 123-reg einen separaten Schritt "Veröffentlichen" oder "Festschreiben"? Es scheint nicht, dass Ihre Konfiguration wirksam geworden ist.
secretmike

Hmmm, ich denke, es muss ein Problem mit 123-reg geben. Ich habe versucht, die DNS-Einträge zurückzusetzen und 48 Stunden darauf zu warten, dass sie sich verbreiten, und immer noch keine Freude. Ich habe dann das DNS-Hosting auf Cloudflare umgestellt und das Ganze in 20 Minuten zum Laufen gebracht :) Vielen Dank für Ihre Hilfe, ich weiß es wirklich zu schätzen!
Merlin Mason


1

Ich glaube, Sie müssen alle Dokumente in Ihrem Bucket auswählen, mit der rechten Maustaste klicken und "Öffentlich machen" auswählen. Sie müssen dies jedes Mal tun, wenn sich auch im Eimer etwas ändert. Normalerweise klicke ich dann mit der rechten Maustaste auf den Bucket, wähle Eigenschaften aus, wähle Berechtigungen im rechten Bereich aus, füge dann "Jeder als" Berechtigter "hinzu und erteile ihnen nur" Listen "-Berechtigungen. Der Rest Ihres Artikels ist ausgezeichnet. Der Teil über die nackte Domain hat geholfen Ich kann meine Probleme lösen. Sie können die nackte Domain auch in S3 unter "Static Website Hosting" auf die WWW-Domain umleiten lassen. Dies ist wahrscheinlich der einfachste Weg. Nochmals vielen Dank für all Ihre Hilfe.

Tim


3
Dieser manuelle Schritt ist nicht erforderlich, wenn Sie eine Bucket-Richtlinie wie oben beschrieben anwenden.
Tooluser

1

Update 2019

Ab heute hat die folgende DNS-Einstellung für mich funktioniert, damit die statische AWS S3-Website funktioniert:

DNS-Einstellung für die Bucket-Zuordnung


0

Auf dem Bildschirm "Erweitertes DNS" in Ihrem 123-reg-Kontrollfeld

  • Ich begann mit dem Klicken auf die Schaltfläche "DNS zurücksetzen" auf die Standardeinstellungen für 123-reg.

Dies gab mir folgendes;

DNS EntryType       PriorityTTLDestination/Target
*                 A                                 81.xx.xx.xx              
@               A                                 81.xx.xx.xx              
@               MX          10               xx0.123-reg.co.uk
@               MX          20               xx1.123-reg.co.uk

  • Ich habe dann diesen Eintrag hinzugefügt

www          CNAME                    www.example.com.s3-website-us-east-1.amazonaws.com

Aus ihrem DNS-Leitfaden verwalten pdf geht hervor, dass sich "@ record" auf "Ihre Domain in ihrer reinsten Form ohne Subdomain" bezieht, dh auf die nackte Domain stackoverflow.com

Es wird jedoch nicht erwähnt, was der "* -Datensatz" ist. Ich nahm an, dass alle Subdomains abgefangen werden sollten, und dachte, er könnte den CNAME-Datensatz überschreiben, aber dies scheint nicht der Fall zu sein.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.