如何在基于名称的虚拟主机上创建子域名?

如何在基于名称的虚拟主机上创建子域名?

我有基于名称的托管,我们称之为my.address.com。我的朋友有“普通”地址address.com,并给了我一个可以通过 SSH 访问的虚拟机。

他还对端口施展了一些魔法,现在,安装 Apache 后,我可以/var/www通过进行访问my.address.com

那么,问题是,我如何创建类似的子域名test.my.address.com

应该有一些魔法Apache 的 Listen 指令,但我搞不懂。另外,我知道如何用 Apache 创建本地可用站点,但这并不一样。

答案1

为了能够创建子域,您必须确保以下几点:

DNS

为了使其他人能够访问test.my.address.com,他们首先必须能够将该名称解析为您的虚拟机的 IP 地址。如何做到这一点?

你的朋友很可能已经做了,就是创建一个一个记录address.com区域中,它指向my您的虚拟机的 IP 地址。

到目前为止,一切顺利。但是怎么办test.my?它可能还没有条目。

您的朋友*.my也可以简单地添加到该区域(并将其指向相同的 IP 地址)。然后所有请求something.my.address.com都将发送到您的虚拟机。太棒了!

Apache 虚拟主机

一旦你的虚拟机可以访问,Apache 就必须知道如何处理请求。这时我们使用虚拟主机Apache HTTP 服务器的功能。

我通常在 Debian 上运行,因此我将使用 中的示例配置来解释这一点/etc/apache2/sites-available。让我们在那里创建一个文件test.my.address.com并填充信息。

<VirtualHost *:80>
        ServerName test.my.address.com
        ServerAdmin [email protected]

        DocumentRoot /var/www/test.my.address.com/
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/test.my.address.com/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/test.my.address.com.error.log

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

        CustomLog ${APACHE_LOG_DIR}/test.my.address.com.access.log combined
</VirtualHost>

按键设置这个文件里面是ServerName指示. 这会告诉 Apache 这个服务器应该可用。可以使用ServerAlias 指令

如果您也在使用 Debian,那么sudo a2ensite test.my.address.com在创建文件后请不要忘记sudo invoke-rc.d apache2 restart

相关内容