如何从同一网络上的另一台计算机连接到该本地主机?


171

我目前正在研究一个项目,我想在家里的两台笔记本电脑上进行测试,其中一台笔记本电脑连接到另一台笔记本电脑。我正在使用XAMPP。我该怎么做呢?

Answers:


283

绝对有可能。在这里,我们将以Apache为例。

假设您是Symfony2的忠实拥护者,并且您想http://symfony.local/从4台不同的计算机(托管网站的主要主机,以及连接到(无论是否通过无线方式)主计算机。

一般草图:

在此处输入图片说明


1 设置虚拟主机

您首先需要在apache httpd-vhosts.conf文件中设置虚拟主机。在XAMP上,您可以在此处找到此文件:C:\xampp\apache\conf\extra\httpd-vhosts.conf。在MAMP上,您可以在此处找到此文件:Applications/MAMP/conf/apache/extra/httpd-vhosts.conf此步骤将在您的计算机上准备Web服务器以处理symfony.local请求。您需要提供虚拟主机的名称以及网站的根/主文件夹。为此,请在该文件末尾添加以下行。您需要将更改DocumentRoot为主文件夹所在的位置。在这里,我已/Applications/MAMP/htdocs/Symfony/成为我网站的根源。

<VirtualHost *:80>
    DocumentRoot "/Applications/MAMP/htdocs/Symfony/"
    ServerName symfony.local
</VirtualHost>

2 配置您的主机文件

为了使客户端(在这种情况下,您是浏览器)理解symfony.local真正的含义,您需要在计算机上编辑主机文件。每次在浏览器中键入URL时,计算机都会尝试理解它的含义!symfony.local对计算机而言并不意味着任何东西。因此它将尝试将名称解析为symfony.localIP地址。为此,首先检查计算机上的主机文件,看他是否可以将IP地址与您在地址栏中键入的内容相匹配。如果不能,它将询问DNS服务器。这里的技巧是将以下内容附加到您的hosts文件。

  • MAC上,该文件在/private/etc/hosts;
  • LINUX上,该文件位于 /etc/hosts;
  • WINDOWS上,该文件在\Windows\system32\private\etc\hosts;
  • WINDOWS 7上,该文件位于\Windows\system32\drivers\etc\hosts;
  • WINDOWS 10上,该文件位于\Windows\system32\drivers\etc\hosts;

Hosts file

##
# Host Database
# localhost is used to configure the loopback interface
##
#...
127.0.0.1           symfony.local

从现在开始,每次在此计算机上键入symfony.local时,您的计算机将使用环回接口连接到symfony.local。它会理解您要在localhost(127.0.0.1)上工作。

3 symfony.local从另一台计算机访问

我们终于到达您的主要问题:

现在如何通过另一台计算机访问我的网站?

好吧,这现在很容易!我们只需要告诉其他计算机如何找到它们symfony.local!我们如何做到这一点?

3a 获取托管该网站的计算机的IP地址

我们首先需要知道托管网站的计算机上的IP地址(从一开始就一直在使用的IP地址)。在终端中,在MACLINUX类型上ifconfig |grep inet,在WINDOWS类型上ipconfig。假设此计算机的IP地址为192.168.1.5

3b 在您尝试访问网站的计算机上编辑主机文件。

同样,在MAC上,该文件位于/private/etc/hosts; 中。在LINUX/etc/hosts; 并在WINDOWS\Windows\system32\private\etc\hosts(如果使用WINDOWS 7,则在\Windows\system32\drivers\etc\hosts)中。

##
# Host Database
# localhost is used to configure the loopback interface
##
#...
192.168.1.5         symfony.local

4 最后在浏览器中享受结果

现在,您可以进入浏览器并键入http://symfony.local以在其他计算机上精美地查看您的网站!请注意,如果您是OSX用户,则可以通过Virtual Box在Internet Explorer上测试您的网站(如果您不想使用Windows计算机),则可以应用相同的策略。在OSX上制作Windows / IE测试环境中对此进行了详细说明。


您还可以从移动设备访问本地主机

您可能想知道如何从移动设备访问本地主机网站。在某些情况下,您将无法修改设备上的主机文件(iPhone,iPad ...)(不包括越狱)。

那么,解决方案是在托管网站的计算机上安装代理服务器,然后从您的iPhone连接到该代理。实际上,在以下帖子中对此进行了很好的解释,并且设置时间并不长:

在Mac上,我建议:使用移动设备上的本地主机名测试Mac OS X网站:使用SquidMan作为代理。这是100%免费的解决方案。某些人还可以将Charles用作代理服务器,但它是50美元。

