Apache 一台服务器上的多个主机-不同的端口

Apache 一台服务器上的多个主机-不同的端口

我已将 apache 配置为监听端口 80 和 8080,并为站点创建了 2 个 conf 文件。

端口 80

<VirtualHost *:80>
 DocumentRoot /local/Web

    AddHandler cgi-script cgi
     Alias /access /local/Web/

    <Directory "/local/Web">
      AllowOverride All
      Options +ExecCGI

      DirectoryIndex index.html
    </Directory>
</VirtualHost>

访问 127.0.0.1 会从 /local/Web 加载正确的站点

端口 8080

<VirtualHost *:8080>
 DocumentRoot /local/Sites

    AddHandler cgi-script cgi
        Alias /site1 /local/Sites/site1/
        Alias /site2 /local/Sites/site2/
        Alias /site3 /local/Sites/site3/

    <Directory "/local/Sites">
      AllowOverride All
      Options +ExecCGI

      DirectoryIndex index.html
    </Directory>
</VirtualHost>

访问 127.0.0.1:8080 会出现“访问被拒绝”的情况,这没问题

访问 127.0.0.1:8080/site1 会从 /local/Sites/site1 加载正确的站点

访问 127.0.0.1:8080/site2 会从 /local/Sites/site2 加载正确的站点

访问 127.0.0.1:8080/site3 会从 /local/Sites/site3 加载正确的站点

我无法从端口 80 访问 site1、site2、site3,也无法从端口 8080 访问 /access - 这一切都符合预期。

我现在正尝试使用新的配置文件将新站点添加到端口 80。我希望它有自己的配置文件,如下所示:

<VirtualHost *:80>
 DocumentRoot /local/Web

    AddHandler cgi-script cgi
    Alias /new /local/new

    <Directory "/local/Web">
      AllowOverride All
      Options +ExecCGI

      DirectoryIndex index.html
    </Directory>
</VirtualHost>

但是当我尝试访问 127.0.0.1/new 时,我得到“未找到对象!”,并且 apache error_log 中没有显示任何内容

知道如何让 /new 在 80 端口上工作吗?

答案1

Apache 不知道 VirtualHost *:80 应该使用哪个配置。有两种方法可以解决此问题:

  1. 将这两个配置合并到一个虚拟主机中
  2. 使用 ServerName 和“主机名”URL 来确定应该使用哪个 VirtualHost。

相关内容