gpt4 book ai didi

phoenix-framework - remote_ip 和 peer 有什么区别?

转载 作者:行者123 更新时间:2023-12-04 23:42:07 26 4
gpt4 key购买 nike

我正在编写一个插件,将访问日志放入一个文件中,例如普通的 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))),
], ",")
)

最佳答案

来自 Plug.Conn文档:

peer - the actual TCP peer that connected, example: {{127, 0, 0, 1}, 12345}. Often this is not the actual IP and port of the client, but rather of a load-balancer or request-router.

remote_ip - the IP of the client, example: {151, 236, 219, 228}. This field is meant to be overwritten by plugs that understand e.g. the X-Forwarded-For header or HAProxy’s PROXY protocol. It defaults to peer’s IP.


如果您使用负载均衡器(例如 http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/x-forwarded-headers.html ),则 peer ip 地址将指的是负载平衡器而不是客户端。负载均衡器在 header (AWS 为 X-Forwarded-For)中提供客户端的实际 IP 地址,该 header 将作为 remote_ip 存储在 Plug.Conn 结构中。 .
另见 https://www.rfc-editor.org/rfc/rfc7239

关于phoenix-framework - remote_ip 和 peer 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34588410/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com