728x90

전체 글 362

wsl2 프로젝트 오픈 시 Intellj 프리징 현상

얼마 전 재택 근무용 노트북을 구매했다. 맥은 비싸서 윈도우즈에 개발환경을 구축 중에 문제가 발생했다. 현상 인텔리제이에서 wsl2 안에 있는 프로젝트를 오픈하면 인덱싱 중에 자꾸만 멈추거나 wsl2 안에 있는 jdk를 불러오다가 멈추는 현상이었다. 문제 열심히 구글링 한 결과 인텔리제이나 wsl2의 문제가 아니라 방화벽에 문제인 것으로 확인되었다. https://github.com/microsoft/WSL/issues/8995 해결 Windows 보안 - 바이러스 및 위협 방지 - 바이러스 및 위협 방지 설정 - 설정 관리 - 제외로 들어간다. 아래의 두개 프로세스를 제외 사항에 추가한다.

wsl2 2023.05.25

[WAF] NestJS 애플리케이션 AWS에 배포하기 08

인프라 구성도 이번 시간에는 ALB를 방어하기 위해 WAF를 설정하겠습니다 WAF(Web Application Firewall) 기본적으로 AWS에 모든 리소스는 AWS Shield Standard로 보호됩니다. Shiled Standard는 네트워크 레벨에서의 DDos 보호, SYN Flood, UDP Flood 및 Reflection Attacks와 같은 공격 유형에 대한 자동 탐지 및 차단, 대역폭 공격에 대한 자동 스무딩을 무료로 제공합니다. 만일 더 다양한 보안 위협을 탐지 및 차단하고 싶다면 WAF를 사용하는 게 좋습니다. WAF는 아키텍처의 변경 없이 CloudFront, API Gateway, AppSync, ALB에 적용할 수 있으며 웹 ACL(액세스 제어 목록)을 정의한 다음 보호하려는..

DevOps/AWS 2023.04.25

NestJS JWT 발급과 인증

저번 시간에는 Google OAuth를 통해 사용자를 인증하는 방법에 대해 다뤘습니다. 오늘은 이어서 인증된 정보를 가지고 JWT를 발급하고 인증하는 방법에 대해서 다루겠습니다. 패키지 설치 npm i --save @nestjs/jwt passport-jwt bcryptjs npm i --save-dev @types/passport-jwt @types/bcryptjs @nestjs/jwt는 Nest.js 프레임워크에서 JWT(JSON Web Tokens) 인증을 구현할 때 사용되는 패키지입니다. passport-jwt는 Passport와 함께 JWT 인증을 사용할 때 사용되는 패키지입니다. bcryptjs는 refresh token을 해쉬하여 데이터베이스에 저장하기 위해서 설치합니다. JWT 발급 Jwt..

Javascript/NestJS 2023.04.23

NestJS OAuth 인증 두번째

첫번째 시간에는 Google 클라이언트 ID를 발급받는 방법을 다뤄보았습니다. 이번 시간에는 Passport와 NestJS에 가드를 통해 인증을 진행하겠습니다. 패키지 설치 npm i --save @nestjs/passport passport passport-google-oauth20 @nestjs/jwt --save-dev @types/passport @types/passport-google-oauth20 각 패키지들에 대해서는 차차 설명하도록 하겠습니다. Passport Passport는 Node.js에서 사용되는 인증 미들웨어로, 다양한 인증 전략(strategy)을 지원하며, 사용자 정의 전략을 만들어서 사용할 수도 있습니다. @nestjs/passport를 사용하면 NestJS에서 passpor..

Javascript/NestJS 2023.04.23

NestJS OAuth 인증 첫번째

사이드 프로젝트에서 로그인은 네이버, 카카오, 구글을 통한 소셜 로그인만 제공하기로 하였습니다. OAuth 프로세스 브라우저에서 서버로 OAuth 로그인 페이지를 요청합니다. 서버는 브라우저를 OAuth 서비스 제공자의 로그인 페이지로 리다이렉트시킵니다. 로그인 성공시 서비스 제공자는 브라우저를 서버와 사전에 협의된 URL로 Access Token과 함께 리다이렉트시킵니다. 서버는 서비스 제공자에게 인증코드를 보내고 서비스 제공자는 사용자 정보를 서버로 보냅니다 Google OAuth 클라이언트 등록 1. https://console.cloud.google.com/ 에 로그인합니다. 2. "프로젝트 만들기"를 선택하여 자신의 프로젝트를생성합니다. 3. "API 및 서비스" > "사용자 인증 정보" > “..

