3

У меня есть мой Mac Mini с сервером nodejs на порту 8000. На Mac я могу поразить его в 127.0.0.1:8000/something. Я получаю ответ типа "привет мир".

В той же сети, с другой машины, я не могу подключиться к этому серверу на Mac. Я получаю тайм-ауты. Я вырывал свои волосы, пытаясь понять, почему.

  1. Я проверяю машину в локальной сети. Например, 192.168.1.7:8000 должен разрешить эту машину и порт с другой машины. Время вышло.

  2. У меня есть страница администратора NAS по адресу 192.168.1.200:5000 (извините за ранее опечатку), и она прекрасно решается. Порт 5000 перенаправляется на NAS от маршрутизатора.

  3. Я настроил правила брандмауэра (на маршрутизаторе) для nodejs точно так же, как для NAS. NAS доступен за пределами моей сети через правило маршрутизатора и динамическое сопоставление DNS без ip. Сервер nodejs пересылается таким же образом. Нет кубиков, тайм-аут.

Какие-нибудь мысли? У меня нет брандмауэра (который я могу обнаружить) на Mac. Я вижу сервер, слушающий 8000 на Mac. Работает локально.

Что я здесь не так делаю?

ОБНОВЛЕНИЯ с ответами на вопросы.

Спасибо всем за отзывы, вот ответы на ваши вопросы.

Выход из netstat.

netstat -anp tcp | grep 8000

tcp4       0      0  *.8000                 *.*                    LISTEN

У меня не работает брандмауэр Mac (по крайней мере, в настройках системы я имею в виду). Я видел сообщения о чем-то под названием IPFW, но я понятия не имею, что это такое.

На Mac, когда я нажимаю 192.168.1.7:8000, я получаю:

Hello World

В моем понимании nodejs я просто "привязываю" его к порту. Вот код, прямо из их примера.

var http = require('http');

http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(8000);

console.log('Server running at http://127.0.0.1:8000/');

3 ответа3

2

У меня похожая проблема.

Я обнаружил, что бесполезно изменять параметры брандмауэра (даже полностью отключать брандмауэр), чтобы разрешить доступ к узлу извне в MAC OS X, по крайней мере, в моем случае это не работает.

Мое решение состоит в том, чтобы изменить имя хоста, которое связано с сервером node.js:

  • используйте «0.0.0.0» в качестве имени хоста, чтобы разрешить доступ извне
  • использовать localhost только с локальным доступом

Я предполагаю, что localhost используется как-то как значение по умолчанию, и надеюсь, что этот совет будет полезен для других.

ура

0

Моя машина сейчас настроена так:

  • Брандмауэр выключен - я за аппаратным маршрутизатором, который заблокирован.
  • Все настройки отключены в настройках системы.
  • У меня статический IP-адрес (сетевые настройки: "использование DHCP с ручным адресом").
  • Мой сервер все тот же, он работает на порту 8000.

Теперь я могу подключиться к нему изнутри локальной сети и снаружи с помощью своего домена без IP. Я думаю, что это была статическая адресация, хотя я не уверен на 100%.

0

Тем не менее, я не убежден в правильном решении для этого, но, чтобы заставить его работать, я просто сделал это,

  1. Запустите ваш веб-сервер Mac OSX по умолчанию и в index.html,
  2. Добавьте в него код перенаправления, который будет указывать на порт js вашего узла, и вы также сможете получить к нему доступ из внешних систем локальной сети.

На самом деле, это не будет сценарий, когда вы размещаете его, так что вы можете принять вышеуказанный подход и по-прежнему работать над ним без блока,

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .