如何使用Apache虚拟主机与etc / hosts

我试图拥有

http://www.mysite.com和http://test.mysite.com

在生产Web服务器上运行,现在我在本地机器上进行一些基本testing,然后在生产Web服务器上传输数据。

如果可能的话,我想只使用apache的虚拟主机和/ etc / hosts。

我在virtualHost里面使用apache的ServerAlias指令,例如:

<VirtualHost *:80> DocumentRoot /path/to/mysite ServerName www.mysite.fr ServerAlias *.mysite.com <Directory /path/to/mysite> Options FollowSymLinks MultiViews AllowOverride All Order allow,deny Allow from all </Directory> </VirtualHost> 

然后在/ etc / hosts我把我想要的域名:

 127.0.0.1 www.mysite.com 127.0.0.1 test.mysite.com 

当我在本地testing这个,它的工作原理! (我可以访问www.mysite.com和test.mysite.com)当我在我的远程networking服务器上testing时,它只是忽略我的设置,只有默认的www.mysite.com可用。

我错过了什么? 或者我的问题应该是,是否有可能在web服务器上使用虚拟主机和/ etc / hosts文件访问这两个URL(www和test)?

你怎么试图访问test.mysite.com?

为了在互联网上工作,您需要在任何服务器/服务托pipe您的DNS上添加test.mysite.com的DNS Alogging,或为您的/ etc / hosts文件添加远程服务器公共IP的logging。

/ etc / hosts只适用于本地机器。

在您的本地设置上,在/ etc / hosts中:

 [YOUR REMOTE SERVER'S PUBLIC IP] www.mysite.com test.mysite.com 

但是,只有在为远程服务器的公用IP(test.mysite.com)添加DNS Alogging之前,这只适用于您(或任何手动将logging添加到适当主机文件的系统)。

是的,您所描述的configuration可能只要具备以下条件即可:

  • 使用networking浏览器的系统中的主机文件(或大多数情况下的DNS)
  • Web服务器上相应的虚拟主机configuration

这可能会帮助你的困境。

如果要使用静态IP为多个域提供服务,则需要多个接口。 除非你使用虚拟接口。

<免责声明:这只是一个例子。 使用风险自负。 >

打开: /etc/network/interfaces

 auto eth0 iface eth0 inet dhcp auto eth0:1 iface eth0:1 inet static address 192.168.0.2 network 192.168.0.0 netmask 255.255.255.0 #if you don't have a gateway setup, comment "gateway" line gateway 192.168.0.1 broadcast 192.168.0.255 auto eth0:2 iface eth0:2 inet static address 192.168.0.3 network 192.168.0.0 netmask 255.255.255.0 #if you don't have a gateway setup, comment "gateway" line gateway 192.168.0.1 broadcast 192.168.0.255 

然后:

转到: /etc/hosts

 192.168.0.2 www.mysite.com 192.168.0.3 test.mysite.com 

如果您设置了DNS,那么您可以使用相同的IP映射您的系统。 我希望这有帮助。 如果不是最清楚的信息,请与我联系。 请记住使用不同的IP和域名; 不要重新使用IP地址。 不要重复使用域名(NICKNAME)。 这首先是根据/etc/hosts唯一的匹配。