Javascript/NestJS 2023.04.23

[CodeDeploy] NestJS 애플리케이션 AWS에 배포하기 07

인프라 구성도 이전 시간까지 GithubActions을 통해 코드를 빌드하였습니다. 이제 CodeDeploy로 오토스케일링 그룹에 배포하는 설정을 진행하겠습니다. Dockerfile NestJS 애플리케이션을 도커 이미지로 만들기 위한 도커파일입니다. 프로젝트 루트에 생성합니다. FROM node:18 WORKDIR /app COPY package*.json ./ RUN npm ci --only=production COPY . . EXPOSE 3000 CMD ["npm" ,"run","start:prod"] nginx.conf 프록시로 사용될 nginx 설정 파일입니다. 프로젝트 루트에 /nginx 디렉토리에 생성합니다. user nginx; worker_processes auto; error_log /..

DevOps/AWS 2023.03.31

NestJS cookie-parser import 에러

에러사이드 프로젝트 진행중에 Refresh Token 을 쿠키에 담아 사용하고 있는데 이런 에러를 만났다./app/dist/main.js:14 app.use((0, cookie_parser_1.default)()); ^ TypeError: (0 , cookie_parser_1.default) is not a function at bootstrap (/app/dist/main.js:14:41) at process.processTicksAndRejections (node:internal/process/task_queues:95:5)main.tsasync function bootstrap() { const app = await NestFactory.create(AppModule); const port = 30..

Javascript/NestJS 2023.03.29

NestJS Health Check API

Health check API 서버나 애플리케이션의 상태를 모니터링하기 위한 API입니다. 일반적으로 HTTP GET 요청을 통해 접근할 수 있으며, 서버나 애플리케이션의 상태를 나타내는 정보를 반환합니다. 클라우드 서비스나 마이크로서비스 아키텍처를 사용하는 애플리케이션에서 널리 사용됩니다. AWS CodeDeploy의 배포는 Health Check API를 호출하여 지정된 상태값이 돌아오는지 확인 후에 배포를 마무리하기도 합니다. 또한 프라이빗 서브넷에 존재하는 데이터베이스의 상태를 쉽게 확인할 수 있는 방법이기도 합니다. 이 글은 NestJS의 공식 문서를 기반으로 작성되었습니다. @nestjs/terminus 설치하기 NestJS 프레임워크에서 사용할 수 있는 Health check 모듈입니다. 이..

Javascript/NestJS 2023.03.29

Github Actions에서 Env 파일 생성하기

workflow.yml - name: Create .env file run: | jq -r 'to_entries|map("\(.key)=\(.value|tostring)")|.[]' 연산자는 표준 출력 대신 현재 작업 디렉토리에 .env 파일을 작성하도록 지정합니다. .env 파일에 저장된 비밀 정보는 워크플로우의 다른 단계에서 사용될 수 있습니다. jq는 커맨드 라인에서 JSON 데이터를 다루기 위한 경량화된 프로그래밍 언어입니다. jq는 매우 간결한 문법을 사용하여 JSON 데이터를 선택하고 변환할 수 있습니다. 이를 통해 JSON 데이터를 검색하고 필요한 부분만 추출하거나 JSON 데이터를 다른 형식으로 변환할 수 있습니다. 또한 jq는 대규모 JSON 파일을 빠르게 처리할 수 있어서 대규모 데이터..

카테고리 없음 2023.03.29

NestJS에서 환경변수 다루기

웹 애플리케이션을 개발할 때, 로컬 환경에서 개발하다가, 서버에 배포할 때, 서버 환경에서 운영하게 됩니다. 이때, 로컬 환경과 서버 환경이 달라서 발생하는 문제를 해결하기 위해서는 환경 변수를 설정할 필요가 있습니다. 저는 사이드 프로젝트를 준비하면서 로컬에서 사용할 환경 변수를 지정하기 위해 @nestjs/config 라이브러리를 사용하였습니다. @nestjs/config NodeJS에는 대표적으로 환경 변수를 설정하는 라이브러리 dotenv가 존재하며 NestJS에서는 dotenv를 내부적으로 사용하는 @nestjs/config 라이브러리가 존재합니다. npm i --save @nestjs/config . env 파일 먼저 Root 디렉터리에 .dev.env 파일을 생성합니다. Root 디렉토리란 ..

Javascript/NestJS 2023.03.27
728x90