mirror of
https://github.com/fastapiadmin/FastapiAdmin.git
synced 2026-10-13 04:39:41 +00:00
@@ -5,10 +5,9 @@ from typing import Any
|
|||||||
from starlette.middleware.base import BaseHTTPMiddleware, RequestResponseEndpoint
|
from starlette.middleware.base import BaseHTTPMiddleware, RequestResponseEndpoint
|
||||||
from starlette.middleware.cors import CORSMiddleware
|
from starlette.middleware.cors import CORSMiddleware
|
||||||
from starlette.middleware.gzip import GZipMiddleware
|
from starlette.middleware.gzip import GZipMiddleware
|
||||||
from starlette.middleware.httpsredirect import HTTPSRedirectMiddleware
|
|
||||||
from starlette.middleware.trustedhost import TrustedHostMiddleware
|
from starlette.middleware.trustedhost import TrustedHostMiddleware
|
||||||
from starlette.requests import Request
|
from starlette.requests import Request
|
||||||
from starlette.responses import Response
|
from starlette.responses import RedirectResponse, Response
|
||||||
from starlette.types import ASGIApp
|
from starlette.types import ASGIApp
|
||||||
|
|
||||||
from app.common.enums import RedisInitKeyConfig, SysParamKey
|
from app.common.enums import RedisInitKeyConfig, SysParamKey
|
||||||
@@ -117,11 +116,14 @@ class CustomGZipMiddleware(GZipMiddleware):
|
|||||||
super().__init__(app, minimum_size=settings.GZIP_MIN_SIZE, compresslevel=settings.GZIP_COMPRESS_LEVEL)
|
super().__init__(app, minimum_size=settings.GZIP_MIN_SIZE, compresslevel=settings.GZIP_COMPRESS_LEVEL)
|
||||||
|
|
||||||
|
|
||||||
class CustomHTTPSRedirectMiddleware(HTTPSRedirectMiddleware):
|
class CustomHTTPSRedirectMiddleware(BaseHTTPMiddleware):
|
||||||
"""HTTP → HTTPS 重定向中间件"""
|
"""HTTP → HTTPS 重定向中间件(信任前端代理的 X-Forwarded-Proto 头)"""
|
||||||
|
|
||||||
def __init__(self, app: ASGIApp) -> None:
|
async def dispatch(self, request: Request, call_next):
|
||||||
super().__init__(app)
|
if request.url.scheme != "https" and request.headers.get("X-Forwarded-Proto") != "https":
|
||||||
|
url = request.url.replace(scheme="https")
|
||||||
|
return RedirectResponse(url, status_code=301)
|
||||||
|
return await call_next(request)
|
||||||
|
|
||||||
|
|
||||||
class CustomTrustedHostMiddleware(TrustedHostMiddleware):
|
class CustomTrustedHostMiddleware(TrustedHostMiddleware):
|
||||||
|
|||||||
@@ -168,8 +168,8 @@ services:
|
|||||||
- ./nginx/web:/usr/share/nginx/html/web:ro
|
- ./nginx/web:/usr/share/nginx/html/web:ro
|
||||||
- ./nginx/ssl:/etc/nginx/ssl:ro
|
- ./nginx/ssl:/etc/nginx/ssl:ro
|
||||||
# 按需启用(取消注释):
|
# 按需启用(取消注释):
|
||||||
# - ./nginx/app:/usr/share/nginx/html/app:ro
|
- ./nginx/app:/usr/share/nginx/html/app:ro
|
||||||
# - ./nginx/docs:/usr/share/nginx/html/docs:ro
|
- ./nginx/docs:/usr/share/nginx/html/docs:ro
|
||||||
depends_on:
|
depends_on:
|
||||||
backend:
|
backend:
|
||||||
condition: service_started
|
condition: service_started
|
||||||
|
|||||||
Reference in New Issue
Block a user