Files
llm-gateway-sub-backup/workspace/utils/request_utils.py
2025-08-11 18:56:38 +09:00

28 lines
1.0 KiB
Python

from fastapi import Request
# 🔽 사용자 IP 확인
def get_client_ip(request: Request) -> str:
xff = request.headers.get("X-Forwarded-For")
if xff:
return xff.split(",")[0].strip() # 첫 번째 값(실제 클라이언트 IP)
xri = request.headers.get("X-Real-IP")
if xri:
return xri # Nginx가 전달한 원래 클라이언트 IP
return request.client.host # 마지막 fallback (프록시/NAT IP)
# 🔽 요청 SWAGGER 포트 확인
def get_swagger_port(request: Request) -> str:
# 우선순위: X-Forwarded-Port → request.url.port → Host 헤더 → 기본 포트 추정
port = request.headers.get("X-Forwarded-Port")
if port:
return port
if request.url.port:
return str(request.url.port)
host_header = request.headers.get("host")
if host_header and ":" in host_header:
return host_header.split(":")[1]
# 마지막으로 기본 포트(HTTPS 443, HTTP 80) 추정
return "443" if request.headers.get("X-Forwarded-Proto") == "https" else "80"