之前的注册脚本里把中间件写成了 security-headers@file(还出现过一个带逗号的 security-headers@file,)。而在你的 routes/global.yml 里真正定义的名字是 sec-headers@file。

目的就是对齐中间件名称,避免 Traefik 在装配 router 时引用了一个不存在的中间件,导致该条 router 报告 warning / 被降级,进而被其它“更泛”的路由(比如系统自带面板 8000/5666)抢走域名流量。
This commit is contained in:
2025-10-02 23:12:21 +08:00
parent 22b10cd112
commit 6bf070ab66

View File

@@ -43,7 +43,7 @@ if [ "$SERVICE_PROTOCOL" = "http" ]; then
# 抢占路由:给当前 Host 的 router 设置更高优先级 # 抢占路由:给当前 Host 的 router 设置更高优先级
TAGS="$TAGS${NL}traefik.http.routers.${SERVICE_NAME}.priority=10000" TAGS="$TAGS${NL}traefik.http.routers.${SERVICE_NAME}.priority=10000"
# 可选中间件(注意:值里有逗号也安全) # 可选中间件(注意:值里有逗号也安全)
TAGS="$TAGS${NL}traefik.http.routers.${SERVICE_NAME}.middlewares=gzip-all@file,security-headers@file" TAGS="$TAGS${NL}traefik.http.routers.${SERVICE_NAME}.middlewares=gzip-all@file,sec-headers@file"
# 如需 ACME 证书解析器可再加一行(取消注释) # 如需 ACME 证书解析器可再加一行(取消注释)
# TAGS="$TAGS${NL}traefik.http.routers.${SERVICE_NAME}.tls.certresolver=${TRAEFIK_CERT_RESOLVER}" # TAGS="$TAGS${NL}traefik.http.routers.${SERVICE_NAME}.tls.certresolver=${TRAEFIK_CERT_RESOLVER}"
elif [ "$SERVICE_PROTOCOL" = "tcp" ]; then elif [ "$SERVICE_PROTOCOL" = "tcp" ]; then