在 apache 中将 wsgi 设置为别名路径时出现问题
Issue when setting-up wsgi as an alias path in apache
注意:这个问题与“Add a prefix to all Flask routes”不同,因为我试图在 apache 级别解决这个问题。此外,针对烧瓶路线的建议修复无效!
从 this post 开始,我正在尝试将 apache 设置为默认提供 PHP 文件,但将给定的别名(即 /flaskapp
)指向 wsgi 路径. wsgi 文件依次将请求路由到 python flask 应用程序。
这是我正在尝试的 apache 配置(在 000-default.conf
下):
<VirtualHost *:80>
ServerName localhost
ServerAdmin webmaster@localhost
Alias / /var/www/html/
<Directory "/var/www/html">
Order Deny,Allow
Allow from all
Require all granted
</Directory>
WSGIScriptAlias /flaskapp "/var/www/flaskapp/deploy.wsgi"
<Directory /var/www/flaskapp>
Options +ExecCGI
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
在执行 service apache2 restart
之后,我发现对 http://myip/flaskapp
的请求会导致 404 错误。其他一切正常。
到目前为止我尝试过的事情:
- 仔细检查所有文件和文件夹路径(未发现问题)
- 使用上述代码的 wsgi 部分将 wsgi 应用程序设置为独立的虚拟主机(工作正常)
- 将
app.config['APPLICATION_ROOT'] = '/flaskapp'
添加到我的 app.py 文件,正如问题“Add a prefix to all Flask routes”所建议的(没有任何效果)
我哪里出错了?
而不是:
Alias / /var/www/html/
<Directory "/var/www/html">
Order Deny,Allow
Allow from all
Require all granted
</Directory>
使用:
DocumentRoot /var/www/html/
<Directory "/var/www/html">
Order Deny,Allow
Allow from all
Require all granted
</Directory>
将“/”与 Alias
一起使用优先于其他所有内容,包括 mod_wsgi 在子 URL 处拦截请求的能力。因此,对于网站根目录下的内容,您需要使用 DocumentRoot
指令。
注意:这个问题与“Add a prefix to all Flask routes”不同,因为我试图在 apache 级别解决这个问题。此外,针对烧瓶路线的建议修复无效!
从 this post 开始,我正在尝试将 apache 设置为默认提供 PHP 文件,但将给定的别名(即 /flaskapp
)指向 wsgi 路径. wsgi 文件依次将请求路由到 python flask 应用程序。
这是我正在尝试的 apache 配置(在 000-default.conf
下):
<VirtualHost *:80>
ServerName localhost
ServerAdmin webmaster@localhost
Alias / /var/www/html/
<Directory "/var/www/html">
Order Deny,Allow
Allow from all
Require all granted
</Directory>
WSGIScriptAlias /flaskapp "/var/www/flaskapp/deploy.wsgi"
<Directory /var/www/flaskapp>
Options +ExecCGI
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
在执行 service apache2 restart
之后,我发现对 http://myip/flaskapp
的请求会导致 404 错误。其他一切正常。
到目前为止我尝试过的事情:
- 仔细检查所有文件和文件夹路径(未发现问题)
- 使用上述代码的 wsgi 部分将 wsgi 应用程序设置为独立的虚拟主机(工作正常)
- 将
app.config['APPLICATION_ROOT'] = '/flaskapp'
添加到我的 app.py 文件,正如问题“Add a prefix to all Flask routes”所建议的(没有任何效果)
我哪里出错了?
而不是:
Alias / /var/www/html/
<Directory "/var/www/html">
Order Deny,Allow
Allow from all
Require all granted
</Directory>
使用:
DocumentRoot /var/www/html/
<Directory "/var/www/html">
Order Deny,Allow
Allow from all
Require all granted
</Directory>
将“/”与 Alias
一起使用优先于其他所有内容,包括 mod_wsgi 在子 URL 处拦截请求的能力。因此,对于网站根目录下的内容,您需要使用 DocumentRoot
指令。