如何确定传入请求的实际IP地址或网络接口,当Go http服务器在0.0.0.0?上侦听时

toe95027  于 12个月前  发布在  Go
关注(0)|答案(1)|浏览(92)

我有一台主机,它有多个网络接口和对应的IP地址,例如net1: 1.1.1.1net2: 2.2.2.2net3: 3.3.3.3。当http请求传入,Go http服务器正在监听0.0.0.0时,如何确定实际的网络接口

0qx6xfy6

0qx6xfy61#

在http处理程序中很少需要本地连接信息,因此没有直接的接口来获取信息。如果您需要本地地址,它将由LocalAddrContextKey下的服务器添加到请求上下文。

localAddr := req.Context().Value(http.LocalAddrContextKey).(net.Addr)

替代方案是为每个接口设置单独的侦听器,或者劫持ResponseWriter以获取底层的net.Conn

相关问题