Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何让Flask蓝图与多个域协同工作?_Python_Apache_Flask_Virtualhost - Fatal编程技术网

Python 如何让Flask蓝图与多个域协同工作?

Python 如何让Flask蓝图与多个域协同工作?,python,apache,flask,virtualhost,Python,Apache,Flask,Virtualhost,我有一个Flask应用程序,希望它能在Apache+WSGI后面为www.domain-a.net和www.domain-b.net工作。我可以让它为一个或另一个工作,但找不到一种方法让它为两个工作。似乎最先注册的域是唯一有效的域 最好将两个Apache虚拟主机设置为使用相同的WSGI配置。我可以让那部分工作。但是Flask只返回404作为从第二个VirtualHost发送的所有内容。只设置一个Apache VirtualHost。然后在该虚拟主机中,使用ServerName和ServerAli

我有一个Flask应用程序,希望它能在Apache+WSGI后面为www.domain-a.net和www.domain-b.net工作。我可以让它为一个或另一个工作,但找不到一种方法让它为两个工作。似乎最先注册的域是唯一有效的域


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

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

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

服务器名www.domain-a.net
ServerAlias www.domain-b.net
...

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

在操作系统环境中设置服务器名称似乎与blueprint注册中的子域一起导致了此问题。我从/etc/apache2/envvars和子域逻辑中删除了服务器名称,它成功了。

尝试过,但也没有成功。同样的结果:ServerName版本可以工作,但是对ServerAlias名称的每个请求都是404。您的Flask配置中是否有“www.domain-a.net”呢?我更想了解如何执行此操作,而不是调试我的配置。我已经删除了配置和代码中对www.domain-a.net的所有引用。我的最佳猜测是Flask在注册蓝图时从环境中获取服务器名称。然后,与该名称不匹配的请求返回404。我感觉这个问题与Flask无关,只要服务器运行正常。我认为问题的症结在于web服务器的配置方式。据我所知,flask并不关心您的域是什么。您可能有数百个域指向应用程序,只需正确配置web服务器即可。web服务器日志是怎么说的?