子目录上的 Apache 虚拟主机

Apache virtual hosts on subdirectories

我正在尝试将 Apache 设置为通过子目录在一个 IP 地址上为多个应用程序提供服务。比方说,我想通过 http://aaa.bbb.ccc.ddd/app1 and App2 over http://aaa.bbb.ccc.ddd/app2 访问 App1。 App1 和 App2 都是独立的 django 项目。我确保这两个应用程序都可以正常工作,只通过 Apache 提供其中一个应用程序。

我在 Apache 的 httpd.conf 文件中添加了以下行:

# App1
<VirtualHost *:80>
    DocumentRoot "D:/Projects/App1/App1"
    ServerName App1

    <Directory "D:/Projects/App1/App1">
        <Files wsgi.py>
            Require all granted
        </Files>
    </Directory>

    WSGIScriptAlias /app1 "D:/Projects/App1/App1/wsgi.py"
</VirtualHost>

# App2
<VirtualHost *:80>
    DocumentRoot "D:/Projects/App2/App2"
    ServerName App2

    <Directory "D:/Projects/App2/App2">
        <Files wsgi.py>
            Require all granted
        </Files>
    </Directory>

    WSGIScriptAlias /app2 "D:/Projects/App2/App2/wsgi.py"
</VirtualHost>

像这样工作会导致出现“禁止访问,您无权访问此资源”的错误。当我再打电话给 http://aaa.bbb.ccc.ddd/app2 from another machine. Similar to this, if I put the App2 virtual host in front of the App1 virtual host, I can not access http://aaa.bbb.ccc.ddd/app1 时。因此只能访问 App1 或 App2,但不能同时访问它们。

第一个问题:我的想法是否有可能通过 sub-URL 向网页提供服务?如果没有,还有什么选择?为不同的应用程序使用不同的端口?如果这是一种“有效”的方法,为什么我只能访问一个应用程序而不是两个应用程序。

VirtualHost指令的目的是根据请求的主机提供不同的应用程序。 要根据目录解析应用程序,您可以使用 Alias 指令而不是 VirtualHost。