我在我的专用 Debian 6 上安装了 2 个不同的 Web 应用程序。第一个位于 /var/www/cast 中,分配的 URL 是“
example.example.com/cast
`
我安装了第二个,称为 Airtime。第二个安装没有提供安装路径,所以它自动安装在某个地方。现在,每当我尝试进入第一个时,我都会得到第二个。如果我尝试
example.example.com/cast
它通向空中时间。如果我去
例子.例子.com
它也通向那里......
这是 airtime-vhost 文件中的条目
<VirtualHost *:80>
ServerName example.example.com
#ServerAlias www.example.com
ServerAdmin [email protected]
DocumentRoot /usr/share/airtime/public
DirectoryIndex index.php
SetEnv APPLICATION_ENV "production"
<Directory /usr/share/airtime/public>
Options -Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
关于如何赋予它们一个唯一的 URL,您有什么想法吗?
答案1
听起来 Airtime 带有自己的网络服务器,但“cast(不管它是什么)没有。这是正确的吗?
无论如何,一般问题可以通过多种方式处理:
如果可能的话,您可以在同一个 Web 服务器中运行这两个应用程序。只有当其中一个应用程序依赖于与另一个应用程序不兼容的 Web 服务器的特定版本(假设 Apache 基于 Airtime 配置文件)时,这才是不可能的。但是,如果您可以将所有必需的 Apache 模块加载到 Apache 的单个实例中,足以运行这两个应用程序,那么是的,您只需将每个应用程序放在文档根目录中的单独路径中,例如 /var/www/airtime 和 /var/www/cast,它就会“正常工作”。或者,您可以通过模拟链接到 /var/www 或通过 Apache 配置指令将文件系统中的任何目录映射到文档根目录中。
您可以运行两个不同的 Web 服务器,但使用不同的端口运行它们。这将更改至少一个实例的 URL,要求在域后添加端口号,例如
http://example.com:8080/blah
端口号:8080
(我建议选择一个大于 1024 但小于 65000 的值,并在使用该值之前先在 Google 上搜索该值,以确保它不是您正在运行的服务的知名端口)。您可以运行两个不同的 Web 服务器,但使用不同的 IP 地址。这样,您可以将端口默认设置为 80(或 443
https
),但您需要两个不同的 IP。您可以运行两个不同的 Web 服务器,但将它们运行在同一个 IP 地址上,但位于不同的子域中。然后,您可以使用 URL 重写自动将请求映射到
http://airtime.example.com
airtime 应用程序,并将请求映射http://cast.example.com
到 cast 应用程序。对于上述所有操作,如果配置足够强大,您甚至可以在一个 Web 服务器中完成这些操作 —— Apache Web 服务器足够强大,可以在一个 Web 服务器实例中完成上述所有操作,尽管对于某些选择,您需要一些更奇特的配置设置。请注意,我强烈建议尝试在一个 Web 服务器实例中运行所有操作第一的,因为这种方式更灵活、更易于管理,而且您可能无需担心端口或 IP 地址即可进行配置,在前一种情况下,这会给您的用户带来麻烦,而在后一种情况下,这会给您带来麻烦。
Airtime 配置的问题在于它试图成为 vhost,*:80
这意味着对端口 80 上的服务器的每个请求都将被映射到 airtime 的文档根目录中,即/usr/share/airtime/public
。您需要将cast
应用程序和应用程序都airtime
放在同一个 vhost 中,否则,将 airtime 的 vhost 限制为*:80
类似于的内容airtime.example.com:80
,以便只有对该子域的请求才会传递到 airtime。
Debian 内置的 Apache 配置位于/etc/apache2/
目录中,因此请转到那里查看apache.conf
。请注意,它还有一个<VirtualHost *:80>
指令。好吧,您不能让两个虚拟主机声称处理端口 80 上的所有请求;只有其中一个可以获胜。这就是问题所在。