반응형

nodejs -- https, http 서버 만들기


서버 환경 : Let's Encrypt 인증서 설치한 네이버 클라우드 플랫폼 무료 서버, Ubuntu 18.04 LTS OS 사용.



** 주의; Let's Encrypt 인증서 설치한, 경로는 본인의 인증서 설치 경로로 바꾸어 사용하자.


** Express 에서 다중 포트 서버 만들자.

    -- 80 포트는 http 서버

    -- 3000 포트는 https 서버


'use strict';
const fs = require("fs");
const http = require("http");
const https = require("https");
const express = require("express");

const app = express();  // https
const app2 = express();  // http

// yourdomain.com 은 실제로 사용중인 도메인으로 바꿔야함. -- Let's Encrypt 인증서 설치시 위치 사용.
const privateKey = fs.readFileSync("/etc/letsencrypt/live/yourdomain.com/privkey.pem", "utf8");
const certificate = fs.readFileSync("/etc/letsencrypt/live/yourdomain.com/cert.pem", "utf8")
const ca = fs.readFileSync("/etc/letsencrypt/live/yourdomain.com/chain.pem", "utf8")

const credentials = {
    key: privateKey,
    cert: certificate,
    ca: ca
};

const httpServer = http.createServer(app2);
const httpsServer = https.createServer(credentials, app);

// 80 port -- http
app2.get("/"(reqres) => {
    console.log("------ http get / -----" + (new Date()).toLocaleString());
    console.log("req.ip => " + req.ip);
    console.log("req.hostname => " + req.hostname);
    console.log(req.url);
    console.log(req.originalUrl);

    res.send("<h1>HTTP Server running on port 80</h1>");
})

// 3000 port -- https
app.get("/"(reqres) => {
    console.log("------ https get / -----" + (new Date()).toLocaleString());
    console.log("req.ip => " + req.ip);
    console.log("req.hostname => " + req.hostname);
    console.log(req.url);
    console.log(req.originalUrl);

    res.send("<h1>HTTPS Server running on port 3000</h1>");
})


httpServer.listen(80() => {
    console.log((new Date()).toLocaleString());
    console.log('HTTP Server running on port 80');
})

httpsServer.listen(3000()=>{
    console.log((new Date()).toLocaleString());
    console.log(`HTTPS -- listening on port 3000 ...`);
})



** node 로 실행한 화면


$ sudo node app.js





** local 로 설치한, nodemon 으로 실행한 화면


$ sudo npx nodemon app.js







** browser 에서 접속 성공한 화면








반응형
Posted by 자유프로그램
,