diff --git a/app.py b/app.py index 558645a..f9fb6c1 100644 --- a/app.py +++ b/app.py @@ -6,32 +6,28 @@ import json import os from starlette.middleware.httpsredirect import HTTPSRedirectMiddleware - - 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") + async def dispatch(self, request: Request, call_next): + proto = request.headers.get("X-Forwarded-Proto", "http") + host = request.headers.get("X-Forwarded-Host", request.headers.get("Host")) - if proto: - request.scope["scheme"] = proto - if host: - request.headers["host"] = host + # Update request scheme and host for correct URL generation + request.scope["scheme"] = proto + if host: + request.scope["server"] = (host.split(":")[0], request.scope["server"][1]) - response = await call_next(request) - return response + response = await call_next(request) + return response app = FastAPI() # Mount static files app.mount("/static", StaticFiles(directory="static"), name="static") -app.add_middleware(ProxyHeadersMiddleware, allowed_hosts=["*"]) +app.add_middleware(ProxyHeadersMiddleware) # Templates directory