gpt4 book ai didi

angularjs - 如何集成在 AWS EC2 上运行的 Nodejs 和 AWS S3 上的静态 Angularjs 内容?

转载 作者:太空宇宙 更新时间:2023-11-04 02:06:26 25 4
gpt4 key购买 nike

我有一个 Nodejs 和 Angularjs 应用程序在单个 AWS EC2 实例上运行。应用程序的代码结构如下:

Code Structure

目前,当用户第一次调用应用程序时,该调用由 Nodejs Express 框架处理,并将调用定向到 Angular 静态目录中的 Index.html 页面,使用 server/server.js 文件中的以下代码

res.sendFile(path.resolve(__dirname + '/../web/dist/index.html'));

从index.html,调用各种静态组件(JS、HTML、CSS 等),并且所有 AngularJS Controller /服务都会回调 NodeJS API 来满足用户请求。

这种安排在单个实例中工作得很好。现在我想将 Angular 静态内容(即 Web 目录移动到 AWS S3)。为此,我是否必须将 server.js 中的以下代码更改为:

res.sendFile(path.resolve('**AWS S3 URL** +/web/dist/index.html'));

因为我的静态文件现已移至 AWS S3。另外,这样做时我必须修改所有 Angular Controller 和服务以使用 Nodejs API 调用的绝对路径。这意味着进行大量更改并引入部署配置(为了灵 active ,我们必须在以后进行)。

我们可以采取的另一种方法是通过在 server/server.js 中进行以下更改,将 index.html 从 web 移动到服务器文件夹:

res.sendFile(path.resolve(__dirname + '/../server/index.html'));

然后在 server.js 中添加以下代码来处理静态内容从 Nodejs 到 S3 的重定向,如下所示:

app.get('/assets/*', function(req, res){
var requestURL = req.url;
var redirectedURL = <<**Remote S3 base URL**>> + requestURL;
res.redirect(redirectedURL);
});

但是,令人担忧的是会有很多重定向,我想知道这是否是一个好的设计?我读到,搜索引擎不喜欢具有大量重定向(HTTP 301、304)的应用程序,并将这些页面排名较低。因此,我试图找出在 AWS EC2 上部署 Nodejs 和在 S3 上部署静态 AngularJS 内容时的最佳实践是什么。任何建议都将受到高度赞赏。

最佳答案

您可以通过将文件的 s3 网址添加到 index.html 来直接从 s3 访问您的内容。

如果您也想从 s3 提供 index.html 服务,那么您必须将 index.html 之一重定向到 s3,而其他所有内容都可以直接从 s3 加载到浏览器中。

如果您确实想快速提供公共(public)内容,我建议使用 cloudfront 是一个选项,您可以直接从 cloudfront 提供所有公共(public)内容,而无需访问您的 Node 服务器,并且所有 api 调用都将访问您的 Node 服务器。但是,这取决于您的应用程序的架构。

关于angularjs - 如何集成在 AWS EC2 上运行的 Nodejs 和 AWS S3 上的静态 Angularjs 内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44118239/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com