在Linux上,可以通过使用Squid作为代理服务器来适应上面的Mac OS 。

在Windows上,您可以使用Fiddler进行操作。以下帖子描述了该解决方案:使用Fiddler监视iPhone流量


编辑23/11/2017:嘿,我不想修改我的主机文件

@Dre。是否可以通过不手动编辑主机文件来从另一台计算机访问网站的方法?假设我有100台计算机想要访问该网站

这是一个有趣的问题,与OP问题有关,请允许我提供帮助。

您必须在网络上进行更改,以便每台计算机都知道您的网站托管在哪里。大多数日常路由器都不会这样做,因此您必须在网络上运行自己的DNS服务器

假设您有一个路由器(192.168.1.1)。该路由器具有DHCP服务器,并为网络上的100台计算机分配IP地址。

现在,假设与上述相同,您在同一网络上的一台计算机上192.168.1.5拥有您的网站。我们称那台机器pompei

$ echo $HOSTNAME
pompei

和以前一样,该机器pompei192.168.1.5运行的HTTP服务器供应您的网站symfony.local

对于要知道symfony.local托管在其中的每台计算机,pompei我们现在需要网络上的自定义DNS服务器,该服务器知道symfony.local托管在何处。然后,网络上的设备将能够解析pompei内部提供的域名。

3个简单步骤。

Step 1: DNS Server

在您的网络上设置DNS服务器。让我们它pompei的便利性和使用类似的dnsmasq

的dnsmasq提供域名系统(DNS)转发器...

我们要pompei运行DNSmasq来处理DNS请求Hey, pompei, where is symfony.local并做出响应Hey, sure think, it is on 192.168.1.5 but don't take my word for it

继续安装dnsmasq,dnsmasq配置文件通常/etc/dnsmasq.conf取决于您的环境。

我个人使用no-resolv和google服务器server=8.8.8.8 server=8.8.8.4

*注意:*如果修改/ etc / hosts文件,请务必重新启动DNSmasq,否则更改不会生效。

Step 2: Firewall

要工作,pompei需要允许传入和传出“域”数据包,这些数据包往返于端口53。当然!这些是DNS数据包,如果pompei不允许,则根本无法访问DNS服务器。继续并打开该端口53。在linux上,您通常会使用iptables它。

分享我的想法,但是您很可能必须深入防火墙并充分了解所有内容。

#
# Allow outbound DNS port 53
#
 iptables -A INPUT -p tcp --dport 53 -j ACCEPT
 iptables -A INPUT -p udp --dport 53 -j ACCEPT

 iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT
 iptables -A OUTPUT -p udp --dport 53 -j ACCEPT

 iptables -A INPUT -p udp --sport 53 -j ACCEPT
 iptables -A INPUT -p tcp --sport 53 -j ACCEPT

 iptables -A OUTPUT -p tcp --sport 53 -j ACCEPT
 iptables -A OUTPUT -p udp --sport 53 -j ACCEPT

Step 3: Router

告诉路由器您的dns服务器已打开192.168.1.5。在大多数情况下,您只需登录路由器即可非常轻松地手动更改此设置。

就是这样,当您在计算机上进行询问时symfony.local,它将询问您的DNS服务器symfony.local托管在何处,并且一旦它从DNS服务器收到答复,便会向on 发送正确的HTTP请求pompei192.168.1.5

我让你玩这个,享受旅程。这两个步骤是主要准则,因此,如果这是您第一次进行调试,则必须调试并花费几个小时。假设这是一个更高级的网络,有主DNS服务器,辅助DNS服务器。祝好运!


很好的答复。我遵循了最后一部分,直到获得“使用Fiddler监视iPhone流量”为止。它指向Fiddler主页。这应该是链接:conceptdev.blogspot.com/2009/01/...
helpse

我已经修改了主机文件,但问题是我也正在运行IIS服务器,因此我的“ localhost”或“ 127.0.0.1”指向IIS服务器,如何用xamp服务器替换它?
Uzair Ali

1
@Mick是否可以通过不host手动编辑文件来从另一台计算机访问网站的任何方式?假设我有100台计算机想要访问该网站
Drenyl

1
@Dre是的,您必须在网络上进行更改,以便每台计算机都知道您的网站托管在哪里。我在答案的末尾添加了信息。希望有帮助。
米克

1
极好的解释!
牧羊人”

25

为了在同一无线网络和互联网上对两台笔记本电脑进行测试,您可以使用http://localhost.run/https://ngrok.com/之类的服务


