如何在我的 Cloud-运行 Flask 应用程序中获取用户的 IP 地址?
How can I get the user's IP-Address in my Cloud-Run Flask app?
我有一个 Flask 应用程序 运行 通过 Google Cloud 运行 我需要知道用户的 IP 地址。
我正在使用 gunicorn 作为我的服务器。
我试过以下代码:
request.remote_addr
request.environ['REMOTE_ADDR']
request.environ.get('HTTP_X_REAL_IP', request.remote_addr)
它正在返回此 IP 地址:169.254.8.129
,不是我的。
这可能是应用程序和用户之间的负载均衡器的 IP?
有没有办法在不使用额外服务的情况下获得正确的 IP 地址?
您有 headers 由 Google 提供。在我的测试中,我得到了这些 2:
X-Forwarded-For: [MyPubliCIp, LoadBalancerIp,MyPubliCIp]
Forwarded: [for="MyPubliCIp";proto=http]
随心所欲地使用它们。
在 Cloud 运行 中,在 Flask 路由中我这样做了:
ip = request.environ.get("HTTP_X_FORWARDED_FOR", request.remote_addr)
logging.info(f"IP ADDRESS: {ip}")
有了这个我可以得到请求者 public IP 地址。
request.remote_addr 适用于 App Engine 等服务器。
我是 运行 我在 Google App Engine 中的服务,没有得到上述任何工作,但这确实有效。
ip = request.headers['X-Appengine-User-Ip']
我有一个 Flask 应用程序 运行 通过 Google Cloud 运行 我需要知道用户的 IP 地址。 我正在使用 gunicorn 作为我的服务器。 我试过以下代码:
request.remote_addr
request.environ['REMOTE_ADDR']
request.environ.get('HTTP_X_REAL_IP', request.remote_addr)
它正在返回此 IP 地址:169.254.8.129
,不是我的。
这可能是应用程序和用户之间的负载均衡器的 IP?
有没有办法在不使用额外服务的情况下获得正确的 IP 地址?
您有 headers 由 Google 提供。在我的测试中,我得到了这些 2:
X-Forwarded-For: [MyPubliCIp, LoadBalancerIp,MyPubliCIp]
Forwarded: [for="MyPubliCIp";proto=http]
随心所欲地使用它们。
在 Cloud 运行 中,在 Flask 路由中我这样做了:
ip = request.environ.get("HTTP_X_FORWARDED_FOR", request.remote_addr)
logging.info(f"IP ADDRESS: {ip}")
有了这个我可以得到请求者 public IP 地址。
request.remote_addr 适用于 App Engine 等服务器。
我是 运行 我在 Google App Engine 中的服务,没有得到上述任何工作,但这确实有效。
ip = request.headers['X-Appengine-User-Ip']