吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 567|回复: 3
收起左侧

[求助] nginx反向代{过}{滤}理的应用服务器如何获取ip?(已解决)

[复制链接]
ppgjx 发表于 2024-7-5 11:43
本帖最后由 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(不考虑代{过}{滤}理的情况下),有什么其他办法吗?还是说我理解错误了?请大佬们指教

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Hmily 发表于 2024-7-5 11:48
按你的需求就是客户端请求的ip为准,不要考虑http头的IP信息。
 楼主| ppgjx 发表于 2024-7-5 11:51
Hmily 发表于 2024-7-5 11:48
按你的需求就是客户端请求的ip为准,不要考虑http头的IP信息。

是的,应用服务器做ip限制也应该是根据客户端请求的ip来限制,通过header传递的ip并不可靠,可以伪造
 楼主| ppgjx 发表于 2024-7-5 11:58
问题已解决,解决方案是,nginx反向代{过}{滤}理设置
proxy_set_header X-Real-IP $remote_addr;

$remote_addr变量是nginx通过tcp链接获取的ip,而proxy_set_header X-Real-IP 会覆盖原来的http请求header,从而不会出现伪造的情况,应用服务器只需要获取request.getHeader("X-Real-IP")就可以获取到客户端真实的请求ip

免费评分

参与人数 2吾爱币 +2 热心值 +1 收起 理由
zx2000 + 1 我很赞同!
bester + 1 + 1 我很赞同!

查看全部评分

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 15:23

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表