2
votes

How to setup AWS cloudfront with lightsail for WordPress? (on a subdomain)

  • I'm using Route 53 for all DNS management. I'm using a static IP from lightsail, 3.122.2.187
  • Route 53 has an A record for service.openinfo.nl using an ALIAS to the cloudfront domain name.
  • Route 53 has an A record for wordpress.openinfo.nl pointing to the lightsail static IP 3.122.2.187
  • Cloudfront has an origin domain name of wordpress.openinfo.nl
  • Cloudfront Origin Protocol Policy is HTTP Only.
  • Cloudfront Alternate Domain Names is service.openinfo.nl
  • Cloudfront SSL Certificate is the one issued by Route53 for *.openinfo.nl
  • Cloudfront Viewer Protocol Policy is Redirect HTTP to HTTPS.

This solution does not work:

  1. The cloudfront distribution service.openinfo.nl does resolve the lightsail server but over http, it does not use the certificate I attached... Should I use redirect http to https?

  2. Also, if I click 'login' it redirects to wordpress.openinfo.nl/wp-login.php i.e. the DNS that I assigned for the purpose of orgin domain name to cloudfront. The WordPress "WP_SITEURL" and "WP_HOME" settings somehow automatically reflect the DNS wordpress.openinfo.nl.

  3. And also, the DNS name wordpress.openinfo.nl resolves the lightsail server (which I don't want because I want all trafic to the wordpress server to go via service.openinfo.nl). How to avoid this?

Background and what I tried:

My lightsail (WordPress) server does not show up in the "Origin Domain Name" dropdown list when creating a new distribution. So what should I do? The only AWS description on this topic that I can find is not clear on that to me.

Using the servers fixed IP address as "Origin Domain Name" in cloudfront is not allowed. So I created a DNS record in Route 53 (wordpress.openinfo.nl) to point to the static IP of my lightsail server. And I added this DNS record as "Origin Domain Name" in cloudfront (also including a https certificate *.openinfo.nl). And I selected the cloudfront distribution as A record, type alias, in Route 53. The cloudfront Alternate Domain Names (CNAMEs) is service.openinfo.nl .

So I also tried creating the service.openinfo.nl as A record (DNS) in Route 53 pointing to the static IP of the WordPress lightsail server. But then I cannot create the same service.openinfo.nl as alias A record...

So I am stuck... Please advice? Many thanks in advance! Wouter

PS: openinfo.nl points to a cloudfront distribution with a certificate which points to a static site in a S3 buckets and works fine.

1
any insight on how to setup cloudfront for wordpress on lightsail ?Pak
Not yet unfortunately, I set up an EC2 instance instead, it’s elastic IP can be used as origin domain name in cloudfront. I guess lightsail does not have this feature...Wouter

1 Answers

3
votes

https://aws.amazon.com/blogs/startups/how-to-accelerate-your-wordpress-site-with-amazon-cloudfront/

https://forums.aws.amazon.com/thread.jspa?threadID=264002

First of all, you need to point your domain to CloudFront. You will want to set up a CNAME record in your DNS zone, pointing to the xyz.cloudfront.net address you get when creating the CloudFront distribution. The name of that record should be "www.example.com" if that's the domain you want to enable CloudFront on. Making example.com (without www) work as well could be a bit more tricky as you can't use a CNAME for technical reasons. Route 53 offers a way around this, but the DNS management in Lightsail is a simpler version of that service essentially. But you can always add an A record for example.com, pointing to your server IP address. Then your server can redirect those requests (additional configuration needed).

Secondly, CloudFront needs to contact your server on some address. You could add a second record to your DNS zone. This time you call it "origin.example.com" (or anything really), make it an A record, and point it to the server IP address.