【问题标题】:How to configure two different webapps to work with Apache on the same host/port?如何配置两个不同的 webapp 以在同一主机/端口上与 Apache 一起使用?
【发布时间】:2014-04-13 13:12:28
【问题描述】:

我有 apache 服务器运行两个应用程序,用 python 编写的 php。 php 应该是根 url 上的服务器,即localhost。 Python 应用是一个restful 应用,应该在localhost/api/ 下。

我将 python 应用程序的配置放在单独的文件中,我有这一行:

WSGIScriptAlias /api /home/user/my_app/deployment/deployment/wsgi.py

问题是,现在我的 python 应用程序可以通过以下方式访问:

localhost/api/api/

我想要:

localhost/api

我可以将WSGIScriptAlias 更改为:

WSGIScriptAlias / /home/user/my_app/deployment/deployment/wsgi.py

因为无法访问 php 应用程序... 另一方面,我无法修改从 api 开始的暴露 url 的 python 应用程序...

所以我尝试了mod_rewrite

RewriteEngine On
RewriteRule ^/api(.*) /api/api/$1

但这也不起作用。有什么想法吗?

【问题讨论】:

    标签: python apache mod-rewrite mod-wsgi wsgi


    【解决方案1】:

    凭记忆,使用:

    WSGIScriptAlias /api /home/user/my_app/deployment/deployment/wsgi.py/api
    

    将“/api”添加到作为最后一个参数给出的文件路径的末尾会导致 mod_wsgi 调整传递给 WSGI 应用程序的 SCRIPT_NAME 并从中删除“/api”并将其添加到 PATH_INFO。因此,应用程序将获得完整的 URL 以进行路由。

    【讨论】:

      【解决方案2】:

      当您拥有WSGIScriptAlias /api /home/user/my_app/deployment/deployment/wsgi.py 时,应该可以通过/api 而不是/api/api/ 访问Python 应用程序。

      我的猜测是在您的 python 应用程序中,在其配置文件中,您将上下文根(我不知道确切的术语)设置为从 /api 服务。如果您在 python 应用程序配置中更改它/,那么它应该会为您修复它。

      【讨论】:

      • 假设我不能将我的“contex root”留空,所以它总是必须是一些东西。
      • 你能发布你的 wsgi.py 吗?
      猜你喜欢
      • 2016-09-30
      • 2016-01-10
      • 1970-01-01
      • 1970-01-01
      • 2016-05-02
      • 2021-05-03
      • 2013-10-06
      • 1970-01-01
      • 2020-12-22
      相关资源
      最近更新 更多