Enkel webhosting med Amazon S3 og HTTPS

Hej folkens!

I denne vejledning viser jeg dig, hvordan du er vært for et statisk websted med HTTPS på AWS med et brugerdefineret domæne. Alt dette er muligt ved hjælp af AWS gratis niveau.

De tjenester, vi skal bruge, medfører dog nogle mindre gebyrer. Generelt bør disse ikke overstige $ 1 pr. Måned.

Vi bruger en kombination af følgende AWS-tjenester:

—S3

- Rute53

- Certifikatleder

- CloudFront

Lad os komme ind i det!

Opsæt dine S3 skovle

For det første skal du bruge to S3-skovle , begge skal matche dit brugerdefinerede domænenavn med det andet inklusive www-underdomænet.

Spand 1:mywebsite.com

Spand 2:www.mywebsite.com

Den første spand (mywebsite.com) er den vigtigste spand til dit websted. Dette indeholder alle dine filer og aktiver til dit statiske websted.

Dernæst opsætter vi denne skovl til statisk webhosting. Du kan finde dette under fanen Egenskaber i spanden, og vi holder de standardindstillinger, der er angivet her, med indekset for webstedet indstillet til index.html.

Vi er også nødt til at gøre denne spand offentligt tilgængelig, da en brugers browser skal have adgang til spandens filer for at gengive webstedet. Vi kan gøre dette ved at indstille en Bucket-politik under fanen Tilladelser.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "PublicReadGetObject", "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "MY_BUCKET_ARN" } ]}

Dette er en simpel politik, der kun tillader offentlig læseadgang til objekter i spanden. Nu, hvis du går til det slutpunkt, der er defineret i den statiske hostingkonfiguration af spanden, skal du se dit websted.

Fremskridt! Men vi kan gøre det bedre end det.

Den anden spand (www.mywebsite.com) efterlader vi tom, men konfigurerer til at omdirigere til vores første spand ved hjælp af HTTP som protokol (vi gør det HTTPS senere).

Dine skovle er nu klar til brug!

Konfigurer domæner med Route53

Så dit websted er i gang, men kun tilgængeligt via bucket-slutpunktet og ikke dit brugerdefinerede domæne. Lad os ændre det.

Gå til rute53 . Hvis du har registreret dit domæne hos Amazon Registrar, skal du se, at der er oprettet en hostet zone for dig med to pladesæt. En til navneserver (NS) og en til SOA.

Alt, hvad vi skal gøre er at oprette yderligere to pladesæt for at pege på S3-spandendepunkterne.

For hvert rekordsæt:

- Type: A - IPv4-adresse

- Alias: Ja

- Alias ​​Target: S3-webstedets slutpunkt, der matcher det, du har angivet for Navn.

Nu kan vi gå til den brugerdefinerede url ... og voilà!

Vi er næsten der, men der er en sidste ting, vi mangler ...

Bemærk : Hvis dit domæne er registreret hos en anden domæneregistrator (ikke Amazon), skal du følge nogle forskellige trin for at konfigurere dette. Normalt bliver du nødt til at tilføje en CNAME-post med en værdi af det vigtigste S3-skovlendepunkt.

Fejlfinding :

Hvis du slettede den hostede zone, som Amazon oprettede, da du først registrerede domænet (jeg har gjort dette, fordi hostede zoner medfører nogle afgifter), skal du oprette en ny hostet zone fra bunden.

  1. Vælg "Opret hostet zone" og indstil domænenavnet, for eksempel "mywebsite.com"
  2. Dette vil generere nogle nye rekordsæt for typerne NS og SOA.
  3. Gå ind på dit registrerede domæne, og opdater Navneserverværdierne til de, der genereres i det nye NS-recordsæt.

Anmodning om et certifikat

Awesome, siden er nu hostet ved hjælp af den tilpassede url! Vi kan dog kun få adgang til det via HTTP-protokol.

Vi bør altid sikre, at vores websteder er sikret ved hjælp af HTTPS-protokol. Dette beskytter vores websted og brugere mod ondsindede injektionsangreb og garanterer ægthed.

Gå til Certificate Manager i AWS Console og anmod om et nyt offentligt certifikat (dette er gratis). Du bliver bedt om at indtaste de domænenavne, du vil sikre.

Inden certifikatet kan udstedes, skal Amazon være i stand til at kontrollere, at du ejer de angivne domæner.

Du kan vælge mellem to verifikationsmetoder: E-mail eller DNS.

E-mail er generelt enklere, men du skal sikre dig, at du har adgang til den e-mail, der bruges til at registrere domænet. Alternativt, hvis du brugte Amazon Registrar og Route53, kan du vælge DNS-metoden. Dette kræver, at du tilføjer nogle specifikke rekordsæt til den hostede zone, men dette er for det meste automatiseret for dig, så det er ret simpelt.

It can take a few minutes for the certificate to be issued after validation.

When its all done we can continue to the final step!

Configuring CloudFront

For the final step we are going to use CloudFront which allows us to use the new SSL certificate to serve the website with HTTPS. CloudFront also speeds up the distribution of web content by storing it at multiple edge locations and delivering from the closest edge location to a user.

We need two new web distributions, one for each S3 bucket. Head to CloudFront in the AWS Console and create the first web distribution.

There are lots of settings available to create a web distribution, but for the basics we only need to change five:

  1. Origin Domain Name: Set this to the S3 website endpoint for one of the buckets. Important: This field will give you some auto-complete options with your S3 bucket names. However, using these can cause issues with redirecting to the bucket endpoint. So instead use the bucket endpoint directly.
  2. Origin Id: This populated for you when you enter Origin Domain Name.
  3. Viewer Protocol Policy: Set to “Redirect HTTP to HTTPS”.
  4. Alternate Domain Names: This should match the name of the S3 bucket you’re pointing to. For example “mywebsite.com”.
  5. SSL Certificate: Select “Custom SSL Certificate” and select your new certificate from the dropdown.

Do this again for the second S3 bucket.

The distributions can take a while to spin up, so while we wait, let’s do the finishing steps.

Back in S3, go to your secondary bucket (www.mywebsite.com), in the Properties tab and under Static Website Hosting set the redirect protocol to HTTPS.

Finally, head back to Route53. We need to update the custom A records we created to now target the CloudFront distributions rather than the S3 buckets. For each record, change the Alias Target and select the CloudFront distribution available in the dropdown.

Note: Again, if you are using another DNS service you’ll need to go update the CNAME record from there to point to the CloudFront domain name.

And there you have it! Your beautiful website is now available at the custom domain and served with HTTPS!

Tak for læsningen! Jeg håber, at denne guide var nyttig og behagelig. Jeg ville meget gerne vide, om du fandt det nyttigt.