Динамическая обработка поддоменов в веб-приложении (фляжка)
Я собираюсь использовать флягу для создания веб-приложения, а часть приложения будет включать поддомен (например, user1.appname.org).
Я не уверен, как динамически создавать эти поддомены в конфигурации фляги или как их развернуть на производственный сервер.
Каков наилучший способ сделать это?
Ответы
Ответ 1
Все конструкции маршрутизации Flask поддерживают аргумент ключевого слова subdomain
(включая поддержку переменных маршрута).
@app.route("/", subdomain="static")
def static_index():
"""Flask supports static subdomains
This is available at static.your-domain.tld"""
return "static.your-domain.tld"
@app.route("/dynamic", subdomain="<username>")
def username_index(username):
"""Dynamic subdomains are also supported
Try going to user1.your-domain.tld/dynamic"""
return username + ".your-domain.tld"
Ответ 2
Чтобы дополнить пост Шона Виеры, вам также нужно установить переменную конфигурации SERVER_NAME.
Документация: http://flask.pocoo.org/docs/config/#SERVER_NAME
Имя и номер порта сервера. Требуется для поддержки поддоменов (например, "myapp.dev:5000"). Обратите внимание, что localhost не поддерживает поддоменов, поэтому установка значения "localhost" не помогает. Установка SERVER_NAME также по умолчанию позволяет создавать URL-адреса без контекста запроса, но с контекстом приложения.
Для локального тестирования вам нужно добавить записи в ваш файл hosts
, например:
127.0.0.1 cvshark.local
127.0.0.1 robert.cvshark.local
127.0.0.1 www.cvshark.local