如何使用node-http-proxy进行HTTP到HTTPS的路由?
以下是我正在使用的模块版本:
$ npm list -g | grep proxy ├─┬ http-proxy@0.10.0
一个web服务调用我的机器,我的任务是代理请求到一个不同的url和主机与一个额外的查询参数基于请求的内容:
var http = require('http'), httpProxy = require('http-proxy') form2json = require('form2json'); httpProxy.createServer(function (req, res, proxy) { // my custom logic var fullBody = ''; req.on('data', function(chunk) { // append the current chunk of data to the fullBody variable fullBody += chunk.toString(); }); req.on('end', function() { var jsonBody = form2json.decode(fullBody); var payload = JSON.parse(jsonBody.payload); req.url = '/my_couch_db/_design/ddoc_name/_update/my_handler?id="' + payload.id + '"'; // standard proxy stuff proxy.proxyRequest(req, res, { changeOrigin: true, host: 'my.cloudant.com', port: 443, https: true }); }); }).listen(8080);
但是我仍然An error has occurred: {"code":"ECONNRESET"}
错误: An error has occurred: {"code":"ECONNRESET"}
任何人都有一个想法,需要在这里修复?
这为我做了诡计:
var httpProxy = require('http-proxy'); var options = { changeOrigin: true, target: { https: true } } httpProxy.createServer(443, 'www.google.com', options).listen(8001);
要将端口3000
上的所有请求转发到https://google.com
:
const https = require('https') const httpProxy = require('http-proxy') httpProxy.createProxyServer({ target: 'https://google.com', agent: https.globalAgent, headers: { host: 'google.com' } }).listen(3000)
经过一些试验和错误,这对我工作:
var fs = require('fs') var httpProxy = require('http-proxy'); var https = require('https'); var KEY = 'newfile.key.pem'; var CERT = 'newfile.crt.pem'; httpProxy.createServer({ changeOrigin: true, target: 'https://example.com', agent: new https.Agent({ port: 443, key: fs.readFileSync(KEY), cert: fs.readFileSync(CERT) }) }).listen(8080);