目前 dos.zczc.cz 的使用的是 Flask 后端,并且使用 Cloudflare 作为 CDN。但是有一个问题是 Flask 在使用 url_for 函数时并不会自动识别 https 协议。导致了 Mixed Content 的存在。

初步尝试

在 nginx 中添加了 proxy_set_header X-Forwarded-Proto $scheme;,但是 Flask 并不遵守 X-Forwarded-Proto 的设定,而是会使用 app.config['PREFERRED_URL_SCHEME'] 的设定

解决方案

from werkzeug.middleware.proxy_fix import ProxyFix
from flask import Flask

app = Flask(__name__)
app.wsgi_app = ProxyFix(app.wsgi_app)

参考资料