Как сопоставить необязательную строку в начале?

Ответ зависит от того, как вы обслуживаете это приложение.

Подмонтировано внутри другого контейнера WSGI

Предполагая, что вы собираетесь запускать это приложение внутри контейнера WSGI (mod_wsgi, uwsgi, gunicorn и т. д.); вам нужно на самом деле монтировать в этом префиксе приложение как часть этого контейнера WSGI (что-нибудь, что говорит WSGI) и установить настройку APPLICATION_ROOT значение для вашего префикса:

app.config["APPLICATION_ROOT"] = "/abc/123"

@app.route("/")
def index():
    return "The URL for this page is {}".format(url_for("index"))

# Will return "The URL for this page is /abc/123/"

Установка значения конфигурации APPLICATION_ROOT просто ограничивает файл cookie сеанса флешки этим префиксом URL.

Пример правильной установки вашего приложения

Если вы не знаете, что означает первый абзац, это означает, что все остальные будут автоматически обработаны для вас превосходными возможностями WSGI для Flask и Werkzeug. , посмотрите на это примерное приложение с Flask, смонтированным внутри него:

from flask import Flask, url_for
from werkzeug.serving import run_simple
from werkzeug.wsgi import DispatcherMiddleware

app = Flask(__name__)
app.config['APPLICATION_ROOT'] = '/abc/123'

@app.route('/')
def index():
    return 'The URL for this page is {}'.format(url_for('index'))

def simple(env, resp):
    resp(b'200 OK', [(b'Content-Type', b'text/plain')])
    return [b'Hello WSGI World']

app.wsgi_app = DispatcherMiddleware(simple, {'/abc/123': app.wsgi_app})

if __name__ == '__main__':
    app.run('localhost', 5000)

Проксирование запросов к приложению

Если, с другой стороны, вы будете запускать свою флягу приложение в корневом контейнере WSGI и запросы проксирования к нему (например, если это FastCGI'd, или если nginx является proxy_pass -потребителями запросов для вспомогательной точки к вашему автономному uwsgi / gevent, вы можете либо:

  • Использовать план, так как Мигель указывает в свой ответ .
  • или используйте DispatcherMiddleware из werkzeug (или PrefixMiddleware из ответа su27 ), чтобы подключить ваше приложение на автономном сервере WSGI, который вы используете. (См. Пример правильной подстройки вашего приложения выше для используемого кода.)

0
задан Ahmed Abdelhameed 31 March 2019 в 03:18
поделиться

1 ответ

Другие вопросы по тегам:

Похожие вопросы: