如何从另一台计算机访问笔记本电脑上的本地Web服务器?[关闭]


37

我在127.0.0.1:3000的计算机上运行了一个应用程序

我想从连接到同一网络的iPhone访问该应用程序。我之前已经做过这件事,但是却空白了。有任何想法吗?


2
试试看rails server -b 0.0.0.0,然后在iPhone上浏览。
zx1986 '16

Answers:


37

首先,您需要确定运行Web服务器的计算机的IP地址或名称。我假设您在Mac上运行Web服务器,因为您标记了帖子,macosx尽管有关Linux机器的说明类似。因此,在您的Mac上:

  • 打开Terminal.app。在下Applications->Utilities
  • ifconfig在终端中运行。这将显示您机器上的所有网络接口。其中之一是您的计算机正在主动连接的网络。如果您的Mac处于有线连接,则应为en0。在后面记下地址,该地址inet应该是您的机器使用的地址。
    • 假设您发现它是192.168.10.1。
  • 验证您是否可以使用从服务器连接到该地址nc -v 192.168.10.1 3000
    • 您应该会看到类似的消息Connection to 192.168.10.1 3000 port [tcp/http] succeeded!
    • 如果这不起作用,请参见下文。
    • 如果确实有效,请点击ctrl-C以退出nc会话。
  • 现在尝试连接您的客户端计算机。
    • 如果这是一个网络应用程序,则应该能够通过浏览器进行连接
    • 例如,尝试http://192.168.10.1:3000

如果无法在服务器的真实地址上连接到应用程序,则意味着您的应用程序没有在该地址上侦听。您将需要研究如何更改应用程序配置以修改该行为。由于我不知道您正在运行哪个应用程序,因此无法提供任何好的建议。


10倍伴侣...谈论上面装有Wamp服务器的Windows系统有什么区别?
Sagive SEO 2012年

我正在使用mac sierra。我可以通过10.55.18.22:3000从我的Mac(运行服务器的地方)访问服务器,但是即使两者都在同一网络中,也无法从另一台计算机访问它。Web共享选项在sierra中不可用。我们如何使这项工作?
santhosh kumar

saanthosh:研究路由器上的端口转发。这就是我发现OSX的Internet共享功能(显然至少从OSX 10.6开始就可用)之前所做的事情。我对OSX开发人员机器在同一房间/网络中的各种移动设备上进行了localhost测试,这是通过对路由器配置(例如端口转发)进行标准/小的更改而实现的。其他文章和SO线程提供有关路由器配置的信息。最终,我现在在一个新位置,无法访问路由器,所以我改用OSX(High Sierra)互联网共享来实现同一目的。
MarsAndBack

12

使用hostname(在终端提示下)找到Mac的名称,然后在URL中使用它。例如http://Tonys-iMac.local:3000 /

如果出于某种原因在您的环境中无法使用Bonjour,请在具有以下功能的iMac或MacBook上找到机场的地址:

ipconfig getifaddr en1

或通常与

ipconfig getifaddr $(route -n get default|awk '/interface/ { print $2 }')


这个答案对我的主机名和IP地址进行了一些优化。
Phil Hollenback

2
bonjour为什么不起作用?我发现我的主机名为gm20152.local。但是,当我在同一台计算机上尝试gm20152.local:3000时,它将显示一个有效页面。但是,当我在Android手机上尝试gm20152.local:3000时,手机上的浏览器找不到主机。我认为这是因为我的手机无法将gm20152.local映射到我的Macbook的IP地址。我怎样才能做到这一点?
gprasant 2014年

@gprasant让Android使用Bonjour 似乎很困难
James

5

基本上,从防火墙设置中,您可以允许某个应用程序(例如ruby)接受传入的连接。另外,要允许访问外部世界(例如www),您需要通过路由器设置将流量转发到内部网关:端口。

这样做的方法如下:

  1. Mac->系统偏好设置->共享->启用“ Web共享”复选框
  2. Mac->系统偏好设置->安全性->允许您的应用程序(例如ruby)接受传入的连接
  3. 打开路由器上的端口(通过192.168.1.1),将流量从your_web_ip:port转发到local_gateway:port

    1. 例如,从我的Verizon路由器设置->端口转发->创建规则:转发到本地网关(例如192.168.1.4),自定义端口,协议tcp,source = any,destination = 3280,所有连接类型,转发到port = 3000。

做完了 现在,从远程计算机上,打开浏览器到您的Web IP地址(通过http://www.whatismyip.com/查找)+上面的目标端口号,例如72.189.194.65:3280,它将连接到您的本地192.168.1.4 :3000

注意:我在Mac OSX 10.7.5上运行


2

127.0.0.1是每台计算机本身的本地地址。您必须找出机器的真实IP地址(或主机/ Bonjour名称)。转到系统偏好设置,网络,然后查找机器的IP,如果使用电缆,则查找以太网端口;如果使用WLAN,则查找机场。然后在iPhone的Safari中打开此地址以及:3000部分。


此外,“ 共享首选项”窗格始终显示可以访问您的计算机的名称或地址。
詹姆斯,

2

如果应用程序仅在127.0.0.1:3000上侦听,则无法从另一台计算机访问它。为此,您需要修改配置以侦听IP或0.0.0.0(所有可用接口)。

第二种选择是使用代理。

第三种选择是,如果您可以从iPhone进行SSH,也可以使用SSH转发。

ssh user @ host -L 3000:127.0.0.1:3000

然后在您的iPhone上打开127.0.0.1:3000


1
AFAIK,您无法在iPhone上执行ssh端口转发。如果不是越狱就不会。
斯文

0.0.0.0!我怎么没想到呢?
古斯塔沃·斯特劳伯

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.