同一域上的两个 Web 应用程序

同一域上的两个 Web 应用程序

我在我的专用 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.comairtime 应用程序,并将请求映射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 上的所有请求;只有其中一个可以获胜。这就是问题所在。

相关内容