I've set up Amazon S3 to serve my static site, speakeasylinguistics.com
. All of the DNS stuff seems to be working okay, because dig +recurse +trace www.speakeasylinguistics.com
outputs the correct DNS info.
But when you visit the site in a browser using the endpoint, the index.html
page downloads, instead of being served. How do I fix this?
I've tried Chrome, Safari, FF. It happens on all of them. I used Amazon's walkthrough on hosting a custom domain to a T.
Running curl -I against the url you posted gives the following result:
curl -I http://speakeasylinguistics.com.s3-website-us-east-1.amazonaws.com/
HTTP/1.1 200 OK
x-amz-id-2: DmfUpbglWQ/evhF3pTiXYf6c+gIE8j0F6mw7VmATOpfc29V5tb5YTeojC68jE7Rd
x-amz-request-id: E233603809AF9956
Date: Sun, 18 Aug 2013 07:58:55 GMT
Content-Disposition: attachment
Last-Modified: Sun, 18 Aug 2013 07:05:20 GMT
ETag: "eacded76ceb4831aaeae2805c892fa1c"
Content-Type: text/html
Content-Length: 2585
Server: AmazonS3
This line is the culprit:
Content-Disposition: attachment
If you are using the AWS console, I believe this can be changed by selecting the file in S3 and modifying its meta data by removing this property.
If you are using Hashicorp Terraform you can specify the content-type
on an aws_s3_bucket_object as follows
resource "aws_s3_bucket_object" "index" {
bucket = "yourbucketnamehere"
key = "index.html"
content = "<h1>Hello, world</h1>"
content_type = "text/html"
}
This should serve your content appropriately in the browser.
Edit 24/05/22: As mentioned in the comments on this answer, Terraform now has a module to help with uploading files and setting their content-type
attribute correctly
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With