3
localhost.run就像魅力一样工作。我的服务器在端口8000上运行,只是将命令行从80更改为
8000。– Isuru

3
哇!太棒了...真的真的可以一次工作了...谢谢@tommyvn
Jabongg

与更新本地主机文件相比,设置NGROK更加容易。+1
BlackHatSamurai

快速测试的简便解决方案
沙尼拉

15

如果两台计算机都在同一个工作组中,请cmd.exe在要连接的计算机上打开,ipconfig在该IPv4 Address行上键入并记下IP 。

然后,在要连接的机器上,使用http:// + the IP of the target machine

那应该做。


3
如果端口80是应用程序的端口(通常是),这将起作用,但是请记住,我们可以使用其他端口。这意味着http:// +目标计算机的IP +“:PORT_NUMBER”
ggderas

这是我一直在寻找的简单解决方案。@Codrin Eugeniu:请考虑将ggderas提到的建议“:PORT_NUMBER”纳入您的答案。对我而言,这是必需的,因为我使用Apache Superset通过端口8088连接。
Ohumeronen

8

在Mac OS X上:

  1. 在终端中,运行ifconfig | grep 192.以获取计算机在其当前网络上的内部IP。可能是这样的192.168.1.140

  2. 启动服务器。例如,node server.js可能在某个端口上启动服务器。

  3. 在您的手机上,访问192.168.1.140:3000或运行服务器的任何端口。


6

这个工具为我节省了很多,因为我没有计算机管理员权限,并且已经安装了nodejs。由于某些原因,我网络上的配置无法使我访问其他计算机,而只是指向浏览器上的IP。

# Using a local.dev vhost
$ browser-sync start --proxy

# Using a local.dev vhost with PORT
$ browser-sync start --proxy local.dev:8001

# Using a localhost address
$ browser-sync start --proxy localhost:8001

# Using a localhost address in a sub-dir
$ browser-sync start --proxy localhost:8080/site1

http://www.browsersync.io/docs/command-line/


我在localhost:3000上运行一个webapp。我browser-sync start --proxy localhost:3000在单独的外壳中使用过。在连接到网络的另一台设备上,我键入:${computerIP}:3000但是什么也看不到。我想还有更多我应该提供的东西。
本·卡尔普

5

可能是您的防火墙阻止了您访问本地主机的Web服务器。
如果需要,将两台计算机的Internet安全防病毒网络安全的IP地址作为安全IP地址。
如何查找Windows PC的IP地址:开始>(运行)键入:cmd(Enter)
(这将打开黑盒命令提示符)
在ipconfig中键入(Enter)
假设您的PC上安装了Apache或IIS Web服务器:192.168.0.3,
并且您想使用笔记本电脑访问网络服务器。(笔记本电脑的IP为192.168.0.5),
在您的PC上,在Firefox或Internet Eplorer浏览器中键入:http:// localhost /,以访问Web服务器上的数据。
在笔记本电脑上,键入http://192.168.0.3/,以访问PC上的Web服务器。

为了使所有这些正常工作,您需要正确安装Web服务器(例如IIS,Apache,XAMP,WAMP等)。

如果不起作用,请尝试从便携式计算机ping您的PC:在便携式计算机上
打开命令propmt:Start(开始)> cmd(输入)
ping 192.168.1.3(输入)
如果ping失败,则说明防火墙阻止了您的连接或网络电缆故障。重新启动调制解调器或网络交换机和计算机。
关闭使用端口的程序,例如聊天程序。
您还可以尝试使用其他端口号:http:192.168.0.3:80或http:192.168.0.3:81或末尾的任何随机数


1
感谢tou @KarlosFontana-您也回答了我的问题。我无法将iPhone连接到在桌面上编写的服务器。iPhone已连接到我的PC的WiFi。您的最后一行回答了我的问题:-)
汤米

4

这是一个旁注,如果在执行完上述步骤后仍然无法从其他设备访问localhost。这可能是由于apache ports.conf已配置为本地(127.0.0.1)而非外部服务。

检查以下内容(对于ubuntu apache2)

  $ cat /etc/apache2/ports.conf

如果设置了以下内容,

NameVirtualHost *:80  
Listen 127.0.0.1:80  

然后将其更改回默认值

NameVirtualHost *:80  
Listen 80  

0

如果您使用的是Windows,请使用ipconfig获取本地IPv4地址,然后在Apache配置文件httpd.conf下指定该地址,例如:

Listen: 10.20.30.40:80

重新启动Apache服务器,并从网络上的其他计算机对其进行测试。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.