我正在尝试在 Golang 中实现一个 HTTP 服务器,该服务器接收来自使用代理协议的 Amazon ELB 的请求。现在我想知道原始 IP 地址是什么,所以我正在考虑使用这个包。
现在,据我所知,这个包谈论原始 HTTP,但我的服务器使用路由器实现了更高级别的 HTTP 服务器。
我在他们之间翻译时遇到了麻烦。我的问题是:我如何使用这个库并且仍然使用像 gorilla/mux 这样的路由器?现在这个包没有什么特别之处,它只是在比 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)
}