반응형

FastAPI, NGINX 사용 시 Client IP 확인

글. 수알치 오상문

 

먼저, 아래 게시물을 참고하자.

NginX에서 설정하는 내용을 살펴보면 된다. 

https://wiki.tistory.com/entry/nginx-ingress-ip-config

 

NGINX 사용시 웹서비스에서 Client IP 확인을 위한 설정

클라우드와 K8S 사용이 많아지면서 Load Balancer나 Proxy 를 사용하는 환경이 너무나 당연하게 되었다. 서비스에서 클라이언트의 IP 정보를 기반으로 비즈니스를 처리하고자 할 때, 클라이언트의 HTTP

wiki.tistory.com

 

아래 FastAPI에서 클라이언트 IP를 체크하는 코드이다. 

check_user_ip 함수는 요청 request 정보에서 클라이언트 IP 정보가 있는지 확인하고 그 결과는 돌려준다.

참고로 ':=' 연산자를 이용하여 ip 변수에 값을 할당한 후에

그 결과 값을 if 조건문에 돌려줘서 값이 존재하는지 확인할 수 있다. 

 

 
def check_user_ip(request):
    '''접속자 IP 확인

    Returns:

        (str) 클라이언트 IP
    '''
 
    if ip := request.headers.get("X-Real-IP", ""):
        pass
    elif ip := request.headers.get("X-Forwarded-For", ""):
        pass
    elif ip := request.headers.get("Proxy-Client-IP", ""):
        pass
    elif ip := request.headers.get("WL-Proxy-Client-IP", ""):
        pass
    elif ip := request.headers.get("HTTP_CLIENT_IP", ""):
        pass
    elif ip := request.headers.get("HTTP_X_FORWARDED_FOR", ""):
        pass
    else:
        ip = request.client.host

    return ip
 
 
@router.get("/user-ip", status_code = 200)
def user_ip(request: Request):
    '''접속자 IP 확인
    '''
 
    return {'data': check_user_ip(request)}
 

 

반응형

+ Recent posts