diff --git a/app.py b/app.py index ee85d36..558645a 100644 --- a/app.py +++ b/app.py @@ -7,14 +7,31 @@ import os from starlette.middleware.httpsredirect import HTTPSRedirectMiddleware -from fastapi.middleware.trustedhost import TrustedHostMiddleware +from fastapi import FastAPI +from starlette.middleware.base import BaseHTTPMiddleware +from starlette.requests import Request + + +class ProxyHeadersMiddleware(BaseHTTPMiddleware): + async def dispatch(self, request: Request, call_next): + # Fix protocol and host based on headers sent by NGINX + proto = request.headers.get("X-Forwarded-Proto", "http") + host = request.headers.get("X-Forwarded-Host") + + if proto: + request.scope["scheme"] = proto + if host: + request.headers["host"] = host + + response = await call_next(request) + return response app = FastAPI() # Mount static files app.mount("/static", StaticFiles(directory="static"), name="static") -app.add_middleware(TrustedHostMiddleware, allowed_hosts=["*"]) +app.add_middleware(ProxyHeadersMiddleware, allowed_hosts=["*"]) # Templates directory