【问题标题】:how do I get Flask blueprints to work with multiple domains?如何让 Flask 蓝图与多个域一起使用?
【发布时间】:2018-01-05 22:38:52
【问题描述】:

我有一个 Flask 应用程序,希望它可以在 Apache + WSGI 后面的 www.domain-a.net 和 www.domain-b.net 上工作。我可以让它为一个或另一个工作,但找不到一种方法让它对两者都有效。看来只有先注册的域名才有效。

最好将两个 Apache VirtualHosts 设置为使用相同的 WSGI 配置。我可以让那部分工作。但是对于从第二个 VirtualHost 发送的所有内容,Flask 只会返回 404。

【问题讨论】:

  • 我感觉这个问题与 Flask 无关,只要服务器运行正常。我认为您的问题的症结在于您的 Web 服务器的配置方式。据我所知,flask 并不关心你的域是什么。您可能有数百个域指向应用程序,您只需要正确配置 Web 服务器。网络服务器日志说明了什么?

标签: python apache flask virtualhost


【解决方案1】:

似乎在 os 环境中设置了 SERVER_NAME 与蓝图注册中的子域一起导致了此问题。我从 /etc/apache2/envvars 和子域逻辑中删除了 SERVER_NAME,它起作用了。

【讨论】:

    【解决方案2】:

    只设置一个 Apache 虚拟主机。然后在该虚拟主机中,使用ServerNameServerAlias 指令定义您的两个主机名。

    <VirtualHost *:80>
        ServerName www.domain-a.net
        ServerAlias www.domain-b.net 
        ...
    </VirtualHost>
    

    Flask 路由应该配置为只查看请求路径,而不是主机名。

    【讨论】:

    • 试过了,但也不管用。结果相同:ServerName 版本有效,但对 ServerAlias 名称的每个请求都是 404。
    • 您的 Flask 配置中是否有“www.domain-a.net”?
    • 我更多的是寻找如何做到这一点的解释,而不是调试我的配置。我已经在配置和代码中删除了对 www.domain-a.net 的所有引用。我最好的猜测是 Flask 在注册蓝图时从环境中获取 SERVER_NAME。然后与该名称不匹配的请求返回 404。
    猜你喜欢
    • 2016-01-14
    • 1970-01-01
    • 2016-01-24
    • 2013-11-22
    • 2019-07-16
    • 1970-01-01
    • 2019-12-11
    • 1970-01-01
    • 2021-12-14
    相关资源
    最近更新 更多