繁体   English   中英

通过局域网从另一台机器访问虚拟主机

[英]Access virtual host from another machine over LAN

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

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

主机文件”中的更改:我已将以下内容附加到文件末尾:-

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 (带有服务器的浏览器)中的浏览器打开这些 web 页面,我如何从 PC_2 中的浏览器访问这些PC_2页面? (我指的是通过 LAN 连接到PC_1的任何 PC。)

除了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 

在virtualhost指令中,将127.0.0.1更改为*:80 ,正如Gabriel所提到的,在另一台计算机的hosts文件中添加一个条目,添加您的域以与服务器的IP相关联。

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

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

例如,如果您的服务器位于192.168.1.70上,那么在LAN上的其他计算机上,hosts条目将如下所示:

192.168.1.70     www.project1.com

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

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

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

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

计算机(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,我的项目正在运行。

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

  1. Apache版本2.3.11之后不再使用NameVirtualHost ,可以省略。

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

  2. 因为我们正在谈论通过LAN托管网站,所以我们要求*仅接受来自本地网络上IP地址的连接。 例如,在公共Linksys路由器上,分配给网络上每个设备的默认IP介于192.168.1.100到192.168.1.255之间。 您可以通过使用Require ip 192.168.1允许LAN上所有设备与IP地址192.168.1.XXX进行连接(请注意,最后一个八位字节不在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分配。 由于我们正在编辑其他设备的hosts文件以指向服务器的IP,因此我们不希望它发生变化。

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

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

因此,您需要将它们添加到其他lan计算机上的hosts文件中。

如果您无法访问本地的虚拟主机服务器。网络,请检查您是否已将防火墙配置为允许 httpd.exe 文件(位于文件夹 C:\wamp64\bin\apache\apache2.4.51\bin)允许传入和传出连接

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM