Hosting statico su Amazon S3 - Configurazione DNS


117

Sto lavorando a una piccola webapp (tutta lato client) e voglio ospitarla su Amazon S3. Ho trovato diverse guide su questo e sono riuscito a crearmi un bucket (con lo stesso nome del mio dominio), impostarlo come sito Web e caricare alcuni contenuti.

Dove sto lottando, e dove tutta la documentazione inizia a diventare un po 'vaga, è come configurare correttamente il mio DNS.

Tutto ciò che il mio registrar ( 123-reg ) poteva suggerire era l'inoltro web che mi dà miodominio.com.s3.amazonaws.com

Cosa devo configurare e dove (es. 123-reg / Amazon) posso ottenere un URL pulito?


Da quando è stata posta questa domanda le cose sono cambiate. È ora possibile ospitare il tuo sito su S # con un dominio principale, vedi per la guida qui: docs.aws.amazon.com/AmazonS3/latest/dev/…
pors

Risposte:


248

Sembra che tu abbia già fatto la maggior parte del lavoro. Per chiarezza, ripeterò questi passaggi solo per assicurarmi che sia impostato correttamente:

  1. Crea un bucket s3 utilizzando il nome del tuo dominio come nome del bucket (il nome del bucket deve essere www.example.com se desideri che il tuo sito sia example.com o www.example.com)

  2. Carica i tuoi contenuti nel bucket s3. Scegli un nome coerente per i file di indice del tuo sito web (index.html di solito). Puoi anche caricare una pagina personalizzata per gli errori 404 Not Found. Chiama questo 404.html. Concedi autorizzazioni di lettura a ogni file nel tuo sito Web in modo che il pubblico possa visualizzarlo. Non concedere autorizzazioni aggiuntive al bucket, ma solo ai file all'interno.

  3. Configura il tuo bucket come un sito web. Con la console AWS ( https://console.aws.amazon.com/s3/ ) puoi selezionare il tuo bucket, fare clic su proprietà, quindi selezionare la scheda "Sito web". Fare clic su abilitato e impostare il documento di indice su "index.html" e il documento di errore su "404.html". Dovrai anche impostare il tuo bucket con le autorizzazioni di accesso per consentire l'accesso tramite il web ( http://docs.amazonwebservices.com/AmazonS3/latest/dev/WebsiteAccessPermissionsReqd.html )

  4. Prendi nota dell'URL "Endpoint" nella scheda di configurazione del sito web. Qui è dove vive il tuo sito web. Puoi aprire il link in una nuova finestra e dovresti vedere il tuo sito web proprio come apparirà. Fai clic e assicurati che tutto funzioni come previsto.

È NECESSARIO utilizzare l'indirizzo dell'endpoint in tutti i passaggi seguenti. Il normale www.example.com.s3.amazonaws.com non funzionerà: devi utilizzare la versione regionale ( http://www.example.com.s3-website-us-east-1.amazonaws.com/ )

Ora possiamo configurare il DNS per darti un URL pulito e personalizzato.

Innanzitutto, mapperemo www.example.com al tuo sito.

Utilizzando gli strumenti del tuo provider DNS, (123-reg nel tuo caso) devi creare un record CNAME per mappare www.example.com a www.example.com.s3-website-us-east-1.amazonaws.com

Il CNAME è l'unica cosa di cui hai bisogno se vuoi solo www.example.com. La maggior parte delle persone desidera che "example.com" funzioni quindi è necessario un altro passaggio.

example.com è spesso indicato come un dominio vuoto o il record dell'apice del dominio. Il motivo per cui è un problema è che non può essere un CNAME. I CNAME funzionano solo su sottodomini come "www." Ciò rende più difficile indicare s3.

L'approccio usuale consiste nell'utilizzare un servizio per reindirizzare automaticamente qualsiasi richiesta che va a example.com in modo che punti a www.example.com. Questo raccoglierà quindi il tuo record CNAME e il tuo sito verrà servito da s3.

Il reindirizzamento automatico non è possibile con il semplice vecchio DNS, quindi devi utilizzare un altro servizio. Alcuni provider DNS offrono questo servizio insieme al loro DNS (godaddy lo fa, amazon route53 no. Non sono sicuro di 123-reg)

Se il tuo provider DNS non lo fa, ci sono alcuni servizi gratuiti. Uno che ho usato è http://wwwizer.com/naked-domain-redirect - non richiede alcuna registrazione o pagamento.

Per utilizzare questo tipo di servizio, devi creare un record DNS "A" per il tuo dominio vuoto. Per il servizio wwwizer.com, è necessario creare un record A per puntare example.com a 174.129.25.170. È tutto!

Quindi, con questa configurazione, se un utente digita example.com nel proprio browser, accadrebbe quanto segue:

  1. Query DNS: example.com -> 174.129.25.170 (servizio di wwwizer.com)
  2. Richiesta HTTP a 174.129.25.170 per example.com
  3. 174.129.25.170 reindirizza example.com -> www.example.com
  4. Query DNS: www.example.com -> CNAME a www.example.com.s3-website-us-east-1.amazonaws.com
  5. Query DNS: www.example.com.s3-website-us-east-1.amazonaws.com -> punta ad Amazon S3
  6. La richiesta HTTP per www.example.com è ora servita da Amazon S3

Godere!


2
Grazie mille per la chiarezza di tutto ciò! Ho apportato le modifiche, aspettando solo che si correggesse, incrociamo le dita e tutto funzionerà.
Merlin Mason

hmmm, ancora non sembra funzionare. Ecco uno screengrab della configurazione DNS - cl.ly/CP6U Il punto all'estremità sembra sospetto, non l'ho aggiunto lì e l'inserimento di quell'URL in un browser con il punto all'estremità mi dà un errore non trovato del secchio. Ho provato a rimuoverlo, ma ritorna una volta salvato e ho provato a sostituirlo con un / ma poi ottengo un errore non valido. Pensi che questo potrebbe essere un problema alla fine di 123 registri?
Merlin Mason

Ciao Merlino, ho provato a cercare il tuo nome di dominio (wpfill.me) e non vedo nessuno dei record nel tuo screenshot. 123-reg ha un passaggio separato "pubblicazione" o "commit"? Non sembra che la tua configurazione abbia avuto effetto.
secretmike

Hmmm, penso che ci debba essere un problema con 123-reg, ho provato a resettare i record DNS e ad aspettare 48 ore che si propagasse e ancora nessuna gioia. Ho quindi cambiato l'hosting DNS su Cloudflare e ho messo tutto in funzione in 20 minuti :) Grazie per il tuo aiuto, lo apprezzo davvero!
Merlin Mason


1

Credo che tu debba selezionare tutti i documenti nel tuo bucket, fare clic con il pulsante destro del mouse e scegliere "Rendi pubblico". Devi farlo anche ogni volta che qualcosa cambia nel secchio. Di solito faccio clic con il pulsante destro del mouse sul bucket, scelgo le proprietà, scelgo le autorizzazioni nel riquadro di destra, quindi aggiungo "Tutti come" beneficiario "e quindi do loro solo le autorizzazioni di" elenco ". Il resto del tuo articolo è eccellente. La parte relativa al dominio nudo è stata utile me risolvere i miei problemi. Puoi anche reindirizzare il dominio vuoto al dominio www all'interno di S3 in "Hosting di siti Web statici" È probabilmente il modo più semplice. Grazie ancora per tutto il tuo aiuto.

Tim


3
Questo passaggio manuale non è necessario se applichi una policy di bucket come descritto sopra.
tooluser

1

Aggiorna 2019

Ad oggi, la seguente impostazione DNS ha funzionato per far funzionare il sito Web statico di AWS S3:

Impostazione DNS per la mappatura del bucket


0

Dalla schermata DNS avanzato sul pannello di controllo 123-reg

  • Ho iniziato facendo clic sul pulsante "Reimposta DNS" alle impostazioni predefinite di 123-reg.

Questo mi ha dato quanto segue;

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

  • Ho quindi aggiunto questa voce

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

Dal pdf della guida Manage DNS si dice che "@ record" si riferisce al "tuo dominio nella sua forma più pura senza sottodominio", ovvero il dominio vuoto stackoverflow.com

Ma non menziona cosa sia il "* record", ho pensato che avrebbe catturato tutti i sottodomini e ho pensato che avrebbe potuto superare il record CNAME ma non sembra essere il caso.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.