FastAPI
FastAPI, NGINX 사용 시 Client IP 확인
수알치
2023. 10. 18. 10:56
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)}
반응형