0

我正在通过 IP 地址访问的服务器上远程工作(亚马逊 ec2)

我禁用了默认站点

a2dissite default

创建了一个新目录来托管网站并创建了新的站点-可用于链接它

  a2ensite newsite

一切正常。

现在我想以同样的方式添加第二个站点

VirtualHost *:80>

#alias mysite "/var/www/site2/" #this doesnt seem to do anything

        ServerAdmin webmaster@localhost

        DocumentRoot /var/www/site2/
        <Directory /var/www/site2/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>


        ErrorLog ${APACHE_LOG_DIR}/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

我的结论是,似乎首先启用的站点似乎是被使用的站点。如果 url 是 IP,是否有添加第二个站点?似乎 apache 区分了传递给它的服务器名称,但由于我只使用 IP 我不能这样做。

理想情况下,我希望它设置如下

http://ip/site1 points to /var/www/site1

http://ip/site2 points to /var/www/site2

建议?谢谢-

4

2 回答 2

1

你忘记了ServerName参数。

这是最重要的参数,甚至在 DocumentRoot 之前。Host: www.example.com在基于命名的 VirtualHosting 系统上,apache 通过将请求中的 HTTP 标头与他的 Virtualhosts 列表中定义的唯一 ServerName 和多个 ServerAlis 列表进行比较来决定将使用哪个 VirtualHost 来回答 HTTP 请求。

如果未找到匹配项,则使用默认 VH(按字母顺序排列的第一个)。

通常 VirtualHosting 是通过这种方式完成的,并且需要对 DNS 记录或主机文件更改进行测试。另一种方式是基于 IP 的虚拟主机,每个虚拟主机有一个 IP。

您可以通过在 NameVirtualHost 常规设置中使用 IP(或多个)而不是 * 来混合这两种方式,也可以在VirtualHost指令中使用它们而不是. (表示所有 IP)。

于 2013-09-12T16:09:16.210 回答
0

我最终使用别名指令来获得所需的行为,这个链接帮助我到达那里: http ://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritebase

于 2013-09-16T14:08:31.880 回答