Configurare l'inoltro URL basato su DNS in Amazon Route53 [chiuso]


140

Sto cercando di configurare l'inoltro in Amazon Route53. Il mio ultimo servizio DNS (Nettica) mi ha permesso di indirizzare le richieste a "aws.example.com" su "https://myaccount.signin.aws.amazon.com/console/".

Questa funzionalità è supportata da Route53?

Come riesce Nettica a raggiungere questo obiettivo? Inserisce uno o più record A, CNAME, PTR o TXT speciali?


La creazione di una distribuzione Cloudfront con l'URL come l'origine funziona anche. Basta puntare il dominio alla distribuzione Cloudfront da Route53 e assicurarsi di configurare correttamente i certificati TLS.
Deiwin,

Risposte:


325

Stavo incontrando esattamente lo stesso problema descritto da Saurav, ma avevo davvero bisogno di trovare una soluzione che non richiedesse altro che Route 53 e S3. Ho creato una guida pratica per il mio blog che illustra in dettaglio ciò che ho fatto.

Ecco cosa mi è venuto in mente.


Obbiettivo

Utilizzando solo gli strumenti disponibili in Amazon S3 e Amazon Route 53, crea un reindirizzamento URL che inoltra automaticamente http://url-redirect-example.vivekmchawla.com alla pagina di accesso della Console AWS con il metodo "MyAccount", che si trova su https : //myaccount.signin.aws.amazon.com/console/ .

Questa guida ti insegnerà a impostare l'inoltro dell'URL a qualsiasi URL, non solo a quelli di Amazon. Imparerai come impostare l'inoltro a cartelle specifiche (come "/ console" nel mio esempio) e come cambiare il protocollo di reindirizzamento da HTTP a HTTPS (o viceversa).


Primo passo: crea il tuo secchio S3

Apri la console di gestione S3 e fai clic su "Crea bucket"

Apri la console di gestione S3 e fai clic su "Crea bucket".


Secondo passaggio: assegna un nome al tuo bucket S3

Dai un nome al tuo secchio S3

  1. Scegli un nome di bucket. Questo passaggio è davvero importante! È necessario nominare il bucket ESATTAMENTE lo stesso dell'URL che si desidera impostare per l'inoltro. Per questa guida, userò il nome "url-redirect-example.vivekmchawla.com".

  2. Seleziona la regione più adatta a te. Se non lo sai, mantieni l'impostazione predefinita.

  3. Non preoccuparti di configurare la registrazione. Fai clic sul pulsante "Crea" quando sei pronto.


Passaggio 3: abilitare l'hosting di siti Web statici e specificare le regole di routing

Abilita l'hosting di siti Web statici e specifica le regole di routing

  1. Nella finestra delle proprietà, apri le impostazioni per "Hosting statico di siti Web".
  2. Seleziona l'opzione "Abilita hosting di siti Web".
  3. Immettere un valore per "Documento indice". Questo oggetto (documento) non sarà mai servito da S3 e non dovrai mai caricarlo. Usa solo il nome che desideri.
  4. Apri le impostazioni per "Modifica regole di reindirizzamento".
  5. Incolla il seguente frammento XML nella sua interezza.

    <RoutingRules>
      <RoutingRule>
        <Redirect>
          <Protocol>https</Protocol>
          <HostName>myaccount.signin.aws.amazon.com</HostName>
          <ReplaceKeyPrefixWith>console/</ReplaceKeyPrefixWith>
          <HttpRedirectCode>301</HttpRedirectCode>
        </Redirect>
      </RoutingRule>
    </RoutingRules>
    

Se sei curioso di sapere cosa sta facendo l'XML sopra, visita la documentazione di AWM per "Sintassi per specificare le regole di routing" . Una tecnica bonus (non illustrata qui) viene inoltrata a pagine specifiche nell'host di destinazione, ad esempio http://redirect-destination.com/console/special-page.html. Leggi <ReplaceKeyWith>sull'elemento se hai bisogno di questa funzionalità.


Passaggio 4: prendere nota dell'endpoint del bucket di reindirizzamento

