fasthttp 获取client ip

用fasthttp 获取客户端ip 的方法是 ctx.RemoteIP().String(),正常情况下这个获取是没有问题的,但是如果使用了 nginx 等代理的时候这些就不准了,RemoteIP 获取的其实是nginx 的IP,那么如何解决呢?

    1. 首相要在nginx 里面加一些配置例如

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    1. 从 header 里面获取 client ip
//获取真实的IP  1.1.1.1, 2.2.2.2, 3.3.3.3
func ClientIP(ctx *fasthttp.RequestCtx) string {
    clientIP := string(ctx.Request.Header.Peek("X-Forwarded-For"))
    if index := strings.IndexByte(clientIP, ','); index >= 0 {
        clientIP = clientIP[0:index]
                //获取最开始的一个 即 1.1.1.1
    }
    clientIP = strings.TrimSpace(clientIP)
    if len(clientIP) > 0 {
        return clientIP
    }
    clientIP = strings.TrimSpace(string(ctx.Request.Header.Peek("X-Real-Ip")))
    if len(clientIP) > 0 {
        return clientIP
    }
    return ctx.RemoteIP().String()
}

你可能感兴趣的:(fasthttp 获取client ip)