我在亚马逊上有一个s3 + Cloudfront解决方案。我想在存储桶中的不同文件夹中托管不同的网站,并通过以下两种方式之一访问它们: - 子域名 - > mywebsite1.mydomain.com 要么 - 路径 - > www.mydomain.com/mywebsite1
我读到基于nginx的代理可以解决我的问题。这是真的吗? 是否有可能在s3上获得nginx?
答案 0 :(得分:4)
您可以使用在EC2中运行的Nginx(或HAProxy)并在存储桶前充当反向代理,是的,但是如果您还不熟悉如何配置它,那么使用它可能更简单CloudFront ......第二次。
此处的解决方案是为每个网站子域创建单独的分发。
假设存储桶名为example.com且位于us-west-2区域,请确认您已在存储桶上启用了网站托管,然后找到存储桶的网站端点,在这种情况下将是example.com.s3-website-us-west-2.amazomaws.com。
对于subdomain1.example.com,在example.com存储桶中,内容将位于subdomain1/
之下。因此,您为此子域创建新的CloudFront分配,将subdomain1.example.com配置为CloudFront发行版作为备用域名。对于源服务器,请使用上面提到的存储桶网站端点主机名(无路径 - 只是主机名)。然后,将Origin Path配置为/subdomain1
。注意有一个前导斜杠但不是斜杠。
现在,当 this 时,发行版会看到(例如)/images/cat.jpg
的请求,它会将其发送到S3 ...但在此之前,它会将Origin Path添加到请求,并询问存储桶/subdomain1/images/cat.jpg
。
将subdomain1的DNS指向新的CloudFront分配,您应该拥有所需的内容 - 一个子域,其内容位于存储桶中的路径下。
对每个子域重复上述步骤。使用其中一个SDK或CLI可以轻松实现此步骤。
由于default is 200,您最终可能需要请求增加您的帐户允许创建的CloudFront分配数量,但这只是一个简单的过程,只要您能够描述您的用例。 / p>
当然,我想到你想要这样做的原因可能与每个帐户的100个桶限制有关,但是that limit is no longer a fixed limit。 AWS现在允许您请求增加此限制。