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"