2012-06-28 97 views
23
  • 我使用Windows 7和Wamp 2.2服务器。
  • 我已经设置了2个虚拟主机:www.project1.comwww.project2.com
  • 我已将“hosts”,httpd.confhttpd-vhosts.conf文件修改为我在下面提到的更改。

使用我的浏览器,当我输入www.project1.comwww.project2.com,我成功地让我的网页上打开已经在服务器上安装的笔记本电脑。通过局域网从另一台计算机访问虚拟主机

变化在 “hosts文件”:我已经附加了如下的文件的末尾: -

127.0.0.1  localhost 
127.0.0.1  www.project2.com 
127.0.0.1  www.project1.com 

变化在httpd.conf文件: -

Include conf/extra/httpd-vhosts.conf 

变化在httpd-vhosts文件中: -

NameVirtualHost *:80 

<Directory "D:/websites/"> 
    AllowOverride All 
    Order Deny,Allow 
    Allow from all 
    </Directory> 
<VirtualHost 127.0.0.1> 
    DocumentRoot "D:/websites/wamp/www/" 
    ServerName localhost 
</VirtualHost> 


<VirtualHost 127.0.0.1> 
    DocumentRoot "D:/websites/project1/" 
    ServerName www.project1.com 
</VirtualHost> 


<VirtualHost 127.0.0.1> 
    DocumentRoot "D:/websites/project2/" 
    ServerName www.project2.com 
</VirtualHost> 


现在;因为我可以从 PC_1(带服务器的那个)的浏览器打开这些网页,我如何从 PC_2的浏览器访问这些网页? (我的意思是任何通过局域网连接到 PC_1的计算机。)

+0

我对这一切都很陌生,并且还有一些问题。 1.我的上述代码适合我想实现的目标吗? @Gabriel - 与上面的代码,你的建议,更换计算机的hosts文件,它会打开上键入www.project1.com – jatin3893

+0

是的,这是应该做这种正常方式WAMP的默认页面。例如,您可以设置多个ServerAlias选项,例如,如果您想将其与动态DNS服务结合使用。 – dmp

+0

只是指该链接 http://stackoverflow.com/questions/2530418/wamp-server-multiple-virtual-hosts-are-not-working-on-windows/17850423#17850423 我回答它... – 2013-07-25 06:44:46

回答

20

在您的虚拟主机指令中,将127.0.0.1更改为*:80,并按照Gabriel所述,在另一台计算机的主机文件中添加一个条目,添加要与您的服务器的IP关联的域。

当你将一个明确的IP放入指令时,apache只会监听该IP - 但通配符会告诉它绑定到可用的所有IP。

<VirtualHost *:80> 
    DocumentRoot "D:/websites/project1/" 
    ServerName www.project1.com 
</VirtualHost> 

如果你的服务器是192.168.1.70例如,然后在你的局域网的其他机器的主机条目看起来像:

192.168.1.70  www.project1.com 

重新启动Apache,它应该工作的罚款。

需要注意的是,当您使用虚拟主机时,apache会使用第一个定义作为默认值,因为它无法在HTTP请求头中传递的域与config中的网站设置之间进行匹配就是为什么你的默认页面出现。

你告诉apache绑定到所有IP地址的NameVirtualHost *:80指令,但没有为该外部IP设置一个站点。希望有所帮助!

+0

你如何做到这一点,所以你可以使用ipaddress/virtualhostname从任何局域网机器,而无需编辑访问机器主机? – dibs

+0

如果你想从iPhone测试这个例子呢?除了更改主机文件还有其他方法吗? – Victor

0

您需要更改您尝试从中查看该页面的计算机上的hosts文件。

所以你需要将它们添加到其他局域网机器上的hosts文件。

+0

与上面的代码,你的建议,更换计算机的hosts文件,它会打开上键入www.project1.com WAMP的默认页我如何让它去www.project1的索引页.COM? – jatin3893

5

本地网络中有两台电脑。

一台电脑(192.168.1。70)设置(d:\瓦帕\ BIN \阿帕奇\ Apache2.2.11 \ CONF \额外\的httpd-vhosts.conf):

