Настройка nginx / ngrest на виртуальной машине Ubuntu для внешнего доступа

339
CaTx

У меня есть виртуальная машина Ubuntu 18.04, работающая в Windows 7. Виртуальная машина настроена на использование адаптера моста из виртуальной коробки. Он может подключаться к сети, иметь такую ​​же IP-схему, что и IP-адрес в локальной сети, и может пинговаться из Windows.

Образец сайта nginx (info.php) доступен в браузере с помощью IP_address/info.php.

У меня есть служба ngrest, созданная на этой странице, и она нормально работает в браузере виртуальной машины с помощью localhost:9098/pets/getPets.

Большая страница внутри ВМ Однако эта служба недоступна из Windows. Я использую IP_address:9098/pets/getPets. Может кто-нибудь показать мне, как это можно настроить? Благодарю.

0

1 ответ на вопрос

0
CaTx

Я переключился на pistache(показанный здесь ) после того, как не смог найти решение. Опять же, helloобразец службы недоступен с другого компьютера. Очевидно, что проблема системная. Мой друг предлагает заглянуть в настройки брандмауэра. Наконец, эти две команды помогают сузить проблему:

sudo ufw status sudo netstat -tulpn 

После установки стека LEMPufw разрешены только входящие запросы через порт 80:

Nginx HTTP ALLOW Anywhere Nginx HTTP (v6) ALLOW Anywhere (v6) 

Вот почему обе службы pistacheи ngrestне доступны с других компьютеров, в то время как образец info.phpсайта NginX есть. Порты, используемые этими службами, могут быть добавлены с помощью:

sudo ufw allow 9080 sudo ufw allow 9098 

Открытые порты показываются при sudo ufw statusповторном запуске . Однако ngrestуслуга по-прежнему недоступна. Беговые sudo netstat -tulpnшоу:

NetStat

На рисунке видно, что NginX подключен к порту, 81пока пытается найти решение. Образцы сайтов 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 

В любом случае, эти настройки сделали это возможным:

настройки