我有一台主机,它有多个网络接口和对应的IP地址,例如net1: 1.1.1.1、net2: 2.2.2.2、net3: 3.3.3.3。当http请求传入,Go http服务器正在监听0.0.0.0时,如何确定实际的网络接口
net1: 1.1.1.1
net2: 2.2.2.2
net3: 3.3.3.3
0.0.0.0
0qx6xfy61#
在http处理程序中很少需要本地连接信息,因此没有直接的接口来获取信息。如果您需要本地地址,它将由LocalAddrContextKey下的服务器添加到请求上下文。
LocalAddrContextKey
localAddr := req.Context().Value(http.LocalAddrContextKey).(net.Addr)
替代方案是为每个接口设置单独的侦听器,或者劫持ResponseWriter以获取底层的net.Conn。
ResponseWriter
net.Conn
1条答案
按热度按时间0qx6xfy61#
在http处理程序中很少需要本地连接信息,因此没有直接的接口来获取信息。如果您需要本地地址,它将由
LocalAddrContextKey
下的服务器添加到请求上下文。替代方案是为每个接口设置单独的侦听器,或者劫持
ResponseWriter
以获取底层的net.Conn
。