【发布时间】:2017-01-05 02:38:13
【问题描述】:
我在 Elixir Phoenix 中有休息 API,我想记录每个请求者客户端 IP。目前,我正在使用以下代码获取客户端 IP:
conn.remote_ip |> Tuple.to_list |> Enum.join(".")
但是,它给了我本地 IP 127.0.0.1。
然后,我使用了以下代码:
remote_ips = Plug.Conn.get_req_header(conn, "x-forwarded-for")
remote_ip = List.first(remote_ips)
它给了 nil x-forwarded-for。
请帮我解决这个问题。
【问题讨论】:
-
您是否在其他服务器(如 nginx 或 varnish 或其他任何服务器)后面运行应用程序?
-
是的,在 nginx 上运行。
-
能否请您包含用于将流量路由到 Phoenix 应用程序的 nginx 配置?
-
proxy_redirect off; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwared-For $proxy_add_x_forwarded_for; proxy_connect_timeout 60s; -
你打错了
X-Forwared-For->X-Forwarded-For。