Prendi nota dell'endpoint del bucket di reindirizzamento

Prendi nota dell'endpoint dell'hosting di siti Web statici che Amazon ha creato automaticamente per questo bucket. Ne avrai bisogno per dopo, quindi evidenzia l'intero URL, quindi copialo e incollalo nel blocco note.

ATTENZIONE! A questo punto puoi effettivamente fare clic su questo link per verificare se le tue Regole di reindirizzamento sono state inserite correttamente, ma fai attenzione! Ecco perché...

Supponiamo che tu abbia inserito un valore errato all'interno dei <Hostname>tag nelle Regole di reindirizzamento. Forse hai digitato per errore myaccount.amazon.com, invece di myaccount.signin.aws.amazon.com. Se fai clic sul link per testare l'URL dell'endpoint, AWS reindirizzerà felicemente il tuo browser all'indirizzo sbagliato!

Dopo aver notato l'errore, probabilmente modificherai le <Hostname>Regole di reindirizzamento per correggere l'errore. Sfortunatamente, quando provi a fare di nuovo clic sul link, molto probabilmente finirai per essere reindirizzato all'indirizzo sbagliato! Anche se hai corretto la <Hostname>voce, il tuo browser memorizza nella cache la voce precedente (errata!). Ciò accade perché stiamo utilizzando un reindirizzamento HTTP 301 (permanente), che i browser come Chrome e Firefox memorizzeranno nella cache per impostazione predefinita.

Se copi e incolli l'URL dell'endpoint in un altro browser (o svuoti la cache in quello corrente), avrai un'altra possibilità di vedere se la tua <Hostname>voce aggiornata è finalmente quella corretta.

Per sicurezza, se vuoi testare l'URL dell'endpoint e le regole di reindirizzamento, devi aprire una sessione di navigazione privata, come "Modalità di navigazione in incognito" in Chrome. Copia, incolla e testa l'URL dell'endpoint in modalità di navigazione in incognito e tutto ciò che verrà memorizzato nella cache scomparirà una volta chiusa la sessione.


Passaggio 5: apri la console di gestione Route53 e vai ai set di record per la tua zona ospitata (nome dominio)

Apri la console di gestione Route 53 per aggiungere set di record alla tua zona ospitata

  1. Seleziona la zona ospitata (nome di dominio) che hai usato quando hai creato il bucket. Da quando ho chiamato il mio bucket "url-redirect-example.vivekmchawla.com", selezionerò la zona ospitata da vivekmchawla.com.
  2. Fare clic sul pulsante "Vai a set di record".

Passaggio 6: fare clic sul pulsante "Crea set di record"

Fai clic sul pulsante Crea set di record

Facendo clic su "Crea set di record" si aprirà la finestra Crea set di record sul lato destro della console di gestione Route53.


Passaggio 7: creare un set di record CNAME

Crea un set di record CNAME

  1. Nel campo Nome, inserisci la parte del nome host dell'URL che hai usato per nominare il tuo bucket S3. La "parte del nome host" dell'URL è tutto a SINISTRA del nome della tua zona ospitata. Ho chiamato il mio bucket S3 "url-redirect-example.vivekmchawla.com" e la mia zona ospitata è "vivekmchawla.com", quindi la parte del nome host che devo inserire è "url-redirect-example".

  2. Seleziona "CNAME - Nome canonico" per il tipo di questo set di record.

  3. Per il valore, incolla l'URL dell'endpoint del bucket S3 che abbiamo creato nel passaggio 3.

  4. Fai clic sul pulsante "Crea set di record". Supponendo che non vi siano errori, ora sarai in grado di vedere un nuovo record CNAME nell'elenco dei set di record della tua zona ospitata.


Passaggio 8: verifica il nuovo reindirizzamento dell'URL

Apri una nuova scheda del browser e digita l'URL che abbiamo appena impostato. Per me questo è http://url-redirect-example.vivekmchawla.com . Se tutto ha funzionato correttamente, dovresti essere inviato direttamente a una pagina di accesso AWS.

