У меня есть следующие настройки:Колба Proxy разрешить url_for
- Главный сервер:
Nginx пересылки"https://example.com/machine1/*" -> "http://machine1/*"
- MACHINE1:
ngnix + uwsgi + колба монтажа на/
, например,/foobar
.
Это означает, что https://example.com/machine1/foobar
ударит MACHINE1 в /foobar
. У меня есть точка крепления /machine1
в переменной, NGINX_MOUNT_URL
.
Проблема в том, что url_for
не решает, что.
Я попытался
app.config["APPLICATION_ROOT"] = NGINX_MOUNT_URL # = "/machine1"
но, кажется, относится только к печенью URLs.
Есть простой вид:
@app.route("/foobar")
def web_foobar():
from flask import url_for
return "The URL for this page is {}".format(url_for("web_foobar"))
# end def
Итак, просматривающие https://example.com/machine1/foobar
(Главный сервер) получит прокси-соединение http://machine1/foobar
(MACHINE1), который отображает The URL for this page is /foobar
. Мне нужно, чтобы это было /machine1/foobar
, для связи в шаблонах для работы.
Я пробовал предлагаемые решения в https://stackoverflow.com/a/18967744/3423324, но это всегда заканчивалось тем, что мне пришлось просматривать https://example.com/machine1/machine1/foobar
, чтобы получить страницу /foobar
.
Как сделать flask.url_for
осведомленным о APPLICATION_ROOT
?
Это старый вопрос, но, случайно, что кто-то еще появляется, одним из способов, которым я достиг этого, является передача «url_prefix = '/ machine1» при регистрации сервисного модуля ('register_module' был позже переименован к ['register_blueprint'] (https://github.com/pallets/flask/blob/71b7c4f5f89ea5e95dc7881797ca7d3a06b97e2f/flask/app.py#L955), похоже). – Bahrom
Я позже использовал https://stackoverflow.com/a/47155246/3423324 – luckydonald