배경
MSA환경에서 WebRTC통신을 구현하기 위해서는 서버와 클라이언트 모두 HTTPS로 암호화 된 상태에서 통신해야함 (ssl다는 방법은 여기를 참조)
서버와 클라이언트가 각 EC2에 따로 올라간 상태에서 nginx를 사용해 통신해보자
오늘의 할 일
- client: nginx의 tryfile을 index.html설정하기
- server: nginx에 리버스 프록시 달아주기
- server: node에 cors 달아주기
1. tryfile index.html설정하기
React는 SPA(Single Page Application)기반의 웹페이지 개발을 지원하기 때문에 index.html을 기반으로 내부 모듈을 교체하는 방식으로 동작한다. 절대경로로 요청이 들어와도 처리할 수 있도록 웹서버에서 설정을 해야한다. nginx의 경우 try_files설정을 하면 된다.
nginx config파일의 설정을 다음과 같이 변경한다
sudo vi /etc/nginx/sites-available/default
를 입력하기 전에 default파일의 이름을 바꿔 따로 백업해 두기로 하자- 항상 config설정을 변경하고 나면
sudo systemctl restart nginx
로 재시작을 한다.
2. nginx를 node.js express의 리버스 프록시로 사용하기
reverse proxy란?
리버스 프록시는 클라이언트로부터 요청을 받아서 적절한 웹 서버로 요청을 전송한다. 웹 서버는 요청을 받아서 평소처럼 처리를 하지만, 응답은 클라이언트로 보내지 않고 리버스 프록시로 반환한다. 요청을 받은 리버스 프록시는 그 응답을 클라이언트로 반환한다.
nginx config파일의 설정을 다음과 같이 변경한다.
sudo vi /etc/nginx/sites-available/default
를 입력하기 전에 default파일의 이름을 바꿔 따로 백업해 두기로 하자server { listen 80; server_name 도메인; location / { proxy_pass http://127.0.0.1:8000 proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } }
server_name
의도메인
부분에 사용할 서버의 도메인을 입력한다.proxy_pass
부분에 express 앱의 포트번호를 입력한다.- 항상 config설정을 변경하고 나면
sudo systemctl restart nginx
로 재시작을 한다.
3. node.js express에서 CORS허용하기
CORS란?
Cross Origin Resource Sharing의 약자로, 현재 도메인과 다른 도메인으로 리소스가 요청될 경우를 말한다. 이런 경우 보안상의 이유로 브라우저는 CORS를 제한하고 있다.
CORS npm 모듈 설치하기
npm install --save cors
미들웨어로 사용하기
var express = require('express');
var cors = require('cors');
var app = express();
app.use(cors());
끝!!
결과적으로는 이러한 아키텍처가 완성이 됩니다!
'👾개발지식 > DevOps' 카테고리의 다른 글
젠킨스와 도커를 이용한 CICD 배포방법 (0) | 2022.09.02 |
---|---|
letsencrypt사용해서 ssl인증서 달기 (0) | 2021.11.08 |
도커 기본 명령어 (0) | 2021.11.08 |
우분투 20.04 환경에서 도커(Docker) 설치 및 삭제 방법 (0) | 2021.09.09 |
도커를 사용해서 MYSQL설치하고 접속하기 (0) | 2021.07.28 |
댓글