【发布时间】:2017-10-22 22:11:25
【问题描述】:
以下是我记录用户 IP 地址的方式:
{a, b, c, d} = conn.remote_ip
ip_addr = "#{a}.#{b}.#{c}.#{d}"
它始终是 127.0.0.1,即使在我在生产环境中测试它时在远程服务器上也是如此。怎么回事?
从 nginx 传递正确的标头。
【问题讨论】:
-
我猜你正在使用一些负载均衡器或代理,例如 haproxy 或 nginx,并且客户端 IP 没有正确转发。
-
你能分享你的产品配置吗?
-
@IvanYurov 我在 nginx 配置中设置了正确的标头
-
你能把你的nginx配置和你的问题一起发布吗?
-
即使在反向代理中设置了正确的设置,它唯一能做的就是将
X-Original-Host之类的标头设置为请求来自的实际 IP。您可以使用插件覆盖 conn 中的 remote_ip 字段,该字段只需获取此标头,然后将其写入 conn 结构。