从远程访问本地主机上的网站

15

我通常在我的 Ubuntu 机器上使用 Apache 在本地主机上开发项目。有时需要向客户展示进度。是否可以从远程机器访问本地主机?


2
这个问题中的命名有点模糊不清:localhost 是本地回环地址 127.0.0.1 的事实标准(DNS)名称,它不能从(本地)主机外部访问。 - alk
4个回答

15
你可以使用提供本地服务隧道的服务,例如localtunnel、pagekite或ngrok。这些服务简化了远程演示、移动测试以及一些请求检查的设置。
我发现ngrok很有用,因为它提供了https地址,这对于测试诸如网络摄像头访问之类的东西是必要的。

1
谢谢,虽然这是一个有点老的评论,但是它真的帮了我。我在使用自己编写的网站时遇到了麻烦,但是 ngrok 正是我所需要的。 - user13372194

11
本回答中使用的术语:
- Host = 拥有站点的机器 - Client = 试图从该机器访问主机的机器
如果主机和客户端在同一网络上,您可以在客户端浏览器中输入主机名或IP地址来访问主机,例如:
```http://(hostname or ip address)```
如果网站没有运行在80端口(http)或443端口(https)上,请添加端口号。以下是一个示例,假设您的服务器在8080端口上(这是一种常见的备用端口):
```http://(hostname or ip address):8080```
如果主机和客户端不在同一网络上,并且您需要从客户端通过互联网访问主机,则需要使主机在互联网上可用以供客户端访问。
如果您不确定自己在做什么,这可能对您的信息安全极为危险。我建议您获得一个廉价的托管账户(例如可以在1:1托管等地方每月支付约10美元)。

4

有许多方法可以做到这一点 - 安全性、配置的易用性和解决方案的成本是不同的。

以下我将列出一些方法并进行分析

  1. 端口转发(使用动态DNS和SSL加密)

这需要路由器配置(将您的路由器公共端口转发到本地主机端口),但这要求您拥有固定的IP地址。如果您的IP地址不固定(在大多数情况下),您需要使用动态DNS服务才能使用域名而不是IP地址(有很多可用的免费服务)。在这里,我们仍然存在安全问题。为了解决安全问题,即设置SSL证书,我们可以使用Let's Encrypt服务(https://letsencrypt.org/)来获取免费证书,但我们应该配置本地服务器以使用证书,或者我们应该设置反向代理(在大多数情况下是nginx或apache)并配置代理以使用证书。

结论- 如果我们想要建立安全连接,则难以设置(可以免费完成)

  1. 虚拟专用网络(VPN)
针对这种情况,我们应该使用VPN服务。我们应该将本地计算机连接到VPN,然后在另一端将客户端的计算机连接到VPN,这将允许我们通过本地IP地址访问localhost。我们可以设置自己的VPN服务器,但这需要正确操作的知识。
结论-简单、付费、安全、用户体验不佳(每次需要连接到localhost时都要连接到VPN)
第三点-隧道技术
针对这种情况,我们可以使用免费的隧道服务(例如https://tunnelin.com/)。流程非常简单,即注册用户,通过在设备上运行一行命令将设备连接到服务,使用Web界面打开/关闭与设备的安全隧道。
结论- 免费、安全、易于操作

我喜欢多种选择,但为什么应该使用VPN。虽然这表明您偏爱此选项,但我错过了解释的原因。 - Natan

0

是的,如果您有一个公共和静态IP地址。通常,在会话期间(即直到您断开连接并重新连接)ISP会提供静态IP地址。


第二台计算机浏览器中需要输入什么才能查看第一台计算机的本地主机网站? - Salvatore Dibenedetto
假设您满足上述两个要求,您必须编写以下内容: http://ip_of_your_machine:port/path_to_resource(website) - Razvan
啊,太棒了!我从控制台启动了 ifconfig 命令,检查了 IP 地址,并将其粘贴到了第二台计算机的浏览器中!我可以在远程计算机上看到我的所有项目! - Salvatore Dibenedetto
是的,那正是你需要做的。 - Razvan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接