11

Я не самый знающий парень, когда-либо работающий с сетями, но здесь идет ...

Я создал приложение с NodeJS, и я хотел бы проверить приложение в моей локальной сети со своей семьей. Приложение прослушивает порт 1337 предмет соединений, и я могу нормально получить доступ к приложению через мой компьютер, набрав localhost:1337 , 192.168.0.3:1337 или даже http://joel-pc:1337/ в адресной строке моего браузера.

Я также буду запускать Apache вместе с NodeJS, и я могу получить доступ к этому штрафу, набрав 192.168.0.3 или http://joel-pc/ в адресной строке браузера, если он подключен к той же сети.

Теперь вот странная часть; Если я остановлю службу apache, изменим приложение узла на прослушивание через порт 80 (http), инстантированный 1337 , оно будет доступно на моем компьютере, введя localhost , 192.168.0.3 или даже http://joel-pc в адрес моего браузера. бар. Тем не менее, я все еще не могу получить доступ к NodeJS на любом другом компьютере в моей сети, кроме моего собственного.

Я пытался создать исходящее правило в Windows 7, чтобы разрешить доступ к порту 1337, но я все еще не могу получить доступ к своему серверу NodeJS на любом другом компьютере, кроме моего, даже если он прослушивает порт 80. Есть ли что-то очевидное, что я упускаю здесь?

5 ответов5

8

Скорее всего, приложение вашего узла привязывается к петлевому IP-адресу 127.0.0.1 вместо «всех IP-адресов» 0.0.0.0 так как это поведение listen по умолчанию. Укажите порт и IP-адрес в своем вызове, например server.listen(80, '0.0.0.0'); и попробуй еще раз.

4

Получите текущий IP-адрес локальной сети и запустите http-сервер следующим образом:

server.listen(80, 'current_local_ip');
3

Я нашел хорошее решение для этой проблемы. Вместо того, чтобы делать все настройки (настройка брандмауэра, переадресация порта и т.д.), Я использовал localtunnel, который является утилитой для показа сервера локального узла через Интернет. Вы можете использовать его для разработки, тестирования, совместного использования, просто не используйте его для производства.

Сначала вы должны установить localtunnel следующим образом:

$npm install -g localtunnel

После этого настройте приложение узла так, чтобы сервер узла работал на localhost. Например:

server.listen(3000, function () {
console.log('Listening to port:  ' + port);
});

Запишите your_port, который в моем случае был 3000, и запустите сервер вашего узла.

Откройте другой терминал и введите следующую команду для запуска localtunnel.

$lt --port 3000

После этого в терминале вы получите URL, который вы можете использовать для целей разработки / тестирования. Этот URL будет доступен в Интернете, чтобы вы могли поделиться им с другими. Пока ваш localtunnel работает, другие могут получить доступ к вашему серверу локальных узлов.

Для получения дополнительных параметров конфигурации / справки вы можете просмотреть документацию:https://www.npmjs.com/package/localtunnel

3

Во-первых, вам нужно добавить C:\Program Files (x86)\node в список доверенных приложений вашего брандмауэра.

Затем в приложении вашего узла вы можете написать:

listen(3333, '172.24.14.26', function() {

или же:

listen(3333, '0.0.0.0', function() {

или же:

listen(3333, function() {

или же:

listen(80, '172.24.14.26', function() {

или же:

listen(80, '0.0.0.0', function() {

или же:

listen(80, function() {

Каждая из этих 6 комбинаций работает в моем случае: node.js на Windows Server 2016, защищенный прокси-сервером компании.

2

Выполнение следующих работ у меня работало на ПК с Windows. Попробуйте это: открыть

Панель управления \ Система и безопасность \ Брандмауэр Защитника Windows \ Разрешенные приложения

Затем найдите в списке файл node.js и нажмите «Изменить настройки»> Убедитесь, что частный доступ проверен, а затем нажмите «ОК».

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