added middelware
Some checks failed
Build, Push, and Deploy to Nomad / docker-nomad (push) Has been cancelled

This commit is contained in:
2024-12-10 21:48:10 +01:00
parent 1faff0fbc2
commit d9001d2758

12
app.py
View File

@@ -6,23 +6,19 @@ import json
import os import os
from starlette.middleware.httpsredirect import HTTPSRedirectMiddleware from starlette.middleware.httpsredirect import HTTPSRedirectMiddleware
from fastapi import FastAPI from fastapi import FastAPI
from starlette.middleware.base import BaseHTTPMiddleware from starlette.middleware.base import BaseHTTPMiddleware
from starlette.requests import Request from starlette.requests import Request
class ProxyHeadersMiddleware(BaseHTTPMiddleware): class ProxyHeadersMiddleware(BaseHTTPMiddleware):
async def dispatch(self, request: Request, call_next): 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") proto = request.headers.get("X-Forwarded-Proto", "http")
host = request.headers.get("X-Forwarded-Host") host = request.headers.get("X-Forwarded-Host", request.headers.get("Host"))
if proto: # Update request scheme and host for correct URL generation
request.scope["scheme"] = proto request.scope["scheme"] = proto
if host: if host:
request.headers["host"] = host request.scope["server"] = (host.split(":")[0], request.scope["server"][1])
response = await call_next(request) response = await call_next(request)
return response return response
@@ -31,7 +27,7 @@ app = FastAPI()
# Mount static files # Mount static files
app.mount("/static", StaticFiles(directory="static"), name="static") app.mount("/static", StaticFiles(directory="static"), name="static")
app.add_middleware(ProxyHeadersMiddleware, allowed_hosts=["*"]) app.add_middleware(ProxyHeadersMiddleware)
# Templates directory # Templates directory