重定向传出外部资产请求本地文件系统用的NodeJS
问题描述:
比方说,我们有一个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}
。
有没有办法通过代理来做到这一点,或者更好的主意是削减一个新的分支并用本地文件位置替换所有的外部资产链接?
答
您将有一些得到这样的事情在你的网络面板
“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获取的一组请求创建规则。
是的,那是我的第一个想法,但对于我可能需要提供的50多张图片来说,这并不实际。我几乎必须更改每个图像URL才能访问我的Express服务器并有条件地重新路由。 –
您可以使用* .png表示服务器路由规则。 –