【发布时间】:2021-01-14 07:32:27
【问题描述】:
我正在尝试在日志中捕获客户端 ip 并在开发服务器上获取正确的 ip,但在坐服务器上部署后,默认情况下会获取错误的 ip (10.46.0.0)。请有人建议,flask python中还有什么可以使用的?提前致谢。
代码:-
导入请求
Ip = request.environ['REMOTE_ADDR']
【问题讨论】:
我正在尝试在日志中捕获客户端 ip 并在开发服务器上获取正确的 ip,但在坐服务器上部署后,默认情况下会获取错误的 ip (10.46.0.0)。请有人建议,flask python中还有什么可以使用的?提前致谢。
代码:-
导入请求
Ip = request.environ['REMOTE_ADDR']
【问题讨论】:
您似乎从反向代理获得了地址。原始客户端 IP 可能会作为代理链的一部分转发。
这对我有用。
client_ip = request.headers.get(
'X-Forwarded-For',
request.headers.get('Client-Ip',
request.remote_addr))
WSGI 和 CGI 是有区别的。
WSGI:request.headers
CGI:request.environ
【讨论】:
您检索的 IP 地址是 CIDR 块 10.0.0.0/8 的一部分,并为专用网络保留。这告诉我您的应用程序部署在反向代理后面,该代理代表原始用户执行对您的应用程序的请求。反向代理通常会通过将标头 X-Forwarded-For 添加到代理请求来通知上游服务(您的应用程序)有关原始 IP 地址的信息。这取决于反向代理的配置,因此您应该联系部署服务器的负责人了解其配置。
【讨论】: