gpt4 book ai didi

http - 从 Go HTTP 服务器获取源 IP 地址

转载 作者:数据小太阳 更新时间:2023-10-29 03:13:39 29 4
gpt4 key购买 nike

我正在尝试在 Golang 中实现一个 HTTP 服务器,它接收来自使用代理协议(protocol)的 Amazon ELB 的请求。现在我想知道原始 IP 地址是什么,所以我在考虑使用 this包。

现在this据我所知,包使用原始 HTTP,但我的服务器使用路由器实现了更高级别的 HTTP 服务器。

我无法在它们之间进行翻译。 我的问题是:我如何使用this库并仍然使用像 gorilla/mux 这样的路由器?现在 this 没什么特别的了包,它只是在比 HTTP 更低的层次上对话。

例子:

// Listen on TCP port 2000 on all interfaces.
l, err := net.Listen("tcp", ":2000")
// proxyproxy is the library that maintains the source ip address for me
proxyList := &proxyproto.Listener{Listener: list}
if err != nil {
log.Fatal(err)
}
defer proxyList.Close()

for {
// Wait for a connection.
conn, err := proxyList.Accept()
if err != nil {
log.Fatal(err)
}
// Handle the connection in a new goroutine.
// The loop then returns to accepting, so that
// multiple connections may be served concurrently.
go func(c net.Conn) {

// how do I connect my router

}(conn)
}

最佳答案

通过 HTTP 找出实际客户端 IP 的通常方法是使用一些 HTTP header ,例如:

  • X-Forwarded-For
  • X-Real-IP

实际上,Amazon ELB 似乎支持 X-Forwarded-For header :

http://docs.aws.amazon.com/elasticloadbalancing/latest/classic/x-forwarded-headers.html

如果您使用的是 Gorilla,他们有一个中间件似乎可以为您处理:

https://godoc.org/github.com/gorilla/handlers#ProxyHeaders

关于http - 从 Go HTTP 服务器获取源 IP 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43882010/

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