使 macbook 上的 Web 应用程序可以通过主机名从其他机器访问

使 macbook 上的 Web 应用程序可以通过主机名从其他机器访问

我有一个在 MacBook 的 3000 端口上运行的 Web 应用程序。我想在几部手机上测试它,每次测试时都要查找 MacBook 的 IP,这变得很麻烦。我想要一种方法来使用我的 MacBook 的主机名从这些手机访问 Web 应用程序。

➜  ~ti git:(release-us) hostname
GM20152.local

➜  ~ti git:(release-us) curl -s   gm20152.local:3000 
<html><body>You are being <a href="http://gm20152.local:3000/subscriptions">redirected</a>.</body></html>%

但是当我尝试这个网址时(http://gm20152.本地:3000) 从我的其他设备(连接到与 macbook 相同的 wifi 网络) - 浏览器找不到服务器。我猜这是因为我正在尝试的 android 手机无法将此名称(GM20152.local)映射到 ip 地址(我的 macbook)。实现此目的的最佳方法是什么?

答案1

根据您使用的路由器,您可以通过识别您的 mac 地址为您的 Macbook 分配一个静态 IP 地址,然后使用手机中的主机条目。

市场上有一些应用程序允许您在 Android 的主机表中添加条目。不过它们可能需要 root 权限... 对此我不太确定。

此外,有些路由器还允许您为静态 IP 定义名称,并在网络内为这些名称提供 DNS 解析。但这取决于路由器的功能。

(我已经使用 dd-wrt ​​做到了)

答案2

有一些应用程序和服务可以简化通过 HTTP 或 HTTPS 向互联网公开本地主机端口(或配置的本地虚拟主机)的过程。

其中一个例子是 ngrok (https://ngrok.com/features) 但还有其他的,例如 localtunnel、pagekite 或 forward。

ngrok 的免费功能和基本下载及使用(请参阅:ngrok.com/usage)应允许您创建一个隧道,通过随机生成的 ngrok 域公开您的本地 Web 服务器。您还可以检查流量请求。

需要注册的附加功能包括不同类型的网络隧道、多条隧道、隧道的密码保护和自定义子域。

付费功能包括域名和子域名预订 - 但此功能和注册功能对于您的目的来说似乎不是必需的。

如果你希望自己管理隧道服务,你甚至可以运行自己的 ngrok 服务器(文档:https://github.com/inconshreveable/ngrok/blob/master/docs/SELFHOSTING.md) 但同样,这对于您的目的来说没有必要。

答案3

大多数现代消费级路由器都能很好地处理主机名。唯一的问题是您的其他设备必须使用路由器作为 DNS 服务器。

需要注意的是,.local 域名是 Mac 自动添加的。路由器可能不会使用该域名进行解析,因此您可能更愿意直接连接到 gm20152:3000

相关内容