nginx 无法从其他本地设备访问网站

Posted

技术标签:

【中文标题】nginx 无法从其他本地设备访问网站【英文标题】:nginx Can't access website from other local devices 【发布时间】:2022-01-23 06:23:36 【问题描述】:

我是 Linux 和 nginx 的新手。只是想为一个学校项目学习一点 Nginx。 我已经尝试过,但我无法访问该网站,我只是得到“无法访问此页面”,我正在使用 Chromebook Linux 来执行此操作,因为它是我唯一可以使用的设备,它是由学校。我想可能是因为 VM,但我也可以在 Chromebook(VM 之外)本身上看到该网站,但其他本地设备都无法连接。 chrome book Linux 没有我所知道的防火墙。我已经测试了一些默认防火墙以确保没有:

无法停止 iptables.service:未加载单元 iptables.service。 未能停止 ipchains.service:未加载单元 ipchains.service。 sudo: ufw: 找不到命令

这是我启用网站的文本文件:

    server 
       listen 89;
       listen [::]:89;
       
       server_name test.com;

       root /home/parsa/nginx-template-test/clouds-html5-multipurpose-landing-page-template;
       index index.html;

       location / 
               try_files $uri $uri/ =404;
       

我使用的是 89 端口,所以我也可以使用“欢迎使用 Nginx”来检查我是否做错了什么,也可以作为参考。 我在渲染网站的设备上使用这些设置没有问题。除了添加新的文本文件以启用该站点外,我没有进行任何其他更改,包括 nginx.conf 在内的所有内容都与您刚下载 nginx 时一样。我已经检查过了,我也无法访问欢迎访问 Nginx 网站。但它们在运行 Nginx 的计算机上工作得很好。 我正在运行 Debian GNU/Linux 10 (buster)

更新:

Linux 在容器中运行,它实际上不是虚拟机。我还听说容器与 Chromebook 有一个单独的网络(并且容器没有路由器提供的 IP),这就是为什么 IP 看起来很奇怪(100.115.92.201),他们告诉我唯一的方法是端口转发,您不能使用桥接网络,因为容器网络设置是专门的。

【问题讨论】:

如果我理解正确,该站点托管在 Chromebook 上的虚拟机上,而您正尝试从同一本地网络上的其他计算机(例如另一台 Chromebook 或其他计算机)访问它?如果是,则问题与nginx无关,是DNS。你有server_name test.com,这真的是你用来从托管 Chromebook 访问它的 URL 吗?如果是,大概您已经设置了一个/etc/hosts 记录,以便机器知道在哪个 IP 上找到该 URL?但是网络上的其他计算机将使用公共 DNS 来尝试找到该计算机 - 任何答案都不会是您的 Chromebook。 我想使用我设备的 IP 地址和为其编写的端口访问该网站。像 100.234.67.54:89 但如果有办法只使用 URL,那将是一个很好的原因,只想在本地使用它。 那个IP看起来像一个公共地址,即公共互联网上的IP,任何人都可以访问?如果您将站点推送到某个托管服务提供商,或者您在路由器上设置了 NAT 内容,以便内部本地网络上的机器暴露于公共互联网,您将使用它。这个 IP 是从哪里来的,如果你把它放在你的浏览器中,它真的对你有用吗? 我认为你在一些与 ngnix 无关的网络问题上搞混了。在本地家庭网络上查找 Chromebook 的 IP,也许最简单的方法是查看 wifi 路由器上的已连接设备列表,然后查看它在那里的 IP。然后在同一本地/家庭网络上的其他机器上尝试该 IP:89。我认为没有必要,但您也可以更新您的 nginx vhost 配置:server_name your-local-ip. 是的,我正在尝试使用我的虚拟机的本地 IP,然后是端口。但你说我应该使用 chrome book 本地 IP。我也在想,其他设备如何连接到具有另一个 IP 的设备,这不是问题吗?还是我在这里很笨?! 【参考方案1】:

您没有在您的虚拟机中提供网络,但如果是 NAT,您可能必须进行端口转发,或者您可以使用桥接网络,在这种情况下,它可以在没有任何端口转发的情况下工作。

【讨论】:

您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。 我认为我无法更改或访问路由器进行端口转发。您能详细说明如何使用桥接网络吗? 你可以在这里找到关于 NAT 和桥接网络 link 之间区别的好答案,你能指定你使用的是哪个 hyperwiser,比如 VirtualBox 还是 VMware? 谢谢,我现在一定会检查的:) 好的,所以我想在第 3 步之后按照guide 尝试这个桥接网络,我重新启动了 VM,但它不再启动了。

以上是关于nginx 无法从其他本地设备访问网站的主要内容,如果未能解决你的问题,请参考以下文章

本地无法访问网站,其他人可以

如何在通过WiFi热点连接的另一台设备上加载笔记本电脑的localhost网站?

PHP 网站如何修改默认访问文件的nginx配置

通过 Xampp 从本地托管的手机访问 wordpress 网站

我无法从网络中的其他设备访问本地主机的原因是啥?

无法从我网络上的其他设备访问 localhost