node.js - 通过代理将客户端标头、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)
})
解决方案
推荐阅读
- android - 等到 firebase 获取数据以继续(Kotlin)
- c++ - C++ - 使用 strcmp 比较哪个名称按字母顺序排在第一位
- flutter - 如何在颤动中压缩或减小 gif 文件的大小?
- python - 在单变量时间序列建模中生成观测值
- git - 同一个域,多个没有 ssh 的 git 帐户
- c# - 为什么一个物体在另一个物体下的孩子比例不一样?以及如何将对象缩放为相同大小?
- html - jquery 3.5.1 移动 css 格式未显示在带有 vs 代码的实时服务器预览中
- math - 来自随机数的正态分布样本
- javascript - 刷新网站或在 Safari(iOS 和 macOS)上安装 PWA 后视频不加载
- flutter - Flutter 中带有 Img 的自定义滑块