首页 > 解决方案 > 通过代理将客户端标头、isp、geo 转发到服务器

问题描述

我的网站有使用 express nodejs 和 nginx 创建的代理服务器。我遇到的问题,似乎无法弄清楚是我想转发所有原始用户的详细信息,而不是向最终目标服务器显示任何代理服务器详细信息。

方案:用户 -> 我的网站 -> 代理服务器 -> 最终服务器来检索数据。

现在,无论我在 nginx 中更改什么配置,最终服务器似乎总是识别我的代理服务器 isp、geo 等,而不是用户 isp。如果我在没有代理的情况下直接访问最终服务器,最终服务器将显示用户 isp。

如何确保代理服务器未被检测为最终服务器的“原始”请求者?

一些代码可以更好地理解:

Nginx 代理:

location / {
        proxy_pass http://x.x.x.x.x;
        include    proxy.conf;
    }

nginx配置:

proxy_http_version                 1.1;
proxy_cache_bypass                 $http_upgrade;

# Proxy headers
proxy_set_header Upgrade           $http_upgrade;
proxy_set_header Connection        "upgrade";
proxy_set_header Host              $host;
proxy_set_header X-Real-IP         $remote_addr;
proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host  $host;
proxy_set_header X-Forwarded-Port  $server_port;

节点内部的请求(调用最终服务器)如​​下所示(只是一个示例):

app.post('/getStats', (req, res) => {
      const url = request('url')
      req.pipe(url).pipe(res)
})

标签: node.jsexpressnginx

解决方案


推荐阅读