Flask:如何在反向代理服务器后面的服务器上进行静态文件夹设置?

时间:2018-12-13 16:09:14

标签: nginx flask

我通过反向代理服务器将对https://mydomain/subserverA/foo的请求传递给后端服务器A,并且flask应用程序在服务器A上运行。 该URL已在代理服务器上重写,服务器A可以将请求的URL视为https://foo

因此,当我默认使用烧瓶并使用url_for(“ static”,“ hoge”)函数时,URL变为“ / static / hoge”。我希望该网址为“ / subserverA / static / hoge”。仅使用static_url_path和static_folder选项无法解决此问题。

我通过遵循两个代码解决了这个问题。

代码A

view = Flask(__name__, static_url_path=‘/subdir/static',static_folder='static')
view.add_url_rule('/static/<filename>', 'static')
print(view.url_map)
## Map([<Rule '/subdir/static/<filename>' (GET, HEAD, OPTIONS) -> static>,
## <Rule '/static/<filename>' (GET, HEAD, OPTIONS) -> static>])

此代码运行良好。但是我不知道这很好。那是因为当“静态”端点具有多个URL路由时,我找不到优先级规则。 (我发现the rule与正常端点有关。)

代码B

view = Flask(__name__)
static_url = Blueprint('static_url', __name__, url_prefix='/subdir/', static_folder='static')
view.register_blueprint(static_url)

此代码使用Blueprint的url前缀。但这使我编写了url_for('static_url.static','foo')。我想用没有反向代理的方式来写。

有人有个好主意吗?

0 个答案:

没有答案