Node.js 这是从S3 bucket提供web页面的正确方法吗?

Node.js 这是从S3 bucket提供web页面的正确方法吗?,node.js,amazon-web-services,express,amazon-s3,amazon-ec2,Node.js,Amazon Web Services,Express,Amazon S3,Amazon Ec2,我有一个节点服务器(EC2服务器上的Ubuntu),它为数据库中的数据提供服务。为了提供html页面,我使用S3 bucket。我在我的代码中使用了以下内容- https.get( 'https://s3_Url_Of_Page', function(proxyRes) { proxyRes.pipe(res); } ); 我仍然不确定这是否会导致客户端直接从S3获取页面,或者首先

我有一个节点服务器(EC2服务器上的Ubuntu),它为数据库中的数据提供服务。为了提供html页面,我使用S3 bucket。我在我的代码中使用了以下内容-

https.get(
           'https://s3_Url_Of_Page', 
           function(proxyRes) {
                       proxyRes.pipe(res);
           }
);

我仍然不确定这是否会导致客户端直接从S3获取页面,或者首先将页面下载到我的EC2服务器,然后将其提供给客户端,如果是这样的话,当客户端点击我的服务器url时,我如何使客户端直接从S3获取页面,而无需中间下载。

通过管道响应,流量将通过EC2服务器。您应该向客户端发送重定向响应,其位置指向S3内容。然后浏览器将直接从bucket中获取内容

您需要为S3存储桶启用公共访问

例如:

 var http = require('http');
 var server = http.createServer(function(req, res) {
     // http status 302 = temporary redirect; 301 = permanent redirect
     res.writeHead(302, {
         'Location': 'your/s3/bucket/path'
     });
     response.end();
 });

您正在将页面下载到EC2服务器(这就是
http.get()
所做的),并将响应流式传输到客户端(这就是
proxyRes.pipe(res)
会。url不会因此而改变。你能提供代码让它工作吗?是的,浏览器中的url将成为S3存储桶的url。我会在回答中给出一个例子。但是,先生,我有我的网站url,当客户端访问此网站时,我需要向客户端发送login.html页面,但url应该是。此日志in.html文件位于S3上,以便以后我可以使用cloud front加快加载速度。我明白了。如果您想使用cloudfront,您应该查看说明和示例。解决方案将包括DNS配置,而不是在代码中实现。