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

use*_*572 155 localhost

我正在研究一个项目,我想在家里的两台笔记本电脑上测试一下,其中一台笔记本电脑连接到本地主机.我正在使用XAMPP.我该怎么做呢?

Mic*_*ick 266

这绝对是可能的.我们将在这里介绍Apache的一般情况.

假设您是Symfony2的忠实粉丝,您希望http://symfony.local/从4台不同的计算机(托管您网站的主计算机,以及连接(无线或非无线)的Mac,Windows和Linux发行版)访问您的symfony网站主电脑.

一般草图:

在此输入图像描述


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请求.您需要提供虚拟主机的名称以及您网站的root/main文件夹.为此,请在该文件的末尾添加以下行.您需要更改DocumentRoot主文件夹的位置.在这里,我/Applications/MAMP/htdocs/Symfony/作为我的网站的根.

<VirtualHost *:80>
    DocumentRoot "/Applications/MAMP/htdocs/Symfony/"
    ServerName symfony.local
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

2 配置主机文件:

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

Hosts file

##
# Host Database
# localhost is used to configure the loopback interface
##
#...
127.0.0.1           symfony.local
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

那么现在这很容易!我们只需告诉其他电脑他们如何找到symfony.local!我们如何做到这一点?

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

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

3b 编辑您尝试访问该网站的计算机上的hosts文件.:

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

##
# Host Database
# localhost is used to configure the loopback interface
##
#...
192.168.1.5         symfony.local
Run Code Online (Sandbox Code Playgroud)

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

您现在可以进入浏览器并输入http://symfony.local以在不同的计算机上精美地查看您的网站!请注意,如果您是OSX用户,则可以通过Virtual Box在Internet Explorer上测试您的网站(如果您不想使用Windows计算机),则可以应用相同的策略.在OSX上的手工制作Windows/IE测试环境中,这一点得到了很好的解释.


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

您可能想知道如何从移动设备访问您的localhost网站.在某些情况下,您将无法修改设备上的主机文件(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
Run Code Online (Sandbox Code Playgroud)

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

对于每台要知道symfony.local托管的计算机,pompei我们现在需要在网络上知道symfony.local托管位置的自定义DNS服务器.然后,网络上的设备将能够解析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和谷歌服务器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
Run Code Online (Sandbox Code Playgroud)

Step 3: Router

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

就是这样,当你的机器上,并要求symfony.local,它会问你的DNS服务器那里symfony.local托管,并尽快,因为它已收到来自DNS服务器的答案,然后将发送正确的HTTP请求pompei192.168.1.5.

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

  • @Mick 有什么可能的方法可以通过不手动编辑“host”文件来从另一台计算机访问该网站?假设我有 100 台计算机想要访问该网站 (2认同)
  • 很好的解释! (2认同)

tom*_*yvn 17

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

  • 哇!太棒了...真的真的可以一次工作...谢谢@tommyvn (3认同)
  • localhost.run就像魅力一样。我的服务器在端口8000上运行,只是将命令行从80更改为8000。 (2认同)

Cod*_*niu 13

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

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

应该这样做.

  • 如果端口 80 是应用程序的端口(通常是),这将起作用,但请记住,我们可以使用不同的端口。这意味着 http:// + 目标机器的 IP + ":PORT_NUMBER" (4认同)

Rap*_*nah 7

在Mac OS X上:

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

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

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


Thi*_*ura 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
Run Code Online (Sandbox Code Playgroud)

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


Kar*_*ana 5

可能是您的防火墙阻止您访问localhost的Web服务器.
如果需要,将两台计算机的Internet安全防病毒网络安全的IP地址作为安全IP地址.
如何查找Windows PC的IP地址:开始>(运行)输入:cmd(Enter)
(这将打开黑匣子命令提示符)
输入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上的网络服务器.

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

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