generated from hjess/PythonTemplateProject
added middelware
Some checks failed
Build, Push, and Deploy to Nomad / docker-nomad (push) Has been cancelled
Some checks failed
Build, Push, and Deploy to Nomad / docker-nomad (push) Has been cancelled
This commit is contained in:
24
app.py
24
app.py
@@ -6,32 +6,28 @@ 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", request.headers.get("Host"))
|
||||||
host = request.headers.get("X-Forwarded-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
|
||||||
|
|
||||||
app = FastAPI()
|
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
|
||||||
|
|||||||
Reference in New Issue
Block a user