Как получить доступ к серверу NodeJS по локальной сети?

Я не самый осведомленный человек, либо с сети, но здесь идет...

Я создал приложение с 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) insted of 1337, Он будет доступен на моем компьютере, набрав localhost,192.168.0.3 или даже http://joel-pc в адресную строку моего браузера. Тем не менее, я все еще не могу получить доступ к NodeJS на любом другом компьютере в моей сети, кроме моего собственного.

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

5
задан Joel Murphy
источник

5 ответов

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

7
отвечен Peter Lyons 2013-04-11 18:20:57
источник

получить вам текущий IP локальной сети и, запустите http-сервер, как это:

server.listen(80, 'current_local_ip');
3
отвечен Gonzalo Bahamondez 2014-02-22 04:58:04
источник

во-первых, вам нужно добавить 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
отвечен Michael Bernheiden 2018-03-16 21:08:14
источник

Я нашел хорошее решение этой проблемы. А не делать все настройки (Настройка брандмауэров, проброса портов и т. д) я использовал 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

2
отвечен ninad parab 2018-10-15 05:40:11
источник

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

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

следующий поиск узла.js в списке и нажмите change settings > удостоверьтесь, что частный доступ проверен и затем нажмите ok.

1
отвечен Thunder 2018-05-03 14:26:05
источник

Другие вопросы apache-http-server firewall networking node.js port