【问题标题】:How to access the application from other device in local network如何从本地网络中的其他设备访问应用程序
【发布时间】:2022-01-25 12:15:15
【问题描述】:

在我正在从事的项目中,有一个适用于许多 docker 容器的应用程序。要访问其中一个容器,我需要在 /etc/hosts 文件中添加以下路径

127.0.0.1 my.domain.com

然后应用程序当然可以在我的电脑上的http://my.domain.com 上使用。 不幸的是,这是一个大型复杂的应用程序,我无法更改配置以添加端口(然后我会使用其他设备的 192.168.X.X:PORT)?那么如何才能从本地网络中的其他设备访问应用程序(WIFI 或其他方式)?我尝试使用 localtunnel 或 ngrok,但这太慢了,在这种情况下效果不好。

也许有人知道另一种方式?

【问题讨论】:

  • 您能否举例说明“其他设备”上的预期行为以访问您的端点?
  • 到底是什么问题? 1.您的应用程序无法通过IP地址在局域网中使用? 2. 您的应用需要准确的域名并拒绝其他名称的请求? 3.两个问题。 4. 不同的东西
  • 我只想将在 some.domain.com (在 docker 中)上工作的机器上的应用程序提供给本地网络中的其他设备。如果您知道 App 是否适用于例如localhost:8000 然后我可以使用本地 IP(如 192.168.0.100:8000)从本地网络中的其他设备打开此站点。但在这种情况下,我没有可用的端口,也无法使用它。
  • 默认端口为80,当你打开my.domain.com浏览器使用80端口时,不能没有端口(@98​​7654323@)。您遇到的问题是您的应用程序仅侦听地址 127.0.0.1(这是仅可从 localhost 获得的特殊地址),我可以想象,但不在网络接口上。请为您提供 docker run / compose 命令以获取更多信息并阅读此文档:docs.docker.com/config/containers/container-networking
  • 当我尝试 192.168.0.100:80 时,我收到 502 错误网关,但 docker 上端口 3000 的其他服务正常工作。

标签: networking proxy localhost port hosts


【解决方案1】:

如果您的服务器在本地网络上的 ip 192.168.X.X 上运行,请添加以下行:

192.168.X.X my.domain.com

到您网络上的第二台设备应该可以完成这项工作

另一种解决方案是在与您的服务器相同的实例上运行代理服务器,并将所有请求发送到代理服务器。代理服务器将侦听另一个端口,但它将使用原始端口将所有请求转发到 my.domain.com,因为它使用相同的 /etc/hosts,所以它可以工作。

【讨论】:

  • 干扰另一台设备上的主机不是解决方案。您不会在手机上执行此操作
  • 在 LAN 上测试东西时,我会在笔记本电脑上这样做
  • 也许你可以采取另一种方法。我有一个需要确切主机的应用程序,就像你的一样,在 python django 中它被称为 ALLOWED_HOSTS。我将我的应用更改为在本地或 LAN 上运行时允许所有主机。
  • 一些例如代理服务器?我尝试使用 nginx 代理反向但没有成功。
  • 我会使用 nginx,有其他选择,但所有这些都需要一些开发才能根据您的设置进行配置。我猜最流行的是:nginx、HaProxy、envoy、apache。
【解决方案2】:

尝试使用 nginx-webserver 代理,它是免费版本,它提供了您想要的功能。

添加反向代理并使用my.domain.com 托管您的应用

在端口:80 上托管您的应用程序,即。默认端口

【讨论】:

  • 你说的 nginx-webserver 是什么意思?
  • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
猜你喜欢
  • 2021-05-14
  • 2020-09-11
  • 2023-01-24
  • 2017-05-01
  • 2020-08-14
  • 1970-01-01
  • 2022-01-23
  • 2021-06-06
  • 2021-11-15
相关资源
最近更新 更多