我家里有一台运行 Debian 8 的本地服务器。我使用路由器提供的 IP 地址访问此服务器。现在我想尝试使用虚拟主机来使我的服务器更好一些。我创建了两个虚拟主机blog.com
和mysite.com
。但我的问题是它们都不起作用。每次我在浏览器中输入它们时都没有任何反应。我已经在 Stack Overflow 或 Google 上尝试了几种解决方案。但都无济于事。
有什么建议吗?
我做了什么:
第一的:除了站点的默认目录之外,我还设置了另外两个目录,并更改了默认目录。
1)对于blog.com:/var/www/blog.com/html
2)对于mysite.com:/var/www/mysite.com/html
3)更改了默认值:/var/www/html 到 /var/www/default/html
第二:然后我在每个html
文件夹中创建了一个index.html
文件
第三:我在目录中创建了另外两个.conf
文件/etc/apache2/sites-available
,并更改了default.conf
DocumentRoot
博客网
<VirtualHost *:80>
ServerName blog.com
ServerAlias www.blog.com
ServerAdmin [email protected]
DocumentRoot /var/www/blog.com/html/
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
mysite.com.conf
<VirtualHost *:80>
ServerName mysite.com
ServerAlias www.mysite.com
ServerAdmin [email protected]
DocumentRoot /var/www/mysite.com/html/
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
变成default.conf
DocumentRoot
:
默认配置文件
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /var/www/default/html/
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
第四:启用我的两个新网站
sudo a2ensite blog.com.conf
sudo a2ensite mysite.com.conf
第五:我重新启动了 apache
sudo 服务 apache2 重启
也重新加载了
sudo 服务 apache2 重新加载
sudo /etc/init.d/apache2 重新启动
第六:我编辑了我的hosts
文件
127.0.0.1 localhost
ip blog.com
ip mysite.com
答案1
为了使基于名称的虚拟主机正常工作,您必须确保您尝试访问站点的主机名解析为服务器 IP 地址。这意味着,在您的例子中,blog.com 和 mysite.com 应该解析为服务器本地 IP 地址。这些应该通过相应地配置名称服务器来完成。
另一种在本地实现此目的的方法是将条目添加到本地 PC 的 hosts 文件中,以便正确解析。由于您已将条目放入服务器的 hosts 文件中,因此您的 PC 无法识别它,无法解析名称,并且对站点的任何请求都无法到达任何地方。
答案2
虚拟主机配置似乎没问题。问题是您的计算机不知道 blog.com 和 mysite.com 是谁。
您需要在您自己的计算机上进行在主机服务器文件中所做的配置:
- 如果您使用 Linux,您可以按照在服务器上相同的方式编辑
/etc/hosts
文件。 - 如果你使用 Windows,你可以编辑
C:\Windows\System32\Drivers\etc\hosts
文件
这使得计算机首先在 hosts 文件中检查是否有 blog.com 或 mysite.com 解析的记录,而不是直接在其上配置的主 DNS 中查找。