2

有问题的设置如下所示:

我的 web 应用程序使用和fastapi部署工作人员类,位于具有 IP 地址的同一主机上的代理后面(以及其他远程设备,如 VPN 集中器等)gunicornuvicornnginx172.31.x.x

nginx配置如下:

location / {
    real_ip_header X-Forwarded-For;
    real_ip_recursive on;
    set_real_ip_from 172.31.x.x/32;  # well-known vpn concentrator

    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_redirect off;
    proxy_pass http://172.31.x.x:5045;

gunicorn配置如下:

OPTIONS="--bind 127.0.0.1:5045 --bind 172.31.x.x:5045 --forwarded-allow-ips=127.0.0.1,172.31.x.x --workers 1 --worker-class uvicorn.workers.Uv
icornWorker --log-config config/logging.conf"

fastapi使用starlette.requests.Request对象(名为request)时,request.client.host打印托管 Web 应用程序的服务器的接口 IP 地址(即172.31.x.x

request.headers["x-real-ip"], request.headers["x-forwarded-for"]两者都在我的代理之前打印设备的 IP 地址,这是我公司众所周知的防火墙设备。

我想问的是:

  1. 是否可以打印整个X-Forwarded-ForHTTP 标头以查看中间代理服务?
  2. 如何检索我的最终用户的真实客户端 IP 地址(基本上覆盖众所周知的白名单 IP 地址)?
4

0 回答 0