如何让AWS子域网站指向托管wordpress的另一个EC2实例?

时间:2017-01-09 04:30:16

标签: wordpress amazon-web-services amazon-s3 amazon-ec2

情况如下:

我有一个由AWS S3(www.mysite.com)托管的静态网站,但是,我还希望将博客附加到我的域(www.mysite.com/blog)中使用wordpress的子路径在EC2实例上。

我该怎么做呢?

2 个答案:

答案 0 :(得分:3)

是的,可以完成,但您需要了解解决方案的工作原理。

域名指向单个逻辑端点,该端点处理域的所有请求。如果某个路径由一个系统处理而其他路径由另一个路径处理,则单个系统必须负责路由这些请求,并通过它们自行路由。

您无法配置使用DNS处理路径的方式。

在我对Can I use CloudFront to serve a WordPress blog from the same domain, but a different server?(服务器故障)的回答中,我概述了如何在以AWS为中心的解决方案中完成此操作。除了提供缓存之外,CloudFront是一个反向代理,这基本上是您所需要的,这里是:一个反向代理,用于检查每个请求并选择正确的后端服务器。还有其他解决方案,例如在EC2中使用HAProxy来处理请求路由,但它们更复杂,并且在所有情况下都可能无法正常运行。

您使用两个原始服务器(您的存储桶的网站端点和Wordpress服务器)配置CloudFront分配,并使用两个缓存行为以便/blog*转到Wordpress,其他一切都进入了桶。然后,在CloudFront分配上将您的域名配置为备用域名,并将您的域名指向DNS中的CloudFront。

这里稍微棘手的部分是wordpress网站必须植根于/blog而不是/,因为CloudFront实际上会发送/blog(在路径的开头) WP机器,所以它需要期望。 CloudFront使用路径前缀来选择源服务器(通过查找该路径的匹配缓存行为),但它无法删除路径前缀.¹

Wordpress不是我的专长,这似乎需要一些看起来相当简单的WP configuration changes

¹ CloudFront无法删除路径前缀。这将在Lambda @ Edge启动时发生变化,这是CloudFront和Lambda函数的集成,允许服务器端检查和操作请求和响应来自CloudFront基础架构内的标头,但即使可用,仍然建议将WP配置为不在根目录,为简单起见。

答案 1 :(得分:2)

通过不同的子域名,我假设您希望博客位于blog.mysite.com。我认为这是唯一的方法(你不能使用/ blog但必须使用子域)。在这种情况下,以下步骤应该有效:

  
      
  1. 创建弹性IP并将其附加到EC2实例
  2.   
  3. 配置EC2 WP实例以响应blog.mysite.com
  4.   
  5. 在www.mysite.com的DNS提供商中,将博客的A记录指向EC2实例的弹性IP
  6.