情况如下:
我有一个由AWS S3(www.mysite.com)托管的静态网站,但是,我还希望将博客附加到我的域(www.mysite.com/blog)中使用wordpress的子路径在EC2实例上。
我该怎么做呢?
答案 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但必须使用子域)。在这种情况下,以下步骤应该有效:
- 创建弹性IP并将其附加到EC2实例
- 配置EC2 WP实例以响应blog.mysite.com
- 在www.mysite.com的DNS提供商中,将博客的A记录指向EC2实例的弹性IP
醇>