2017-01-02 68 views
0

比方說,我們有一個S3桶的請求獲得的圖像:重定向傳出外部資產請求本地文件系統用的NodeJS

<img src="https://s3-us-west-2.amazonaws.com/{BUCKET}/logo.png" /> 

我需要,而不必訪問互聯網在這個項目上工作,所以在我的Express服務器中,我需要找到一種方法將所有請求從https://s3-us-west-2.amazonaws.com/{BUCKET}重定向到~/Desktop/project/{BUCKET}

有沒有辦法通過代理來做到這一點,或者更好的主意是削減一個新的分支並用本地文件位置替換所有的外部資產鏈接?

回答

1

您將有一些得到這樣的事情在你的網絡面板

https://s3-us-west-2.amazonaws.com/{BUCKET}/logo.png

基本上可以刪除所有「http://s3-us-west-2.amazonaws.com

而且可以說你在本地主機上運行:3000,您的請求看起來像http://localhost:3000/{BUCKET}/logo.png

您可以在快遞服務器中添加以下行。

 var request = require('request'); 
    var proxy = true //if running locally else false 
    app.get('/{BUCKET}/logo.png', function (req,res) { 
      if (proxy) 
       res.sendFile('/home/Desktop/project/' + req.url) 
      else { 
       var options = {url : 'http://s3-us-west-2.amazonaws.com' +req.url, 
          method: 'GET'}; 
       req.pipe(request(options)).pipe(res); 
      } 
    )} 

這個問題可能是,對於每一個從S3它總是通過你的Express服務器和獲取資產會Express服務器上的負載要求的資產。您可以爲開發做這件事,但不推薦用於生產。

因此,對於最終部署,您可以再次放置所有「http://s3-us-west-2.amazonaws.com」。

如果您不想以編程方式執行此操作,則可以使用代理工具(如charles或fiddler)。它們捕獲您系統中的所有流量。您可以爲特定請求創建規則,也可以爲從本地而不是s3獲取的一組請求創建規則。

+0

是的,那是我的第一個想法,但對於我可能需要提供的50多張圖片來說,這並不實際。我幾乎必須更改每個圖像URL才能訪問我的Express服務器並有條件地重新路由。 –

+0

您可以使用* .png表示服務器路由規則。 –

相關問題