2017-02-20 13 views
0

У меня есть сервер Node (Ubuntu на сервере EC2), который обслуживает данные из базы данных. Для обслуживания 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 (разрешение) 'does. –

ответ

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

не изменит URL-адрес из-за этого. Не могли бы вы предоставить код, чтобы он работал. –

+0

Да, URL-адрес в браузере станет URL-адресом вашего ведра S3. Я приведу пример в своем ответе. – Marc

+0

Но сэр, у меня есть URL моего сайта как https://mywebsite.com, и когда клиент отправляется на этот сайт, мне нужно отправить страницу login.html клиенту, но URL-адрес должен быть https://mywebsite.com. Файл login.html находится на S3, чтобы позже я мог использовать облако nt, чтобы ускорить загрузку. –