본문 바로가기

프로그래밍/자바스크립트

[Node.js]공유기를 이용해 웹페이지 공개하기

콘솔 창을 띄어 node.js파일을 실행시키는 것은 어렵지 않다. 하지만 이렇게만 진행하면 자신의 컴퓨터(host computer)에서만 웹페이지를 볼 수 있는 한계가 있다. 이 페이지를 다른 사람들과 공유하는 방법을 알아보자. 

 

자신의 서버를 외부와 공유하기 위해서는 공유기에 있는 두 가지 설정을 해줘야 한다. 

첫 번째는 포트 포워딩(Port Forwarding)이고, 두 번째는 DDNS(Dynamic Domain Name System)이다. 

 

1. 포트 포워딩(Port Forwarding) 설정

이름에서 알 수 있듯이, 서버와 공유기, 클라이언트 간을 특정 포트로 연결시키는 방법이다. 그 방법은 다음과 같다. (현재 보유하고 있는 공유기인 iptime 기준이다. 

  • 먼저 웹브라우저에서 192.168.0.1을 입력하여 공유기 설정 페이지로 접속한 후 로그인한다. 
  • 그리고 아래와 같이 왼쪽 메뉴탐색기에서 포트 포워드 설정에 들어가 "현재 접속된 IP 주소"를 체크하고 외부 포트와 내부 포트를 설정하고 새 규칙을 추가하면 포트 포워딩이 완료된다.
    • 내부 포트: 웹서버로 접속하기 위한 포트이다. 80으로 고정한다.
    • 외부 포트: 웹브라우저의 주소창에 타이핑할 때 입력한다. 이미 다른 포트가 점유되어 있을 수 있으므로, 해당 포트도 80으로 설정한다. 

2. DDNS 설정

Dynamic Domain Name System의 약자로 도메인 네임을 변경시켜주는 역할을 한다. 사용 가능한 ip주소는 제한되어 있기 때문에 경우에 따라 ip주소를 바꿔줘야 할 필요가 있다. 매번 바뀌는 ip주소에 대응되는 도메인 네임을 부여함으로써 원하는 페이지로 쉽게 이동할 수 있게 된다. 최대 1개까지만 설정 가능하기 때문에, 나는 텍스트 입력 부분이 비활성화되어 있다.
메뉴탐색기의 DDNS설정에 들어가 호스트 이름, 사용자 ID(이메일 주소), 보안 문자만 입력하면 쉽게 설정할 수 있다. 

"호스트 이름. iptime.org"를 이용해 웹브라우저를 통해 자신의 서버에 접속할 수 있다.  

두 개의 설정이 끝났으면, 간단한 node.js파일을 통해 실제로 웹브라우저에서 접속이 되는지 확인할 수 있다. Node.js홈페이지(https://nodejs.org/ko/docs/guides/getting-started-guide/)에 있는 코드를 조금 수정하였다. hostname은 기본적으로 '127.0.0.1'로 되어 있는데, 해당 주소는 localhost를 가리키므로 '0.0.0.0'으로 변경하여 외부에서 접속할 수 있도록 한다. 그리고 포트 번호는 좀 전에 포트 포워딩에서 입력했던 내부 포트 번호를 입력하면 된다. 

 

app.js

const http = require('http');

const hostname = '0.0.0.0';					// hostname 변경
const port = 80;						// port 변경

const server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello World');
});

server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});

콘솔 창을 띄어 app.js 파일이 있는 곳으로 경로를 이동하고 실행시키면 아래와 같이 "Server..."가 나올 것이다. 

대망의 웹브라우저에서 확인해보자. 현재 사용하고 있는 웹브라우저를 열어 "호스트 이름. iptime.org"라고 입력하면, 작성했던 js파일의 결과가 화면에 나타나게 된다. 

이상으로 공유기를 이용한 외부 접속을 허용하는 방법을 알아보았다.