📌http로 연결을 해둔 상태에서 시작
https://hayoung-dev-story.tistory.com/30
(Node.js 기준)
웹서버에서 SSL인증서를 등록해서 HTTPS를 사용하려면 https 모듈을 사용해야한다.
서버를 실행시키는 파일에서 https로 서버를 만들어주면 된다. (보통 app.js )
기존 코드 (HTTP)
//서버연결
app.listen(5000, '0.0.0.0', (err) => {
if (err) { console.log(`서버 연결 실패 : ${err}`);
} else {
console.log(`${env.PORT}서버 연결 성공`);
}
});
HTTPS 모듈을 사용한 코드
const express = require('express');
const app = express();
const https = require('https');
const fs = require('fs');
const options = {
key: fs.readFileSync('/private.key의 경로'),
cert: fs.readFileSync('/certificate_combined.crt(두개의 crt결합) 의 경로')
}
//라우터
app.get('/', (req, res) => {
res.send('this is HOME PAGE');
});
const server = https.createServer(options,app);
//app객체를 넣어서 app미들웨어,라우터를 server랑 연결
//서버연결
server.listen(5000,(err) => {
if (err) {
console.log(`서버 연결 실패 : ${err}`);
} else {
console.log(`https 서버 연결 성공`);
}
});
보통 nginx에서 프론트의 https 포트를 443번으로 사용하기 때문에 웹서버에서는 443번이 아닌 다른 포트를 사용해줘야 한다. 이때 같은 포트를 사용하면 404에러가 난다.
일반적으로 웹서버는 항상 열어두어야 하기 때문에 PM2를 사용해서 서버를 열어두게된다.
PM2를 실행시키는 명령어
pm2 start npm --name "my-app-http" -- start
pm2 start npm --name "my-app-https" -- start -- --https
https 옵션을 붙이면 https 프로토콜을 사용해서 실행시키고, https옵션을 붙이지 않으면 http프로토콜을 사용해서 실행시키게 되는데
https 모듈을 사용해서 만든 서버일경우에는 이미 https 프로토콜을 사용하므로 https옵션을 사용해주지 않아도 된다.
443번 포트를 사용하면 URL에서 자동으로 포트번호가 숨겨지는데 웹서버에서 만든 HTTPS서버는 5000번 포트를 사용했기때문에 포트번호를 적어줘야한다.
→ 포트번호는 NGINX의 설정파일에서 리버스프록시를 사용해서 숨길수있다.
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name ticketwantit.shop;
root /home/ec2-user/ticketwantit/FE-TicketWantIt;
location /api {
proxy_pass https://ticketwantit.shop:5000; //포트번호 숨기기
}
ssl_certificate "/etc/nginx/hayoung/certificate_combined.crt";
ssl_certificate_key "/etc/nginx/hayoung/private.key";
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_ciphers PROFILE=SYSTEM;
ssl_prefer_server_ciphers on;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
error_page 404 /404.html;
location = /404.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
'백엔드' 카테고리의 다른 글
HTTPS 환경 및 구축 방법 (2) | 2023.05.25 |
---|---|
NGINX로 프론트서버에 SSL인증서 등록하기 (0) | 2023.05.25 |
[윈도우] AWS EC2인스턴스 생성 및 서버 배포(Nginx, PM2),403 forbidden 해결 방법 (1) | 2023.05.25 |
[회고] Ticket Want It(티켓원잇) (1) | 2023.05.15 |
JWT토큰 인증(Local Storage) (1) | 2023.05.15 |