在 Ubuntu 虚拟机上配置 nginx/ngrest 以供外部访问

在 Ubuntu 虚拟机上配置 nginx/ngrest 以供外部访问

我有一台在 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

VM 内部的 ngrest 页面 但是,该服务无法从 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.0IP 地址,这与服务的 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

无论如何,这些设置使得这一切成为可能:

设置

相关内容