node.js - 为什么 Node-express 代理未设置 X-Forwarded-For header ?

标签 node.js express proxy

我有一个 Node 文件,它执行以下操作:

它监听两个端口:80 和 443(用于 https)。 它将 80 上的连接重定向到 443。

443 上有一个反向代理,它通过普通 http 进行循环重定向到多个本地服务器。

我遇到的问题是,在实际的目标服务器中,我无法获取浏览器的实际远程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});
        ...
    }

我需要在代理服务器的请求 header 中对代理服务器执行类似 res.append('X-Forwarded-For',req.connection.remoteAddress) 的操作。设置地址的问题是次要的。我首先需要设置目标服务器可以读取的 header 本身。代理本身不设置此 header ,我认为默认情况下应该设置此 header 。还是应该这样?还是我在阅读它时做错了什么?

最佳答案

我看不到您对 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);

我希望这会有所帮助。

关于node.js - 为什么 Node-express 代理未设置 X-Forwarded-For header ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32793886/

相关文章:

javascript - Webstorm 7 无法识别 Node API 方法

node.js - 使用 Node 10.x 而不是 14.x 的 Azure Web App

express - Cookie “cookieName” 将很快被拒绝,因为它的 “sameSite” 属性设置为 “none” 或 clearCookie 上的无效值

javascript - Express.js net::ERR_CONNECTION_CLOSED

nhibernate 延迟加载选项

c# - 如何通过代码更改代理服务器

javascript - setTimeout 有限制吗?

javascript - fcm firebase 函数未定义值 - 第一次尝试,已定义 - 第二次尝试

javascript - 我应该为不同类型的用户使用单独的快速服务器吗?

java - apache httpclient 使用 https 代理 : peer not authenticated