![在 S3 上托管 Angular 应用程序,在 EC2 上托管 WordPress,位于同一个域中,WordPress 位于子目录中](https://linux22.com/image/735607/%E5%9C%A8%20S3%20%E4%B8%8A%E6%89%98%E7%AE%A1%20Angular%20%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%EF%BC%8C%E5%9C%A8%20EC2%20%E4%B8%8A%E6%89%98%E7%AE%A1%20WordPress%EF%BC%8C%E4%BD%8D%E4%BA%8E%E5%90%8C%E4%B8%80%E4%B8%AA%E5%9F%9F%E4%B8%AD%EF%BC%8CWordPress%20%E4%BD%8D%E4%BA%8E%E5%AD%90%E7%9B%AE%E5%BD%95%E4%B8%AD.png)
我正在构建一个 Angular 网站,该网站还将为营销/销售团队安装一个小型 WordPress(用于构建登录页面)。我们的营销团队坚持认为子域名不利于 SEO 和 GA,并希望将 WordPress 安装在子目录中。例如:
example.com/
<-- 角度
example.com/marketing/
<-- WordPress
Angular 安装在 S3 存储桶上,WordPress 安装在 EC2 上(位于负载均衡器后面),整个系统隐藏在 Cloudfront 分布后面!目前几乎所有功能都正常运行:example.com/marketing/
正确加载了 WordPress 网站,并且example.com/
加载了 Angular(并example.com/some-random-path
正确调用了/index.html
Angular 前端控制器)。我遇到的问题是,由于出现 404 错误,example.com/marketing/some-random-path
还会调用/index.html
Angular 前端控制器example.com/marketing/some-random-path
。但要使 WordPress 正常工作,/marketing/
需要改为访问/marketing/index.php
WordPress 前端控制器才能处理 404 错误。
我研究了亚马逊的 lambda 函数,但不确定如何使其与 WordPress 结合正常工作.htaccess
。也许我所有问题的解决方案都在那里?
或者也许有另一种方法来配置这个“假”/marketing/
子目录。将它包装在 Cloudfront 后面是一项要求和/或最佳实践吗?我们的其他 WordPress 网站都不是。
也许我可以做一些我不知道的超级隐秘的 DNS 事情?
我愿意接受其他配置;我所描述的配置只是我迄今为止设法弄清楚的配置。
如果相关的话,还有一点需要注意:我们的域名是在第三方注册商(dnsmadeeasy)注册的,而不是亚马逊;dnsmadeeasy 的 DNS 解析速度(稍微快一点?),在这里工作的其他人不愿意放弃这一点。我不确定它是否与这个问题有关,但它让我的配置稍微麻烦了一点,所以万一有关系的话,我想我会提一下。
答案1
我为每个单独的应用程序映射了子域(一个子域用于 s3,一个子域用于 wordpress),然后在根域上引入了一个代理服务器,以路由到逻辑子目录,这些子目录是代理上游到我之前映射的子域的。这在理论上也可以与 IP 一起使用,但在使用 S3 作为网站和 EC2/ElasticBeanstalk 时,我更容易使用子域。注意:我将此配置用于 20 多个 S3 站点,这些站点映射为自定义 java 代理服务器下的目录。根据您的要求,您必须决定是否要使用一台服务器来运行您的 wordpress,或者是否要对其进行任何类型的扩展(例如,在负载平衡器后面运行多个实例)。如果您将来选择在 wordpress 上使用负载平衡配置,那么您应该实现一个单独的实例作为代理服务器运行,以将路径路由到每个上游应用程序源。如果您追求简单而不考虑规模,您可以在 wordpress 服务器实例上实现多个虚拟主机,然后针对虚拟目录结构为 s3 和 wordpress 安装配置代理路径。