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

时间:2012-03-13 10:27:13

标签: localhost

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

8 个答案:

答案 0 :(得分:250)

这绝对有可能。我们在这里采用Apache的一般情况。

让我们说你是Symfony2的忠实粉丝,你想从4台不同的计算机(托管你网站的主计算机,以及Mac)访问http://symfony.local/的symfony网站,Windows和Linux发行版(无线或非无线)连接到主计算机。

一般草图:

enter image description here


1 设置虚拟主机

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

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

2 配置您的主机文件

对于客户端(在这种情况下您的浏览器)了解symfony.local的真正含义,您需要编辑计算机上的hosts文件。每当您在浏览器中键入URL时,您的计算机都会尝试理解它的含义! symfony.local对计算机来说并不意味着什么。因此,它会尝试将名称symfony.local解析为IP地址。它将首先查看计算机上的hosts文件,以查看他是否可以将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;

主持文件

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

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

3 从其他计算机访问symfony.local

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

  

我现在如何通过其他计算机访问我的网站?

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

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

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

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

同样,在 MAC 上,此文件位于/private/etc/hosts;在 LINUX ,在/etc/hosts;并在\Windows\system32\private\etc\hosts中的 WINDOWS (如果您正在使用 WINDOWS 7 ,文件位于\Windows\system32\drivers\etc\hosts)..现在的诀窍是使用我们尝试访问/通话的计算机的IP地址:

##
# 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计算机),则可以应用相同的策略。这在Crafting Your Windows / IE Test Environment on OSX中得到了很好的解释。


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

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

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

在Mac上,我建议:Testing a Mac OS X web site using a local hostname on a mobile device:使用SquidMan作为代理。这是一个100%免费的解决方案。有些人也可以使用Charles作为代理服务器,但它只需要50美元。

在Linux上,您可以使用Squid作为代理服务器来调整上述Mac OS。

在Windows上,您可以使用Fiddler执行此操作。解决方案在以下帖子中进行了描述:Monitoring iPhone traffic with Fiddler


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

  

@Dre。任何可能的方式从另一台计算机访问该网站没有   手动编辑主机文件?让我们说我想要100台电脑   访问该网站

这是一个有趣的问题,因为它与OP问题有关,请允许我帮忙。

您必须对网络进行更改,以便每台计算机都知道您的网站所在的位置。 Most everyday routers don't do that因此您必须在网络上运行自己的 DNS服务器

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

现在,让我们假设您拥有与上述相同的网络,192.168.1.5拥有您网站的计算机。我们将该机器称为 pompei

$ echo $HOSTNAME
pompei

与之前相同,192.168.1.5处的 pompei 机器运行 HTTP服务器,为您的网站symfony.local提供服务。

对于每台机器都知道 pompei 上托管了symfony.local,我们现在需要一个知道symfony.local托管位置的网络上的自定义DNS服务器。然后,网络上的设备将能够在内部解析由 pompei 提供的域名。

3个简单的步骤。

第1步:DNS服务器

在网络上设置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,否则更改将不会生效。

第2步:防火墙

要工作, pompei 需要允许传入和传出的域名&#39;数据包,从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

第3步:路由器

告诉您的路由器您的DNS服务器现在在192.168.1.5。大多数情况下,您只需登录路由器并手动更改即可。

这就是它,当您在计算机上并要求symfony.local时,它会询问您的 DNS服务器托管symfony.local的地方,并尽快因为它已从DNS服务器收到答案,然后会在192.168.1.5上向 pompei 发送正确的 HTTP请求

我让你玩这个,享受骑行。这两个步骤是主要指导原则,因此如果您是第一次这样做,则必须进行调试并花费几个小时。让我们说这是一个更高级的网络,有主DNS服务器,辅助DNS服务器,etc.。祝你好运!

答案 1 :(得分:13)

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

答案 2 :(得分:9)

如果两台计算机位于同一工作组中,请在要连接的计算机上打开cmd.exe,键入ipconfig并在IPv4 Address行注明IP。

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

应该这样做。

答案 3 :(得分: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/

答案 4 :(得分:6)

在Mac OS X上:

  1. 在终端中,运行ifconfig | grep 192.以在其当前网络上获取您机器的内部IP。它可能类似于192.168.1.140

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

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

答案 5 :(得分:5)

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

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

如果不起作用,请尝试从笔记本电脑ping您的电脑:
在笔记本电脑上打开命令propmt:开始&gt; cmd(回车)
ping 192.168.1.3(回车)
如果ping失败,则防火墙会阻止您的连接,或者您的网络布线有问题。重新启动调制解调器或网络交换机和您的机器 关闭正在使用您的端口的聊天程序等程序 您还可以尝试不同的端口号: http:192.168.0.3:80或http:192.168.0.3:81或末尾随机数

答案 6 :(得分: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  

答案 7 :(得分:0)

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

Listen: 10.20.30.40:80

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