fasthttp 클 라 이언 트 IP 가 져 오기

1009 단어
fasthttp 로 클 라 이언 트 ip 을 가 져 오 는 방법 은 ctx. RemoteIP (). String () 입 니 다. 정상 적 인 상황 에서 이 가 져 오 는 것 은 문제 가 없 지만 nginx 등 대 리 를 사용 할 때 이것 이 정확 하지 않 습 니 다. RemoteIP 가 가 져 온 것 은 nginx 의 IP 입 니 다. 그러면 어떻게 해결 합 니까?
  • 수상 은 nginx 에 설정 을 추가 해 야 한다. 예 를 들 어

  • proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  • 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()
    }
    
    

    좋은 웹페이지 즐겨찾기