Jednostavno hosting web stranica uz Amazon S3 i HTTPS

Zdravo narode!

U ovom uputstvu pokazat ću vam kako hostirati statično web mjesto s HTTPS-om na AWS-u s prilagođenom domenom. Sve je to moguće koristeći AWS free tier.

Međutim, usluge koje ćemo koristiti donose neke male naknade. Općenito govoreći, to ne bi trebalo premašiti 1 USD mjesečno.

Koristit ćemo kombinaciju sljedećih AWS usluga:

—S3

- Ruta53

- Voditelj certifikata

- CloudFront

Krenimo u to!

Postavite svoje S3 kante

Prvo, trebat će vam dvije S3 kante , obje bi trebale odgovarati vašem prilagođenom imenu domene s drugom, uključujući www poddomenu.

Kanta 1:mywebsite.com

Kanta 2:www.mojawebsajt.com

Prvo područje (mywebsite.com) je glavno područje vašeg web mjesta. Sadrži sve vaše datoteke i sredstva za vaše statično web mjesto.

Dalje postavljamo ovaj segment za statičko hosting web mjesta. To možete pronaći na kartici Svojstva segmenta, a zadane postavke zadržat ćemo ovdje s indeksom web mjesta postavljenim na index.html.

Također moramo učiniti ovaj segment javno dostupnim, jer će korisnikov preglednik trebati pristupiti datotekama segmenta kako bi prikazao web mjesto. To možemo učiniti postavljanjem pravila segmenta na kartici Dopuštenja.

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

Ovo je jednostavno pravilo koje će omogućiti samo javni pristup čitanju objekata u segmentu. Ako prijeđete na krajnju točku definiranu u statičkoj konfiguraciji hostinga segmenta, trebali biste vidjeti svoje web mjesto.

Napredak! Ali možemo i bolje od toga.

Drugi segment (www.mywebsite.com) ostavit ćemo praznim, ali konfigurirati za preusmjeravanje u naš prvi segment pomoću HTTP-a kao protokola (kasnije ćemo to učiniti HTTPS-om).

Vaše kante su sada spremne za rad!

Konfigurirajte domene s Route53

Dakle, vaše je web mjesto pokrenuto, ali mu je dostupno samo putem segmenta krajnje točke, a ne putem vaše prilagođene domene. Promijenimo to.

Krenite prema Route53 . Ako ste svoju domenu registrirali na Amazon Registrar, trebali biste vidjeti da je za vas postavljena hostirana zona s dva skupa zapisa. Jedan za Name Server (NS) i jedan za SOA.

Sve što trebamo napraviti je stvoriti još dva skupa zapisa kako bi ukazivali na krajnje točke segmenta S3.

Za svaki set zapisa:

- Tip: A - IPv4 adresa

- Alias: Da

- Alias ​​Target: krajnja točka web mjesta S3 koja odgovara onome što ste postavili za Ime.

Sada možemo krenuti prema prilagođenom url-u ... i voilà!

Skoro smo stigli, ali još nam nešto nedostaje ...

Napomena : Ako je vaša domena registrirana kod drugog registra domene (ne kod Amazona), morat ćete slijediti neke različite korake da biste to postavili. Obično ćete trebati dodati CNAME zapis s vrijednošću glavne krajnje točke S3 segmenata.

Rješavanje problema :

Ako ste izbrisali hostiranu zonu Amazon koju je stvorio prilikom prve registracije domene (to sam učinio jer hostirane zone naplaćuju neke troškove), morat ćete iz početka stvoriti novu hostiranu zonu.

  1. Odaberite "Stvori hostiranu zonu" i postavite naziv domene, na primjer "mywebsite.com"
  2. To će generirati neke nove skupove zapisa za tipove NS i SOA.
  3. Uđite u svoju registriranu domenu i ažurirajte vrijednosti poslužitelja imena na one generirane u novom skupu NS zapisa.

Zahtjev za potvrdu

Strašno, web lokacija je sada hostirana pomoću prilagođenog URL-a! Međutim, možemo mu pristupiti samo putem HTTP protokola.

Uvijek bismo trebali osigurati da su naša web mjesta zaštićena HTTPS protokolom. Ovo štiti našu web stranicu i korisnike od zlonamjernih napada ubrizgavanjem i jamči autentičnost.

Idite do upravitelja certifikata u AWS Console i zatražite novi javni certifikat (ovo je besplatno). Od vas će se zatražiti da unesete imena domena koje želite osigurati.

Prije izdavanja certifikata, Amazon mora biti u mogućnosti potvrditi da ste vlasnik navedenih domena.

Možete odabrati između dvije metode provjere: e-pošta ili DNS.

E-pošta je obično jednostavnija, ali morat ćete osigurati pristup e-pošti koja se koristi za registraciju domene. Ako ste koristili Amazon Registrar i Route53, možete odabrati DNS metodu. To zahtijeva da u hostiranu zonu dodate neke specifične skupove zapisa, ali ovo je uglavnom automatizirano za vas, pa je vrlo jednostavno.

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!

Thanks for reading! I hope this guide was useful and enjoyable, I’d love to know if you found it helpful.