【问题标题】:Flask add multiple prefix to all routesFlask为所有路由添加多个前缀
【发布时间】:2021-09-11 03:31:22
【问题描述】:

这是我的 Flask 应用程序的 nginx 配置文件:

server {
    listen       8888;
    
    location /dev1 {
        proxy_pass  http://127.0.0.1:8000/;
    }

    location /prod1 {
        proxy_pass  http://127.0.0.1:8001/;
    }

    location /prod2 {
        proxy_pass  http://127.0.0.1:8002/;
    }

    location /prod3 {
        proxy_pass  http://127.0.0.1:8003/;
    }
}

现在,如果我转到 myapp/prod1,它可以正常工作,但是,单击网站上的任何链接会将我重定向到 /link1,而我想保留前缀,以便单击会将我重定向到 /prod1/link1 .我不确定这是否是我需要在 Flask 或 nginx 中修复的问题,我的一些路线如下所示:

@app.route("/")
@app.route("/link1")
def link1(....):
    ...

【问题讨论】:

    标签: nginx flask nginx-reverse-proxy


    【解决方案1】:

    您可以在注册 Flask 蓝图时使用它们。

    app.register_blueprint(simple_page, url_prefix='/pages')
    app.url_map
    Map([<Rule '/static/<filename>' (HEAD, OPTIONS, GET) -> static>,
     <Rule '/pages/<page>' (HEAD, OPTIONS, GET) -> simple_page.show>,
     <Rule '/pages/' (HEAD, OPTIONS, GET) -> simple_page.show>])
    

    查看文档以获取完整示例:https://flask.palletsprojects.com/en/2.0.x/blueprints/

    【讨论】:

    • 但我认为蓝图只允许 1 个前缀,在这种情况下我有 4 个可能的前缀,我怎样才能用蓝图实现呢?
    【解决方案2】:

    当您使用 wsgi 服务器时,例如gunicorn,你可以使用这个命令:

    $ SCRIPT_NAME=/prefix gunicorn app:app
    

    只需为不同的 Flask 应用使用不同的前缀即可。

    另请参阅这篇精彩的博文https://dlukes.github.io/flask-wsgi-url-prefix.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-29
      • 2018-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-09
      相关资源
      最近更新 更多