LAN üzerinden NodeJS sunucusuna nasıl erişilir?


16

Şebeke konusunda en bilgili biri değilim, ama işte gidiyor ...

NodeJS ile bir uygulama oluşturdum ve uygulamayı ailemle birlikte LAN'ımda test etmek istiyorum. Uygulama bağlantı noktasını dinler 1337bağlantıları için ve ben yazarak kendi PC üzerinden başvuru cezası erişebilir localhost:1337, 192.168.0.3:1337hatta http://joel-pc:1337/benim tarayıcının adres çubuğuna.

Ayrıca NodeJS ile birlikte apache kullanacağım ve bu para cezasına aynı ağa bağlı olduğu sürece 192.168.0.3veya http://joel-pc/tarayıcının adres çubuğuna yazarak erişebilirim .

Şimdi burada garip kısım var; Ben apache hizmetini durdurmak, bağlantı noktasında dinleme için benim düğüm uygulamayı değiştirmek 80Insted (http) 1337o yazarak benim pc erişilebilir olacaktır, localhost, 192.168.0.3hatta http://joel-pcbenim tarayıcının adres çubuğuna. Ancak, ağımdaki diğer bilgisayarlardan NodeJS'ye hala kendim dışında erişemiyorum.

Bağlantı noktası 1337'ye erişime izin vermek için Windows 7'de bir giden kural oluşturmayı denedim, ancak bağlantı noktası 80'de dinliyor olsa bile, NodeJS sunucuma kendi bilgisayarımdan başka bir bilgisayardan erişemiyorum. Açık bir şey var mı? Burada kaçırıyor muyum?


2
Ya sadece bir test olarak güvenlik duvarınızı kapatırsanız?
cheesemacfly

1
Güvenlik duvarımı kapatırsam düğüme mükemmel bir şekilde erişebilirim, teşekkürler :) Ama elbette bir şey yapmanın daha güvenli bir yolu olmalı mı?
Joel Murphy

1
Şimdi geri koydum, merak etme :) Oraya da yazmalı mıyım? Yoksa sorumun üstesinden gelmenin bir yolu var mı? teşekkür ederim
Joel Murphy

2
Şerefe. Ben de işaretledim çünkü başka bir iş parçacığında bir moderatör tarafından herhangi bir eylem yapılmadan önce 3 kullanıcı tarafından işaretlenmesi gerektiğini okudum
Joel Murphy

2
Kaldırdığım bayrak faydalı sayıldı, bu yüzden ne kadar sürebileceğinden emin değilim!
cheesemacfly

Yanıtlar:


11

Büyük olasılıkla sizin düğüm uygulama geri döngü IP adresine bağlayıcıdır 127.0.0.1yerine "bütün IP'leri" nin 0.0.0.0bu yana varsayılan davranışıdır listen. Aramanızda hem bağlantı noktasını hem de IP'yi belirtin server.listen(80, '0.0.0.0');ve tekrar deneyin.


3
Bunu yaparsam, LAN'ımdaki başka bir aygıtta Düğüme erişemiyorum. Kodum şuna benzer: var io = requir ('socket.io'); var express = requir ("ekspres"); var app = express (); var sunucu = gerektirir ('http'). createServer (app) io = io.listen ('80 ',' 0.0.0.0 ');
Joel Murphy

2
Bu benim durumumda işe yaradı. Bazı kablosuz ağlarda localhostdize olarak çalışır, ancak diğerlerinde şöyle yazmanız gerekir127.0.0.1
Raul Rene

Bu, şu anda yazılan soru ışığında yanlıştır, çünkü aslında yerel bilgisayarda LAN adresini kullanarak erişilebilir, yani bu adresi de dinler.
Arlen Beiler

6

Geçerli yerel ağ IP'nizi alın ve http sunucusunu şu şekilde çalıştırın:

server.listen(80, 'current_local_ip');

1
bu benim için çalışıyor.
psulek

NodeJS belgeleri, IP belirtilmezse joker karakterle dinleyeceğini belirtir (sırasıyla: ::veya sırayla 0.0.0.0)
Arlen Beiler

3

İlk olarak, C:\Program Files (x86)\nodegüvenlik duvarınızdaki güvenilir uygulamalar listesine eklemeniz gerekir .

Ardından, düğüm uygulamanızda şunları yazabilirsiniz:

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

veya:

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

veya:

listen(3333, function() {

veya:

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

veya:

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

veya:

listen(80, function() {

Bu 6 kombinasyonun her biri benim durumumda çalışıyor: Windows Server 2016'da node.js, bir şirket proxy'si tarafından korunuyor.


3

Aşağıdakileri yapmak benim için bir Windows PC'de çalıştı. Şunu deneyin: açık

Denetim Masası \ Sistem ve Güvenlik \ Windows Defender Güvenlik Duvarı \ İzin verilen uygulamalar

Sonra listeden node.js dosyasını bulun ve ayarları değiştir> Özel erişimin işaretli olduğundan emin olun ve ardından Tamam'ı tıklayın.


3

Bu sorun için iyi bir çözüm buldum. Tüm yapılandırmaları yapmak yerine (Güvenlik duvarını ayarlama, bağlantı noktası yönlendirme vb.) Yerel düğüm sunucusunu Internet üzerinden göstermek için bir yardımcı program olan localtunnel kullandım . Geliştirme, test, paylaşım amacıyla kullanabilirsiniz, sadece üretim için kullanmayın.

Önce localtunnel'i aşağıdaki gibi kurmanız gerekir:

$npm install -g localtunnel

Bundan sonra düğüm uygulamanızı düğüm sunucunuzun localhost üzerinde çalışacak şekilde yapılandırın. Örneğin:

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

Benim durumumda 3000 olan portunuzu not edin ve düğüm sunucunuzu başlatın.

Başka bir terminal açın ve localtunnel'i çalıştırmak için aşağıdaki komutu yazın.

$lt --port 3000

Bundan sonra, terminalde geliştirme / test amacıyla kullanabileceğiniz bir URL alacaksınız. Bu URL internette kullanılabilir olacak, böylece başkalarıyla da paylaşabilirsiniz. Yerel tüneliniz çalıştığı sürece, diğerleri yerel düğüm sunucunuza erişebilir.

Daha fazla yapılandırma seçeneği / yardımı için belgeleri inceleyebilirsiniz: https://www.npmjs.com/package/localtunnel

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.