在 nginx 上游使用 phoenix 记录真实 IP 地址

asi*_*niy 3 elixir phoenix-framework

我有一个上游 phoenix 应用程序,如下所示:

upstream my_app {
    server localhost:3001;
}

server {
    root /var/www/my_app/priv/static;
    listen 80;

    location / {
        proxy_pass http://my_app;
    }
}
Run Code Online (Sandbox Code Playgroud)

我想跟踪真实的IP地址,但我不知道如何通过标准phoenix来做到这一点,conn.remote_ip因为它总是返回127.0.0.1(因为nginx将此查询代理给phoenix)。如何获取真实IP地址?

asi*_*niy 5

x-forwarded-for专门为此设计的标题!

# nginx
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

# phoenix
conn.get_req_header(conn, "x-forwarded-for")
Run Code Online (Sandbox Code Playgroud)