Poiché abbiamo utilizzato l' myaccount.signin.aws.amazon.comalias come URL di destinazione del nostro reindirizzamento, Amazon sa esattamente a quale account stiamo cercando di accedere e ci porta direttamente lì. Questo può essere molto utile se si desidera fornire un collegamento di accesso AWS breve, pulito e con marchio a dipendenti o appaltatori.

Tutto fatto!  Il tuo inoltro URL ti porterà alla pagina di accesso di AWS.


conclusioni

Personalmente adoro i vari servizi AWS, ma se hai deciso di migrare la gestione DNS su Amazon Route 53, la mancanza di un semplice inoltro di URL può essere frustrante. Spero che questa guida abbia contribuito a rendere un po 'più semplice l'impostazione dell'inoltro URL per le zone ospitate.

Se desideri saperne di più, dai un'occhiata alle seguenti pagine dal sito della documentazione di AWS.

Saluti!


15
+1 per questa soluzione assolutamente intelligente - grazie mille per aver dedicato del tempo a compilare una guida epica passo dopo passo, ho aggiornato la mia risposta per indirizzare i futuri lettori a quelli di conseguenza!
Steffen Opel,

23
Nota :: Per coloro che desiderano reindirizzare i domini di root: esempio.org -> esempio.com - fare tutto allo stesso modo tranne utilizzare A Record con "Alias: Sì" abilitato. Quindi selezionare il bucket come destinazione.
JaredBroad,

10
Ottima soluzione Ma ho riscontrato un problema usando https per l'URL originale. Se il bucket che sto reindirizzando è dev.example.com, re-direct funziona alla grande per http: // dev.example.com ma non riesce per https: // dev.example.com. Non ho trovato una soluzione per questo problema.
Greg,

4
@Greg Penso che potrebbe avere qualcosa a che fare con il modo in cui Amazon gestisce HTTPS per S3. Sfortunatamente, quando si utilizza un CNAME per accedere a un bucket S3, non è possibile forzare SSL aggiungendo "https" perché Amazon non ospita un certificato per "* .example.com". Poiché S3 non consentirà la connessione, non arriveremo mai alla logica di reindirizzamento. Sfortunatamente, non riesco a vedere una soluzione alternativa a questo.
Vivek M. Chawla,

17
C'è una nuova opzione "Reindirizza tutte le richieste a un altro nome host" sotto le opzioni bucker. Ho inserito l'URL del segno IAM e ha funzionato come un fascino, senza bisogno di XML.
Dan Milon,

145

Il supporto AWS ha indicato una soluzione più semplice. È sostanzialmente la stessa idea proposta da @Vivek M. Chawla, con un'implementazione più semplice.

AWS S3:

  1. Crea un bucket chiamato con il tuo dominio completo, ad esempio aws.example.com
  2. Nelle proprietà del bucket, seleziona Redirect all requests to another host namee inserisci il tuo URL: https://myaccount.signin.aws.amazon.com/console/

AWS Route53:

  1. Creare un set di record di tipo A. Cambia alias in Yes. Fare clic sul Alias Targetcampo e selezionare il bucket S3 creato nel passaggio precedente.

Riferimento: come reindirizzare i domini utilizzando Amazon Web Services

Documentazione ufficiale AWS: esiste un modo per reindirizzare un dominio a un altro dominio utilizzando Amazon Route 53?


16
Questo funziona alla grande per HTTP ma non HTTPS.
mythofechelon,

@mythofechelon Cosa intendi? Finora non ho avuto problemi con https. Se vuoi usare https con il tuo dominio (es: https: // aws.example.com), questo è un problema completamente diverso, perché avrai bisogno di un server con certificato ssl per poterlo fare.
Roberto Schneiders,


2
Questa Redirect all requests to another host nameopzione esiste ancora? Non riesco a vederlo quando vado nelle proprietà del bucket.
Aidan il

1
Questa dovrebbe essere la risposta corretta, è meglio fare riferimento ai componenti all'interno di AWS usando Alias ​​per scopi prestazionali anziché CNAME (che funziona ma non è l'approccio migliore).
Douglas Figueroa,

