我有基于名称的托管,我们称之为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
。