通过LAN从另一台计算机访问虚拟主机

时间:2012-06-28 13:01:05

标签: windows apache windows-7 virtualhost wampserver

  • 我使用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中的浏览器访问这些网页? (我的意思是任何通过LAN连接到PC_1的PC。)

5 个答案:

答案 0 :(得分:23)

在您的virtualhost指令中,将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上,那么在您局域网中的其他计算机上,hosts条目将如下所示:

192.168.1.70     www.project1.com

重启apache,它应该可以正常工作。

请注意,当您使用虚拟主机时,如果无法在HTTP请求标头中传递的域与配置中的站点设置之间进行匹配,则apache将使用第一个定义作为默认值。为什么你的默认页面出现了。

您告诉apache使用NameVirtualHost *:80指令绑定到所有IP,但之后没有为该外部IP设置站点。希望有所帮助!

答案 1 :(得分:22)

除了danp的回答之外,您还可以通过为虚拟主机分配端口来访问虚拟主机,而无需更改客户端计算机的etc / hosts文件。如果您想使用移动设备或平板电脑设备访问服务器,这是理想的选择:

  1. 在以下位置编辑服务器的httpd.conf文件:

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

    搜索&#34; Listen&#34; (第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
    

    &#34;虚拟主机&#34; 标记更改为端口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
    

答案 2 :(得分:5)

本地网络中有两台计算机。

计算机(192.168.1.70)安装程序(D:\ wamp \ bin \ apache \ Apache2.2.11 \ conf \ extra \ 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>

B计算机设置(c:/ windows / system32 / drives / etc / hosts):

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

B访问A,我的项目正在运行。

答案 3 :(得分:2)

要为所选答案考虑的几个更新点:

    在Apache版本之后不再使用
  1. NameVirtualHost 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地址为192.168.1.XXX的LAN (注意最后的八位字节不在IP上以允许整个 范围内)。

    这允许您配置每个项目的访问权限 通过局域网提供,另一个仅在本地提供。

    # 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上的流量转发给您的主机,您的网站将不会公开提供,我相信这被认为是最佳做法。如果您需要控制LAN上设备可用的项目,则尤其必要。

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

  4. *我之所以这样,是因为在本地开发服务器上拥有访问限制是很常见的,您需要专门将其提供给本地网络。

答案 4 :(得分:0)

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

因此您需要将它们添加到另一台局域网上的hosts文件中。