我已经测试了很多前端代理,例如 HAProxy、Apache、Nginx 和 Lighttpd,但在我的 tornado 后端服务器的日志中,我只是被前端服务器访问。意思是,我想知道正在访问的客户端的真实 IP,所以我的日志分析器认为我的访问次数超过了 1。
最简单的方法是什么?
后端是 tornado python,前端可以是上面的任何一个,但我目前配置了 nginx。
你有几个选择。最容易实现的是简单地使用 x-forwarded-for 标头:
http://en.wikipedia.org/wiki/X-Forwarded-For
要在 haproxy 中启用 x-forwarded-for,只需添加:
期权转发
http://cbonte.github.io/haproxy-dconv/configuration-1.4.html#4.2-option%20forwardfor
如果您不想使用 x-forwarded-for 标头,那么您可以尝试推动在龙卷风中实现“代理协议”,或者考虑使用类似 gunicorn 的东西。http://gunicorn.org/。PROXY 协议通过将原始 L4 信息添加到 L7 数据的末尾来工作。接收服务器必须理解代理协议,否则它看起来就像一个损坏的数据包。