From 1faff0fbc292d37e5bf8dc09683acb55aa804fc2 Mon Sep 17 00:00:00 2001 From: Henrik Jess Nielsen Date: Tue, 10 Dec 2024 21:42:33 +0100 Subject: [PATCH] added middelware --- app.py | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) 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