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


27

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

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

所以,问题是,我怎样才能使像这样的子域test.my.address.com

Apache的Listening Directive应该有一些魔术,但我无法弄清楚。另外,我知道如何使用Apache创建本地可用的站点,但这并不相同。


你并不需要Listen,看看阿帕奇虚拟主机:httpd.apache.org/docs/2.2/vhosts
明镜Hochstapler

主要问题仍然存在-在ServerName指令中写什么?
scythargon 2012年

Answers:


33

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

域名解析

因此,其他人可以访问test.my.address.com,他们首先必须能够将该名称解析为您的虚拟机的IP地址。那怎么办?

您的朋友最有可能已经做的是在该区域中创建一个A记录,该记录address.com指向my您的VM的IP地址。

到目前为止,一切都很好。但是呢test.my?它可能还没有条目。

您的朋友也可以简单地添加*.my到区域中(并将其指向相同的IP地址)。然后,所有对的请求something.my.address.com将发送到您的VM。大!

Apache虚拟主机

一旦可以访问您的VM,Apache必须知道如何处理该请求。这是我们使用Apache HTTP服务器的虚拟主机功能的地方。

我通常在Debian上运行,因此我将通过中的示例配置对此进行解释/etc/apache2/sites-available。让我们在其中有一个文件,test.my.address.com并在其中填充信息。

<VirtualHost *:80>
        ServerName test.my.address.com
        ServerAdmin webmaster@my.address.com

        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


非常感谢!:)我做出了自己的贡献,并向朋友发送了有关他的贡献的电子邮件。再次感谢:)
scythargon

@scythargon:我很高兴。我们在这里为您提供帮助:)
Der Hochstapler

当我的朋友没有回答我时,可以吗?我想到了它是如何工作的:http请求test.my.address.com转到my.address.com,然后我在VM上的Apache服务器处理它。但是您说过,address.com上的DNS服务器应该首先了解test.my这一切,而又不了解my,为什么?
scythargon 2012年

@scythargon:对于要到达服务器的任何HTTP请求,任何客户端都必须首先弄清楚必须将请求发送到哪个服务器。因此主机名必须有效。否则,只会告诉他们“该名称不存在”。
Der Hochstapler,2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.