ric*_*ard 5 https gmail reverse-proxy mixed-content
我创建了一个简单的基于Web的电子邮件客户端,如gmail.我想要显示图像,但为了使用我的ssl网站,我需要在ssl上提供所有图像(否则我会收到"混合内容"警告).所以我需要像gmail这样的反向代理来提供这些图像.
我将重写电子邮件中的所有图像URL以指向反向代理.例如:
我的反向代理是https://myreverseproxy.com
原始图片网址http://stuff.com/image1.jpg
我将重写网址为https://myreverseproxy.com?image-url=http://stuff.com/image1.jpg
当反向代理获得请求" https://myreverseproxy.com?image-url=http://stuff.com/image1.jpg "时,它将从查询参数image-url获取原始图像(http:// stuff.com/image1.jpg),获取图像,并将其返回给https://myreverseproxy.com?image-url=http://stuff.com/image1.jpg的请求者.
是否有任何服务可以开箱即用?我可以写一个简单的吗?我是否已经为此安装了任何库或解决方案?
我对任何语言和任何平台都持开放态度......我只想解决这个问题.
chr*_*etd 10
我建议像Tudor一样:在节点中编写的代理.
但是,我建议使用更广泛使用和测试的库,例如node-http-proxy.这是真的简单的设置,并且将实现你在不到20行的代码所需要的.
var httpProxy = require('http-proxy')
httpProxy.createServer({
target: {
host: 'stuff.com',
port: 80
},
ssl: {
key: fs.readFileSync('./ssl-key.pem', 'utf8'),
cert: fs.readFileSync('./ssl-cert.pem', 'utf8')
}
}).listen(443);
Run Code Online (Sandbox Code Playgroud)
如果客户端随后访问https://reverseproxy.com/image.png,则该过程将如下所示
我假设在这个模式中,反向代理在不同的服务器上运行,作为服务于映像的Web服务器,但不一定是这种情况.如果它们都在同一台服务器上运行,只需host: 'localhost'在该target部分中使用即可.
-
如果您不熟悉Node,请执行以下操作以快速运行此设置.
npm init在项目的目录中运行来生成package.json文件npm install --save http-proxy以安装http-proxy库并能够在代码中使用它您现在应该可以通过运行来运行反向代理
node index.js
Run Code Online (Sandbox Code Playgroud)
如果您打算在生产中使用它,我强烈建议您查看PM2.它是节点的流程管理器,它基本上确保您的应用程序始终在运行,无论如何.特别是,如果从应用程序抛出任何类型的异常并导致它终止,它将重新启动它.
安装:
npm install -g pm2
Run Code Online (Sandbox Code Playgroud)
用法:
pm2 start index.js
Run Code Online (Sandbox Code Playgroud)
还有一些说明:
.pem文件具有适当的权限和所有者.chmod 400通常是一个很好的选择(只有所有者可读).但是,运行Node应用程序的用户应该能够读取它们.ssl-key.pem和ssl-cert.pem在同一目录中希望有所帮助!只是问一下你看起来不清楚的事情
| 归档时间: |
|
| 查看次数: |
2195 次 |
| 最近记录: |