为什么X-Forwarded-For头没有被node-express proxy设置?

我有一个单独的节点文件,它执行以下操作:

它监听两个端口:80和443(https)。 它redirect到80到443的连接。

而在443上是一个反向代理,通过纯httpredirect到多个本地服务器。

我的问题是,在实际的目标服务器上,我无法获得浏览器的实际远程IP地址。 我得到反向代理的地址。 请求是由反向代理,所以这是我所期望的。

所以,我在反向代理中做了以下操作(只显示相关的代码行):

proxy = httpProxy.createServer(); var https_app = express(); https.createServer(sslCerts, https_app).listen(443, function () { ... }); https_app.all("/",function(req, res) { ... //res.append('X-Forwarded-For',req.connection.remoteAddress); proxy.web(req,res, {target: local_server}); ... } 

我需要做一些像res.append('X-Forwarded-For',req.connection.remoteAddress)到代理服务器..在它的请求头。 设置地址的问题是次要的。 我首先需要设置可以被目标服务器读取的头本身。 代理本身不设置这个头,我认为这应该默认。 还是应该? 还是这样做,我正在做一些错误的阅读?

我看不到你的proxy的定义,但我假设它是使用express-http-proxy下面的代码相同。 我期望这种替代方法将为你工作:

 var proxy = require('express-http-proxy'); var myProxy= proxy('localhost:443', { forwardPath: function (req, res) { return require('url').parse(req.url).path; } }); 

然后简单地说:

 app.use("/*", myProxy); 

我希望这有帮助。