我的s3存储桶如何使用nginx在不同的文件夹中托管多个网站?

时间:2016-12-24 15:16:46

标签: amazon-web-services nginx amazon-s3

我在亚马逊上有一个s3 + Cloudfront解决方案。我想在存储桶中的不同文件夹中托管不同的网站,并通过以下两种方式之一访问它们: - 子域名 - > mywebsite1.mydomain.com 要么 - 路径 - > www.mydomain.com/mywebsite1

我读到基于nginx的代理可以解决我的问题。这是真的吗? 是否有可能在s3上获得nginx?

1 个答案:

答案 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现在允许您请求增加此限制。