我有一台在 Windows 7 上运行的 Ubuntu 18.04 VM。该 VM 从 Virtual Box 配置为桥接适配器。它可以上网,具有与本地网络相同的 IP 方案 IP,并且可以从 Windows 进行 ping。
可以使用IP_address
/info.php 在浏览器中访问 nginx 示例站点 (info.php)。
我有一个使用以下方式创建的 ngrest 服务这一页,并且它可以在 VM 的浏览器中正常运行localhost:9098/pets/getPets
。
但是,该服务无法从 Windows 访问。我使用IP_address:9098/pets/getPets
。有人可以告诉我如何配置它吗?谢谢。
答案1
我换到了pistache
(精选这里) 后,我还是无法找到解决方案。同样,hello
示例服务无法从另一台计算机访问。很明显,问题是系统性的。我的一个朋友建议查看防火墙设置。最后,这两个命令有助于缩小问题范围:
sudo ufw status
sudo netstat -tulpn
安装后激光脉冲堆栈,ufw
仅允许端口上的传入请求80
:
Nginx HTTP ALLOW Anywhere
Nginx HTTP (v6) ALLOW Anywhere (v6)
这就是为什么 和 的服务都pistache
无法ngrest
从其他计算机访问,而 NginX 示例info.php
站点却可以访问的原因。可以使用以下命令添加这些服务使用的端口:
sudo ufw allow 9080
sudo ufw allow 9098
再次运行可以看到已经打开的端口sudo ufw status
,但是ngrest
服务还是无法访问,运行sudo netstat -tulpn
结果如下:
图片显示 NginX81
在尝试解决问题时重新连接到端口。NginX 示例站点和服务hello
( pistache
) 绑定到0.0.0.0
IP 地址,这与服务的 IP 地址不同ngrest
。谷歌搜索后,我找到了这里。显然,ngrest
作者没有在他的指南中提到如何向外部计算机启用该服务。规范位于这里。NGREST_SERVER_IP
用于指定不同的 IP 地址。 使用以下方式重新激活服务:
NGREST_SERVER_IP=0.0.0.0 ngrest
现在,该ngrest
服务可以从外部访问。此功能显然来自这个请求. NGREST_SERVER_PORT
是另一个巧妙的功能。因此,ngrest
可以这样调用服务:
NGREST_SERVER_IP=0.0.0.0 NGREST_SERVER_PORT=9090 ngrest
无论如何,这些设置使得这一切成为可能: