Node.js 使用 https 代理
Node.js proxy with https
我想设置一个简单的代理,它将我丑陋的长主机地址隐藏为一个不错的 TLD 格式,例如 https:// www.qwertyuiop.a-verylong-texthere.co.uk -> http:// awesome.me。不幸的是,我的主机不支持将 TLD 绑定到我的服务器。
使用 RedHat 的 OpenShift,我尝试了 nodejitsu 优秀的 node-http-proxy 库对应的 example,但它所做的是将我重定向到丑陋的长主机地址,而不是保留漂亮的 http :// awesome.me url。谁能告诉我我做错了什么或我错过了什么?有什么解决问题的建议吗?
这是我用 google 截取的代码,用于作为目标 https 服务器进行测试:
var ipaddress = process.env.OPENSHIFT_NODEJS_IP;
var port = process.env.OPENSHIFT_NODEJS_PORT || 8080;
httpProxy.createServer({
target: 'https://google.com',
agent : https.globalAgent,
headers: {
host: 'google.com'
}
}).listen(port, ipaddress);
解决方法是:
使用默认的 SampleApp 并在 self 中创建一个代理对象:
self.proxy = httpProxy.createServer({
ssl: { key: fs.readFileSync('ssl.key'), cert: fs.readFileSync('ssl.crt')},
target: 'https://awesome.me',
secure: true
});
然后用以下内容替换路线
self.routes['/*'] = function(req, res) {
self.proxy.web(req, res);
};
我想设置一个简单的代理,它将我丑陋的长主机地址隐藏为一个不错的 TLD 格式,例如 https:// www.qwertyuiop.a-verylong-texthere.co.uk -> http:// awesome.me。不幸的是,我的主机不支持将 TLD 绑定到我的服务器。
使用 RedHat 的 OpenShift,我尝试了 nodejitsu 优秀的 node-http-proxy 库对应的 example,但它所做的是将我重定向到丑陋的长主机地址,而不是保留漂亮的 http :// awesome.me url。谁能告诉我我做错了什么或我错过了什么?有什么解决问题的建议吗?
这是我用 google 截取的代码,用于作为目标 https 服务器进行测试:
var ipaddress = process.env.OPENSHIFT_NODEJS_IP;
var port = process.env.OPENSHIFT_NODEJS_PORT || 8080;
httpProxy.createServer({
target: 'https://google.com',
agent : https.globalAgent,
headers: {
host: 'google.com'
}
}).listen(port, ipaddress);
解决方法是:
使用默认的 SampleApp 并在 self 中创建一个代理对象:
self.proxy = httpProxy.createServer({
ssl: { key: fs.readFileSync('ssl.key'), cert: fs.readFileSync('ssl.crt')},
target: 'https://awesome.me',
secure: true
});
然后用以下内容替换路线
self.routes['/*'] = function(req, res) {
self.proxy.web(req, res);
};