【问题标题】:Using Apache VirtualHosts to serve multiple subdomains from same global ip address使用 Apache VirtualHosts 为来自同一全局 IP 地址的多个子域提供服务
【发布时间】:2015-01-17 22:29:44
【问题描述】:
我有一个域myexample.com,我希望有多个子域,使用相同的 IP 地址。我想使用 Apache VirtualHosts 而不向客户端显示正在发生重定向。这是我想要的规则:
www.myexample.com gets content from the /var/www folder
www1.myexample.com gets content from the /var/www1 folder
www2.myexample.com gets content from the /var/www2 folder
这里的问题是这三个必须在同一台计算机上运行在端口 80 上,我不想使用 301 重定向,因为这样客户端就可以看到正在发生的事情。如何配置 VirtualHosts 来做到这一点?我不知道如何使用 mod_rewrite。我正在使用 Apache2 运行 Ubuntu 14.04。
谢谢!
【问题讨论】:
标签:
apache
apache2
subdomain
virtualhost
【解决方案1】:
要添加虚拟主机,建议将每个虚拟主机写入单独的文件,或将特定用户的所有虚拟主机写入一个文件。这提高了服务器的可管理性,当您想更改 1 个域的特定设置时,您可以轻松找到要编辑的文件。
在/etc/apache2 中编辑apache2.conf 文件时,文件底部应该有一行显示include sites-enabled/。如果没有,请添加它。
然后在sites-enabled 文件夹中为您的域或用户创建一个新文件。为了便于编辑,我会使用 nano <filename>.conf 来打开编辑器并设置文件名和扩展名。
在文件中插入以下code。
<VirtualHost 0.0.0.0:80>
ServerName www1.example.com
ServerAdmin admin@www1.example.com
DocumentRoot /var/www1
</VirtualHost>
要在同一个 IP 上获取所有内容,您可以输入 *:80 代替 0.0.0.0 以侦听系统上的所有 IP,或者输入服务器具有的特定公共 IP 地址以增强安全性。
此外,如果您想设置特定的 PHP 值或如果您想将日志文件移动到不同的文件使用,则可能需要其他指令:
CustomLog custompath/domainname.log
ErrorLog custompath/domainname.error.log
希望能解决您的问题