简体   繁体   English

Flask 中的远程客户端 IP 地址

[英]Remote client IP address in Flask

How can I get the remote / client IP in Flask running on Apache?如何在 Apache 上运行的 Flask 中获取远程/客户端 IP? My webservice is behind a load balancer, so request.remote_addr gives the load balancer IP instead of the client IP.我的网络服务在负载均衡器后面,所以request.remote_addr提供负载均衡器 IP 而不是客户端 IP。

You can get the remote client ip like this:您可以像这样获取远程客户端 ip:

remote_ip = request.headers.get('X-Forwarded-For')
if not remote_ip:
    remote_ip = request.remote_addr

alternative method:替代方法:

remote_ip = request.environ.get('HTTP_X_FORWARDED_FOR')
if not remote_ip:
    remote_ip = request.environ.get('REMOTE_ADDR')

If your balancer is rf7239 compliant it should send a Forwarded header, if it's not, it might send X-Forwarded-For .如果您的平衡器符合rf7239,它应该发送一个Forwarded标头,如果不是,它可能会发送X-Forwarded-For Check any of these headers instead of REMOTE_ADDR检查任何这些标头而不是REMOTE_ADDR

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM