【问题标题】:Issue when setting-up wsgi as an alias path in apache在 apache 中将 wsgi 设置为别名路径时出现问题
【发布时间】:2016-07-26 19:16:18
【问题描述】:

注意:这个问题与“Add a prefix to all Flask routes”不同,因为我试图在 apache 级别解决这个问题。此外,烧瓶路线的建议修复无效!

this post 开始,我尝试将 apache 设置为默认提供 PHP 文件,但将给定别名(即/flaskapp)指向 wsgi 路径。 wsgi 文件依次将请求路由到 python 烧瓶应用程序。

这是我正在尝试的 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”所建议的那样(没有任何效果)

我哪里出错了?

【问题讨论】:

  • 不要使用别名/。这完全覆盖了 mod_wsgi。使用 DocumentRoot 指令指定主站点文件的位置。这样 mod_wsgi 可以覆盖子 URL。
  • 是的,您是正确的,与声称的重复问题不同。不过,这里的人们通常不了解其中的微妙之处,只是做出假设。
  • 感谢@GrahamDumpleton - 添加 DocumentRoot 解决了这个问题。随意写这个作为答案,或者我今晚可以这样做......

标签: python apache flask virtualhost


【解决方案1】:

代替:

    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 指令。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-28
    • 2011-03-04
    • 2018-03-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多