当前位置:  开发笔记 > 前端 > 正文

remote_ip和peer之间有什么区别?

如何解决《remote_ip和peer之间有什么区别?》经验,为你挑选了1个好方法。

我正在编写一个插件,将访问日志放入一个文件中,就像普通的Web服务器一样.作为客户端IP地址的数据源,connremote_ippeer.我应该使用哪种,它们之间有什么区别?

是否有任何文件描述了每个实体conn

另外,我的插件就像下面的片段一样,从Elixir/Phoenix的角度来看是否自然?

Logger.info(
  Enum.join([
    "type:" <> "request",
    "remoteip:" <> Enum.join(Tuple.to_list(conn.remote_ip), ","),
    "method:" <> conn.method,
    "path:" <> conn.request_path,
    "status:" <> to_string(conn.status),
    "size_res:" <> to_string(byte_size(to_string(conn.resp_body))),
  ], ",")
)

Gazler.. 7

来自Plug.Conn文档:

peer - 连接的实际TCP对等体,例如:{{127,0,0,1},12345}.通常这不是客户端的实际IP和端口,而是负载平衡器或请求路由器.

remote_ip - 客户端的IP,例如:{151,236,219,228}.该字段意味着被插入例如X-Forwarded-For标头或HAProxy的PROXY协议的插头覆盖.它默认为对等的IP.

如果您使用的是负载均衡器(例如http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/x-forwarded-headers.html),那么peerIP地址将引用负载均衡器而不是客户端.负载平衡器在标头(X-Forwarded-For用于AWS)中提供客户端的实际IP地址,该标头将存储在Plug.Conn结构中remote_ip.

另见https://tools.ietf.org/html/rfc7239



1> Gazler..:

来自Plug.Conn文档:

peer - 连接的实际TCP对等体,例如:{{127,0,0,1},12345}.通常这不是客户端的实际IP和端口,而是负载平衡器或请求路由器.

remote_ip - 客户端的IP,例如:{151,236,219,228}.该字段意味着被插入例如X-Forwarded-For标头或HAProxy的PROXY协议的插头覆盖.它默认为对等的IP.

如果您使用的是负载均衡器(例如http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/x-forwarded-headers.html),那么peerIP地址将引用负载均衡器而不是客户端.负载平衡器在标头(X-Forwarded-For用于AWS)中提供客户端的实际IP地址,该标头将存储在Plug.Conn结构中remote_ip.

另见https://tools.ietf.org/html/rfc7239

推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有