<VirtualHost *:80> 
    DocumentRoot "D:/websites/project1/" 
    ServerName www.project1.com 
</VirtualHost> 

<VirtualHost *:80> 
    DocumentRoot "D:/websites/project2/" 
    ServerName www.project2.com 
</VirtualHost> 

乙计算机设置(C:/窗/ SYSTEM32 /驱动器的/ etc /主机):

192.168.1.70 www.project1.com 
192.168.1.70 www.project2.com 

B访问A,我的项目正在工作。

19

除了danp的回答,您可以访问虚拟主机,而无需通过将端口分配给虚拟主机来更改客户端计算机的etc/hosts文件

  1. 编辑服务器的httpd.conf文件在:

    \wamp\bin\apache\apache2.2.x\conf\httpd.conf 
    

    搜索“Listen”(约61行),如果你想用手机或平板电脑来访问服务器,这是理想。您应该看到,它允许Apache监听端口80的情况如下:

    Listen 0.0.0.0:80 
    Listen [::0]:80 
    

    添加以下行来添加监听端口81(或任何端口):

    Listen 0.0.0.0:81 
    Listen [::0]:81 
    
  2. 编辑httpd-vhosts.conf文件在:

    \wamp\bin\apache\apache2.2.x\conf\extra\httpd-vhosts.conf 
    

    “虚拟主机”标签更改为端口81

    <VirtualHost *:81> 
        DocumentRoot "D:/websites/project1/" 
        ServerName www.project1.com 
    </VirtualHost> 
    
  3. 重新启动Apache服务器。

  4. 在客户机/平板电脑/手机上的Web浏览器,输入之后按以下格式的端口号服务器的IP地址(192.168.0.10,或任何IP):

    http://192.168.0.10:81 
    
+0

完美的,我只想补充一点,你可能需要在防火墙 –

+0

我也有坚持的端口打开端口81 WAMP(入站规则)窗口。如果只有这样一种方法,在本地LAN中使用多个主机名称(在某些路由器的DNS设置或其他地方)来制作一台Windows机器,将会更加优雅... –

+1

所有设备的完美解决方案。杀手解决方案:)经过测试和证明。谢谢 – ColinWa

2

几个更新点来考虑所选答案:

  1. NameVirtualHost是Apache的版本后,不再使用 2.3.11并且可以省略。

    在2.3.11及更高版本,任何时候IP地址和端口组合在多个虚拟主机使用 ,基于域名的虚拟主机是 自动为地址启用。

  2. 因为我们正在谈论主办网站通过局域网,让我们设置一个 要求*您 本地网络上的IP地址只有接受连接。例如,在常见的Linksys路由器上,分配给网络上每个设备的默认IP地址为192.168.1.100 至192.168.1.255。您可以通过使用Require ip 192.168.1 (注意最后一个八位位组离开IP以允许整个 范围),允许连接来自IP地址为192.168.1.XXX的局域网上的所有设备。

    这允许您设置每个项目的访问,使一个可能 可通过LAN,另一种是只可本地使用。

    # This will allow all LAN connections to www.project1.com 
    <VirtualHost *:80> 
        DocumentRoot "D:/websites/project1/" 
        <Directory "D:/websites/project1/"> 
         Require local 
         Require ip 192.168.1 
        </Directory> 
        ServerName www.project1.com 
    </VirtualHost> 
    
    # This will allow only the machine hosting the website to access www.project2.com 
    <VirtualHost *:80> 
        DocumentRoot "D:/websites/project2/" 
        <Directory "D:/websites/project2/"> 
         Require local 
        </Directory> 
        ServerName www.project2.com 
    </VirtualHost> 
    

    当你的网站将不会被公开在端口80到主机服务,而不路由器转发流量,我相信这被认为是最好的做法。如果您需要控制局域网上的设备可以使用哪些项目,则尤其必要。

  3. 提醒:您的主机应配置为使用静态IP地址 ,而不是由您的路由器的DHCP分配一个。由于我们是 编辑其他设备的主机文件指向服务器的IP,我们不希望它改变。

*我包括这一点,因为它是常见的有一个本地开发服务器上的访问限制,您将需要专门将其提供给您的本地网络。

相关问题