LAN에서 NodeJS 서버에 액세스하는 방법?


16

나는 네트워킹에 대해 가장 지식이 많은 사람은 아니지만 여기에 간다 ...

NodeJS로 응용 프로그램을 만들었고 가족과 함께 LAN에서 응용 프로그램을 테스트하고 싶습니다. 응용 프로그램이 포트에서 수신 1337연결에 내가 입력하여 내 자신의 PC를 통해 응용 프로그램 벌금에 액세스 할 수 있습니다 localhost:1337, 192.168.0.3:1337심지어는 http://joel-pc:1337/브라우저의 주소 표시 줄에.

NodeJS와 함께 아파치를 실행할 예정이며 동일한 네트워크에 연결되어 있으면 브라우저의 주소 표시 줄을 입력 192.168.0.3하거나 입력 하여이 세부 정보에 액세스 할 수 있습니다 http://joel-pc/.

이제 이상한 부분이 있습니다. 나는 아파치 서비스를 중지하는 경우, 포트에서 수신 대기 내 노드 응용 프로그램을 변경 80의 insted (HTTP) 1337가 입력하여 내 PC에 접근 할 수있을 것이다 localhost, 192.168.0.3또는 http://joel-pc브라우저의 주소 표시 줄에. 그러나 여전히 내 네트워크 외에 다른 네트워크의 다른 PC에서 NodeJS에 액세스 할 수 없습니다.

포트 1337에 대한 액세스를 허용하기 위해 Windows 7에서 아웃 바운드 규칙을 만들려고했지만 포트 80에서 수신 대기하더라도 내 PC 이외의 다른 PC에서 NodeJS 서버에 액세스 할 수 없습니다. 나는 여기서 빠졌다?


2
테스트만으로 방화벽을 끄면 어떻게됩니까?
cheesemacfly

1
방화벽을 끄면 노드에 완벽하게 액세스 할 수 있습니다. 감사합니다. :) 확실히 안전한 작업 방법이 있어야합니까?
Joel Murphy

1
나는 그것을 다시 넣었습니다. 걱정하지 마십시오 :) 나도 거기에 게시해야합니까? 아니면 내 질문을 옮기는 방법이 있습니까? 감사합니다
Joel Murphy

2
건배. 중재자가 조치를 취하기 전에 3 명의 사용자가 플래그를 지정해야하는 다른 스레드를 읽었으므로 플래그를 지정했습니다
Joel Murphy

2
내가 제기 한 깃발이 도움이되었다고 생각되므로 얼마나 오래 걸립니까!
cheesemacfly

답변:


11

노드 응용 프로그램이 기본 동작 인 127.0.0.1"모든 IP"대신 루프백 IP 주소에 바인딩 된 것 0.0.0.0같습니다 listen. 통화에 포트와 IP를 모두 지정 server.listen(80, '0.0.0.0');하고 다시 시도하십시오.


3
이렇게해도 LAN의 다른 장치에서 여전히 노드에 액세스 할 수 없습니다. 내 코드는 다음과 같습니다 .var io = require ( 'socket.io'); var express = require ( "express"); var app = express (); var server = require ( 'http'). createServer (app) io = io.listen ('80 ','0.0.0.0 ');
Joel Murphy

2
이것은 내 경우에 효과가있었습니다. 일부 무선 네트워크 localhost에서는 문자열로 작동하지만 다른 무선 네트워크 에서는 다음과 같이 입력해야합니다.127.0.0.1
Raul Rene

LAN 주소를 사용하여 로컬 컴퓨터에서 실제로 액세스 할 수 있기 때문에 현재 작성된 질문에 비추어 볼 때 이는 잘못된 것입니다.
Arlen Beiler

6

현재 로컬 네트워크 IP를 얻고 다음과 같이 http 서버를 실행하십시오.

server.listen(80, 'current_local_ip');

1
이것은 나를 위해 작동합니다.
psulek

어떤 IP가 지정되어 있지 않은 경우는 와일드 카드에서 수신 (순서 : 것이라는 NodeJS 문서 상태 ::0.0.0.0)
알렌 Beiler

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 가지 조합 각각은 필자의 경우 Windows Server 2016의 node.js로 회사 프록시로 보호됩니다.


3

다음은 Windows PC에서 나를 위해 일했습니다. 이것을보십시오 : 열기

제어판 \ 시스템 및 보안 \ Windows Defender 방화벽 \ 허용 된 앱

그런 다음 목록에서 node.js를 찾아 설정 변경> 개인 액세스가 선택되어 있는지 확인을 클릭 한 후 확인을 클릭하십시오.


3

이 문제에 대한 좋은 해결책을 찾았습니다. 모든 구성 (방화벽 설정, 전달 포트 등)을 수행 하는 대신 인터넷을 통해 로컬 노드 서버를 노출하는 유틸리티 인 localtunnel 을 사용 했습니다 . 개발, 테스트, 공유 목적으로 사용할 수 있으며 프로덕션에는 사용하지 마십시오.

먼저 다음과 같이 localtunnel을 설치해야합니다.

$npm install -g localtunnel

그런 다음 노드 서버가 localhost에서 실행되도록 노드 앱을 구성하십시오. 예를 들어 :

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

필자의 경우 your 3000your_port 를 적어두고 노드 서버를 시작하십시오.

localtunnel을 실행하기 위해 다른 터미널을 열고 다음 명령을 입력하십시오.

$lt --port 3000

이 후에 터미널에서 개발 / 테스트 목적으로 사용할 수있는 URL을 얻게됩니다. 이 URL은 인터넷에서 사용할 수 있으므로 다른 사람과 공유 할 수도 있습니다. 로컬 터널이 실행되는 동안 다른 사용자가 로컬 노드 서버에 액세스 할 수 있습니다.

자세한 구성 옵션 / 도움말은 다음 문서를 참조하십시오 . https://www.npmjs.com/package/localtunnel

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.