2017-02-20 25 views
0

我有一个节点服务器(EC2服务器上的Ubuntu),它服务于数据库中的数据。为了提供html页面,我使用S3存储桶。我用我的代码如下 -这是从S3存储区提供网页的正确方法吗?

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

我现在还不能确定这是否会导致客户端直接从S3可以获得网页,或第一页被下载到我的EC2服务器则是考虑到客户端,如果是的话我怎么能让客户端直接从S3获取页面,当客户端点击我的服务器URL没有这个中间下载。

+0

您正在下载的页面到EC2服务器(这是'http.get()'一样),并传输到客户端的响应(也就是'proxyRes.pipe(RES) ' –

回答

0

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

您需要为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(); 
}); 
+0

不会因为这个原因而改变网址,你能否提供代码以使其正常工作 –

+0

是的,浏览器中的URL将成为你的S3存储区的URL,我将在我的答案中给出一个例子。 – Marc

+0

但是,先生,我有我的网站网址为https://mywebsite.com,当客户端进入本网站时,我需要发送login.html页面给客户端,但url应该是https://mywebsite.com。 login.html文件在S3上,以便以后我可以使用云端nt使加载更快。 –

相关问题