목록Web (14)
우노
들어가기 앞서, .npmrc 파일은 Node.js 프로젝트에서 npm (Node Package Manager) 구성을 저장하는 설정 파일입니다. 이 파일을 사용하여 프로젝트별로 npm 관련 설정을 구성할 수 있습니다. 해당 포스팅에선 사용자 지정 패키지 스코프와 인증 정보를 설정하는 방법에 대해서 다뤄보겠습니다. .npmrc 사용자 지정 패키지 스코프와 인증 정보 설정 예제 @yourscope:registry=https://registry.npmjs.org/ //registry.npmjs.org/:_authToken=YOUR_AUTH_TOKEN @yourscope:registry=https://registry.npmjs.org/ 사용자 지정 스코프(@yourscope)가 npm 기본 레지스트리에서 호스팅..
SOP(Same Origin Policy)란? SOP는 동일한 출처로부터의 리소스 접근만 허용하는 웹 보안 정책입니다. 웹 애플리케이션과 API 서버가 같은 서버에 있으면 동일 출처, 서로 다른 서버에 있으면 다른 출처라고 이해하시면 이해가 쉽습니다. 이해를 위해, 브라우저 스크립트(예: JavaScript)를 통해 서버 리소스에 접근하는 예를 들어보겠습니다. 당신은 은행 웹 사이트에 로그인하여 개인 정보를 입력하고 있습니다. 이때 당신의 개인 정보를 노리는 다른 악성 웹 페이지가 열려 있는 상태라면, 해당 악성 웹 페이지는 본인들의 악성 스크립트를 실행하여, 은행 웹 사이트로부터 당신의 개인 정보를 훔칠 수 있습니다. 따라서, SOP를 사용하지 않는다면, 다른 출처로부터의 예상치 못한 리소스 접근을 통..
토큰 기반 인증이란? 토큰 기반 인증(Token-based authentication)은 웹 애플리케이션에서 사용자 인증을 처리하기 위한 인증 방식 중 하나입니다. 이 방식은 세션 기반 인증과는 다르게 서버에 사용자의 상태를 저장하지 않고, 토큰을 사용하여 인증을 수행합니다. 토큰 기반 인증의 주요 아이디어는, 클라이언트가 인증을 위해 사용자의 자격 증명(예: 로그인 정보)을 제공하면, 서버는 그 정보를 검증한 후에 클라이언트에게 토큰을 발급합니다. 이 토큰은 클라이언트에 저장되고, 일반적으로 HTTP 요청의 헤더에 포함되어 서버로 전송됩니다. 클라이언트가 서버에 요청을 보낼 때마다, 헤더에 포함된 토큰을 서버가 검증하고 인증을 확인합니다. 이를 통해 클라이언트는 인증된 상태를 유지하며, 서버는 클라이언..
Nginx proxy_pass 시 cookie 전달 location / { proxy_pass http://backend; add_header Set-Cookie "my_cookie=my_value; Path=/; HttpOnly; Secure"; } HttpOnly 브라우저에서 해당 쿠키로 접근할 수 없습니다. Secure HTTPS가 아닌 통신에서는 쿠키를 전송하지 않습니다.
예제 코드) Request 로그 출력 //Express 기본 모듈 불러오기. var express = require('express'); var http = require('http'); //Express 객체 생성 var app = express(); //기본포트를 app 객체에 속성으로 설정 app.set('port', process.env.PORT || 3000); app.use(function(req, res, next){ console.log('요청 처리'); // 전체 request 로그 출력 console.log(JSON.stringify(req.headers)); // request 로그 중, customheader 헤더값을 뽑아 b..
예제 코드) proxy_pass 시 custom header 추가 server { listen 3002; root /opt/nginx/html; resolver 168.126.63.1 valid=1m ipv6=off; # Disabling cache so the browser won't cache the website expires 0; add_header Cache-Control private; location / { # 변수 생성(헤더 값) set $customheader 'hello'; proxy_pass http://localhost:3000/; # 헤더 이름, 헤더 값 추가 proxy_set_header customheader $customheader; } error_pag..
예제 코드) Nginx 변수 선언 및 호출 server { listen 3002; root /opt/nginx/html; resolver 168.126.63.1 valid=1m ipv6=off; # 변수 선언 set $test 'hello'; location / { proxy_pass http://localhost:3000/; # 변수 호출 proxy_set_header customheader $test; } } 참고 https://cheat.readthedocs.io/en/latest/nginx.html#variables-in-configuration-files
들어가기 앞서, 해당 포스트에선, Nginx 액세스 로그를 Json 형식으로 남기는 방법에 대해서 다뤄보겠습니다. Nginx 기본 로그 포맷 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; Nginx Json 로그 포맷 설정 아래 코드를 참고해, nginx.conf 파일 내부 http 블락에 원하는 variables로 로그 포맷을 설정하면 됩니다. # Json 로그 포맷 설정 log_format nginxlog_json es..
들어가기 앞서, 해당 포스트에서는, npm forever를 사용하여, Node.js 앱 종료 시 자동 재실행하는 방법에 대해서 다뤄보겠습니다. forever 설치 npm install forever -g forever 시작 (Node.js 앱 실행) 앱 파일들이 있는 경로로 이동한 뒤, 주석을 참고해 명령어를 실행합니다. # 파일을 직접 실행할 경우 forever start app.js # package.json의 scripts를 실행할 경우 forever start -c "npm run dev" ./ forever 관리 프로세스 확인 forever list forever 관리 프로세스 제거 forever stop "forever관리번호" forever 관리 프로세스를 제거할 뿐, 실제 프로세스는 남아있..
resolver란? DNS 서버는, 도메인에 따른 실제 IP 주소를 반환해주는 역할을 합니다. nginx config 파일 내부에 특정 도메인을 작성했다면, DNS 서버를 통해 해당 도메인이 실제로 어떤 IP 주소를 가지고 있는지 알아야합니다. 따라서, resolver를 통해 nginx가 어떤 DNS 서버를 사용할지를 정할 수 있습니다. 예를 들어, 로컬에 있는 DNS 서버를 사용하겠다면 127.0.0.1을, 특정 통신사의 DNS 서버를 사용하겠다면 168.126.63.1 (KT 기본 DNS 서버)를 사용할 수 있습니다. 참고 https://elvanov.com/2312 https://tilnote.io/pages/63bbd869c78a5bca41f7e9be