34
  • 我正在使用带有 Wamp 2.2 服务器的 Windows 7。
  • 我已经设置了 2 个虚拟主机:www.project1.comwww.project2.com.
  • 我已将“主机”、httpd.conf. 和httpd-vhosts.conf文件修改为我在下面提到的更改。

使用我的浏览器,当我输入www.project1.comor时www.project2.com,我成功地在安装了服务器的笔记本电脑上打开了我的网页。

“主机文件”中的更改:我在文件末尾附加了以下内容:-

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_2PC_1(我的意思是任何通过 LAN连接的 PC 。)

4

5 回答 5

36

除了 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
    
于 2015-02-04T03:29:03.627 回答
24

在您的 virtualhost 指令中,更改127.0.0.1*:80Gabriel 提到的,在另一台机器上的 hosts 文件中添加一个条目,添加您的域以与您的服务器的 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,它应该可以正常工作。

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

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

于 2012-07-05T10:38:41.793 回答
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,我的项目正在运行。

于 2014-02-23T06:34:02.157 回答
4

选定答案需要考虑的几个更新点:

  1. NameVirtualHostApache 2.3.11后不再使用 ,可以省略。

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

  2. 因为我们谈论的是通过 LAN 托管网站,所以让我们设置一个要求*,只接受来自本地网络上 IP 地址的连接。例如,在普通的 Linksys 路由器上,分配给网络上每个设备的默认 IP 是在 192.168.1.100 到 192.168.1.255 之间。您可以使用 IP 地址 192.168.1.XXX 允许来自 LAN 上所有设备的连接Require ip 192.168.1 (注意最后一个八位字节不在 IP 中以允许整个范围)。

    这允许您配置每个项目的访问权限,以便一个可以通过 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 上的流量转发到您的主机,您的网站将不会公开提供服务,但我相信这被认为是最佳实践。如果您需要控制哪些项目可用于 LAN 上的设备,则这一点尤其必要。

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

* 我将其包括在内是因为本地开发服务器上的访问限制很常见,您需要专门使其对本地网络可用。

于 2017-03-22T05:30:08.303 回答
0

您需要更改试图从中查看页面的机器上的主机文件。

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

于 2012-06-28T13:02:59.093 回答