繁体   English   中英

Ruby 使用 Amazon ECS(Fargate) 的 Rails 站点地图

[英]Ruby on Rails sitemap using Amazon ECS(Fargate)

为了找到解决方案,我已经在互联网上搜索了几个月,因此任何指导都会对我有很大帮助。

所以我的任务是我有一个使用 Fargate 的 RoR 应用程序。 我有一个站点地图索引和三个站点地图(链接以 50k 的增量拆分)。 这些站点地图需要通过我的 url (mysite.com/sitemap...) 访问。

因此,根据我的理解,容器是短暂的,将站点地图添加到我的公共文件夹将对在 Google 上建立索引产生不良结果。

我找到了无数关于如何通过 S3 使用 Heroku 上传站点地图的教程 - 但此选项似乎使用 S3 的公共 url 而不是我域中的 url。

我的猜测是我需要使用诸如弹性文件存储或什至 S3 之类的东西——但我迷路了。 我什至可以这样说,Airbnb 和 Github 这样的公司如何存储他们的站点地图?

我不知道 Airbnb 或 Github 的站点地图,但如果您可以让您的应用程序在 Fargate 上运行,那么您就可以解决任何问题。

因此,根据我的理解,容器是短暂的,将站点地图添加到我的公共文件夹将对在 Google 上建立索引产生不良结果。

容器确实是短暂的,但这与谷歌的不良结果无关。

您可以在 S3 或弹性文件存储上托管站点地图。 您也可以将 S3 配置为使用您的域(见下文),但我不确定这是否值得付出努力。

最简单的做法是将站点地图托管在您的公共文件夹中。 该过程将在您的开发机器上生成文件并将它们添加到存储库中。 部署后,它们将位于每个容器的公共文件夹中,可供 Rails 应用程序使用。

如果您决定不希望 Rails 应用程序提供站点地图(这对于某些用例可能有意义),那么下一个最简单的事情可能是将其托管在 S3 上。

您可以将 S3 配置为使用子域。 我不确定这是否会影响 Google 查看您网站的方式,或者网站索引是否应该托管在同一域中。

如果您想使用自己的域在 S3 上托管站点地图,那么您可以使用 CloudFront 将所有请求转发到您的 Rails 应用程序,但站点地图除外。 可以从 S3 提供站点地图。

参考: 将 S3 与子域一起使用

编辑:如果您决定使用 CloudFront,则没有必要使用 S3。 CloudFront 可以将站点地图缓存数天或数周,而您的应用程序只会在这段时间内提供一次。

我的猜测是我需要使用诸如弹性文件存储或什至 S3 之类的东西——但我迷路了。 我什至可以这样说,Airbnb 和 Github 这样的公司如何存储他们的站点地图?

像那样的大公司肯定会在他们的网站前面有一个 CDN。 你也可以在你的网站前面有一个 CDN。 AWS 解决方案是 CloudFront,但我还建议查看 Cloudflare。

在任何一种情况下,一旦您的网站前面有 CDN,您就可以根据 URL 路径将其配置为服务器来自不同来源的不同内容。 因此,例如,您可以将默认来源设置为您的 Ruby 应用程序,并将/sitemap来源设置为一个 S3 存储桶,其中包含您的站点地图文件。


或者,您可以将站点 map 存储在 EFS 中,将 EFS 卷 map 存储到您的 Fargate 任务中,并配置您的 Ruby 应用程序(或 Nginx 在您的 Ruby 应用程序前面运行?)以在收到请求时在站点地图卷中提供文件/sitemap

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM