本帖最后由 ppgjx 于 2024-7-5 11:59 编辑
客户端和nginx建立tcp链接->nginx和应用服务器建立链接
我的需求是应用服务器拿到客户端和nginx建立tcp链接的那个ip
1.在socket层面,应用服务器只能拿到和nginx建立tcp的ip
2.在http层面
假设反向代{过}{滤}理配置如
[Asm] 纯文本查看 复制代码 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;
应用服务器如果通过解析http请求的header去获取ip确实可以,但如果客户端发送http请求是可以设置header头的,也就是可以伪造的,客户端把这些header改成了其他的ip,应用服务器获取的也是错误的ip
按照我的理解如果使用nginx反向代{过}{滤}理的情况下,应用服务器是无法拿到客户端的真实ip的,因为本身应用服务器不和客户端直接进行tcp链接,只能通过nginx提供的http信息来获取,但是http是可以伪造的,结论是应用服务器确保获取的ip是客户端的真实ip(不考虑代{过}{滤}理的情况下),有什么其他办法吗?还是说我理解错误了?请大佬们指教
|