【发布时间】:2018-07-02 06:40:25
【问题描述】:
我在端口 3000 和 4000 上运行同一节点应用程序的两个实例。
我希望有以下行为:
https://localhost/dev ==> http://localhost:3000
https://localhost/prod ==> http:// localhost:4000
我有以下代理:
var fs = require('fs'),
httpProxy = require('http-proxy');
var PATH_TO_KEY = "/home/wow/browser.key",
PATH_TO_CERT = "/home/wow/browser.crt",
PATH_TO_CHAIN = "";
var options = {
ssl: {
key: fs.readFileSync(PATH_TO_KEY, 'utf8'),
cert: fs.readFileSync(PATH_TO_CERT, 'utf8'),
//ca : fs.readFileSync(PATH_TO_CHAIN, 'utf8')
},
target: "http://localhost:4000", // this is prod
ws: true,
xfwd: true,
router: {
'https://localhost/dev': 'http://127.0.0.1:3000/',
'https://localhost/prod': 'http://127.0.0.1:4000/',
},
pathRewrite: {
'^/dev' : '/', // remove /dev/ path
'^/prod' : '/' // remove /prod/ path
},
};
var server = httpProxy.createProxyServer(options).listen(443);
但是,当我访问 https://localhost/dev 或 https://localhost/prod 时,会发生以下情况:
- 它始终重定向到指定的
target,而不是router中指定的任何url。 - pathRewrite 似乎没有发生,因为我总是以
target/prod或target/dev结束。 /dev 和 /prod 的路径不存在,因此出现页面无法显示错误。
我不确定我在哪里做错了。有人可以帮忙吗?
谢谢。
【问题讨论】:
标签: node.js http-proxy node-http-proxy node-https