nginx 将 REMOTE_ADDR 传递给 wsgi python 网络服务器

nginx 将 REMOTE_ADDR 传递给 wsgi python 网络服务器

我在端口 8000 上运行 python web 服务器 (Falcon)。尝试使用 nginx 传递真实用户 ip:

server {
listen 80;
server_name myhost.com;
#           ^^^^^^^^^^ my real website name here
real_ip_header X-Real-IP;
real_ip_header X-Forwarded-For;
real_ip_recursive on;
set_real_ip_from 127.0.0.1;

location / {
    proxy_set_header  Host $host;
    proxy_set_header REMOTE_ADDR $remote_addr;
    proxy_set_header  X-Real-IP $remote_addr;
    proxy_set_header  X-Forwarded-Proto https;
    proxy_set_header  X-Forwarded-For $remote_addr;
    proxy_set_header  X-Forwarded-Host $remote_addr;
    proxy_pass http://localhost:8000;
    }
}

但接收:127.0.0.1,所以我应该修复什么?

更新2 现在我正在拉动‘HTTP_X_FORWARDED_FOR’,但收到的是最接近我的网络服务器地址,但不是我的真实IP。

答案1

我们使用此标头来传递真实 IP:

proxy_set_header        Accept-Encoding   "";
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;
proxy_set_header        X-Forwarded-Protocol $scheme;
proxy_set_header        X-Forwarded-Port $server_port;
proxy_set_header        X-Client-Cert-Verified $ssl_client_verify;
proxy_set_header        X-Client-Cert-DN $ssl_client_s_dn;
add_header              Front-End-Https   on;

相关内容