Welcome to WuJiGu Developer Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.0k views
in Technique[技术] by (71.8m points)

amazon s3 - Setting index document on S3 website with custom domain

I'm trying to set an index document for my S3 hosted website. I've

  1. Enabled website hosting on the bucket
  2. Set the index document to "index.html"
  3. Uploaded an index.html file
  4. Made the index.html file public.

The index document works when navigating to the root of the bucket using the raw AWS url, but does not work when using a custom domain:

http://static.appgrinders.com.s3-website-us-east-1.amazonaws.com/index.html (works)
http://static.appgrinders.com.s3-website-us-east-1.amazonaws.com (works)
http://static.appgrinders.com/index.html (works)
http://static.appgrinders.com (Access denied - 403 error)

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

Your DNS isn't configured correctly.

You are pointing to one of the REST endpoints (CNAME s3.amazonaws.com), which doesn't support index documents. You need the DNS to point to the web site hosting endpoint, in this case it's CNAME static.appgrinders.com.s3-website.us-east-1.amazonaws.com. This endpoint is visible in the S3 console.

This change will fix your issue.

http://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteEndpoints.html

The giveaway of the nature of the misconfiguration (before I confirmed in DNS) was the XML error. The web site hosting endpoints don't return XML errors -- they return the same information, but it's wrapped in some simple HTML, instead of XML.

Note, however, that you will still need to use CloudFront if you want your site to be accessible with SSL. Custom domains in S3 require CloudFront's help for SSL support. The web site hosting endpoints, unlike the REST endpoints, don't listen on port 443 at all.

In the CloudFront configuration, you'll need to avoid the same error -- don't select the bucket name from the dropdown list, since this will send requests to the REST endpoint. You'll need to supply the web site endpoint hostname as the origin.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to WuJiGu Developer Q&A Community for programmer and developer-Open, Learning and Share
...