11

Sono stato in grado di utilizzare nginx per gestire il reindirizzamento 301 alla pagina di accesso di aws.

Vai alla tua cartella conf nginx (nel mio caso è /etc/nginx/sites-availablein cui creo un link simbolico /etc/nginx/sites-enabledper i file conf abilitati).

Quindi aggiungere un percorso di reindirizzamento

server {
  listen 80;
  server_name aws.example.com;
  return 301 https://myaccount.signin.aws.amazon.com/console;
}

Se stai usando nginx, molto probabilmente avrai blocchi di server aggiuntivi (host virtuali nella terminologia di Apache) per gestire l'apice della tua zona (esempio.com) o comunque lo hai configurato. Assicurati di averne uno impostato come server predefinito.

server {
  listen 80 default_server;
  server_name example.com;
  # rest of config ...
}

In Route 53, aggiungi un A recordfor aws.example.come imposta il valore sullo stesso IP utilizzato per l'apice della tua zona.


Ancora meglio sarebbe usare un record di alias per indicare il bilanciamento del carico elastico di fronte a questa macchina.
Maletor,

9

Aggiornare

Mentre la mia risposta originale di seguito è ancora valida e potrebbe essere utile per comprendere la causa dell'inoltro di URL basato su DNS non disponibile immediatamente tramite Amazon Route 53 , raccomando vivamente di dare un'occhiata alla soluzione indiretta completamente intelligente di Vivek M. Chawla nel frattempo introdotta Supporto Amazon S3 per reindirizzamenti di siti Web e raggiungimento di un server autonomo inferiore e quindi soluzione gratuita all'interno di AWS solo in questo modo.

  • L'implementazione di una soluzione automatizzata per generare tali reindirizzamenti viene lasciata come esercizio per il lettore, ma si prega di rendere omaggio alla risposta epica di Vivek pubblicando la soluzione;)

Risposta originale

Nettica deve eseguire una soluzione di reindirizzamento personalizzata per questo, ecco il problema:

È possibile creare un alias CNAME come aws.example.comper myaccount.signin.aws.amazon.com, tuttavia DNS non fornisce alcun supporto ufficiale per l'alias di una sottodirectory come consolein questo esempio.

  • È un peccato che AWS non sembri semplicemente farlo di default quando si colpisce https://myaccount.signin.aws.amazon.com/(ho appena provato), perché risolverebbe immediatamente il tuo problema e avrebbe molto senso in primo luogo; inoltre, dovrebbe essere abbastanza facile da configurare alla loro estremità.

Per questo motivo alcuni provider DNS hanno apparentemente implementato una soluzione personalizzata per consentire i reindirizzamenti alle sottodirectory; Immagino che stiano fondamentalmente facilitando un alias CNAME per un proprio dominio e stanno reindirizzando nuovamente da lì alla destinazione finale tramite un reindirizzamento HTTP 3xx immediato .

Quindi, per ottenere lo stesso risultato, avresti bisogno di un servizio HTTP in esecuzione per eseguire questi reindirizzamenti, che non è la soluzione semplice che ci si aspetterebbe ovviamente. Forse / Spero che qualcuno possa escogitare un approccio ancora più intelligente.


3
I CNAME sono alias e non reindirizzano.
ejain,

@ejain - hai ragione ovviamente, l'ho corretto di conseguenza (all'epoca doveva aver perso la notifica); grazie per aver sottolineato questo fraseggio potenzialmente fuorviante!
Steffen Opel,

0

Se continui ad avere problemi con l'approccio semplice, creando un bucket vuoto, quindi Redirect all requests to another host namein Web hosting statico nelle proprietà tramite la console. Assicurati di aver impostato 2 record A in route53, uno per final-destination.come uno per redirect-to.final-destination.com. Le impostazioni per ognuna di queste saranno identiche, ma il nome sarà diverso in modo che corrisponda ai nomi impostati per i tuoi bucket / URL.

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.