ݺߣ

ݺߣShare a Scribd company logo
nodejs
트래픽 라우팅, 파일 서비스, 미들웨어
간단한 파일 서버
간단한 정적 파일 서버 만들기
1. HTTP서버를 생성 -> 대기
2. 요청 URL을 파싱하여 파일 위치 결정
3. 파일이 존재하는지 확인
4. 파일이 존재->파일열기
5. 파일이 없으면, 적절하게 응답
6. 응답
7. 다음요청을 대기
http.createServer(function (req, res) {
pathname = base + req.url;
console.log(pathname);
path.exists(pathname, function(exists) {
if (!exists) {
} else {
});
}).listen(8124);
console.log('Server running at 8124/');
if (!exists) {
res.writeHead(404);
res.write('Bad request 404n');
res.end();
}
else {
res.setHeader('Content-Type', 'text/html');
// 200 status - found, no errors
res.statusCode = 200;
// create and pipe readable stream
var file = fs.createReadStream(pathname);
file.on("open", function() {
file.pipe(res);
});
file.on("error", function(err) {
console.log(err);
});
}
• __dirname : 현재 디렉토리
• 윈도우에서는 base를 ‘./’
• 멀티미디어는 node-mime모듈
미들웨어
미들웨어?
양 쪽을 연결하여 데이터를 주고 받을 수 있도록
중간에서 매개 역할을 하는 소프트웨어
JSGI / Connect
Connect
- 대표적인 nodejs 미들웨어
- Express와 연동가능
- 설치 : npm install connect
- Express 4.0에서는 더 이상 지원 X
http://expressjs.com/4x/api.html#middleware
Simple connect
http.createServer(connect()
.use(connect.favicon())
.use(connect.logger())
.use(function(req,res){
res.end(‘hello world’);
})
).listen(8124);
대표적 connect번들
• connect.static
• Connect.logger
• Connect.parseCookie
• Connect.parseSession
connect.static
.use(connect.static(__dirname),
{redirect:true})
- 브라우저 캐싱, 잘못된 형식의 URL보호 등
Connect.logger
.use(connect.logger(
{format : ‘dev’,
stream : writeStream})
- 요청들에 대한 로그를 스트림에 기록
- 용도에 맞는 로그 모드 제공(default, short, tiny, dev)
Connect.parseCookie
.use(connect.cookieParser())
.use(connect.kookieSession())
- 다음장에 예제
사용자 정의 함수를 이용한
var app = connect()
.use(connect.logger('dev'))
.use(connect.cookieParser('mumble'))
.use(connect.cookieSession({key :
'tracking'}))
.use(clearSession)
.use(trackUser);
사용자 정의 함수를 이용한
function clearSession(req, res, next) {
if ('/clear' == req.url) {
req.session = null;
res.statusCode = 302;
res.setHeader('Location', '/');
res.end();
} else {
next();
}
}
next()는 미들웨어가 현재 요청을 처리 하지 않는경우,
오류가 있는경우
라우터
라우터
- 한 소스로부터 무언가를 받아서 다른 것으로 전달
- 대표적으로는 crossroads
- http://yourplace.org/article/urllllll
http://yourplace.org/node/174
Crossroads대표적 모듈
- addRoute
라우팅 패턴설정
- Parse
문자열 파싱 후, 적절한 경로로 보냄
- matched.add
라우팅 핸들러를 대응하는 경로에 매핑
Crossroads대표적 모듈
http.createServer(function(req,res) {
crossroads.parse(req.url);
res.end('and that's alln');
}).listen(8124);
Crossroads대표적 모듈
crosroads.addRoute('/category/{type}/:pub:/:id:', function(type,pub,id){
if (!id && !pub){
} else if (!id) {
} else {
}
});
http://... /category/history
http://... /category/history/journal
http://... /category/history/journal/123
록시
록시
- 여러 개의 다른 위치에서 요청된 내역을
하나의 서버로 라우팅 하는 방법
- 로드밸런싱, 캐시, 보안, 원래의 요청자를 감추는 목적 때문에 사용
http-proxy
httpProxy.createServer(8124, ‘localhost’).listen(8000)
//8000번 포트에서 대기하다가 8124로 전달
- 정방향, 역방향 록시 제공
- 웹소켓, HTTPS지원
Ad

Recommended

리눅스 간단 강의 4강
리눅스 간단 강의 4강
Junsu Kim
리눅스 간단 강의 2강
리눅스 간단 강의 2강
Junsu Kim
둡괶리
둡괶리
Choonghyun Yang
성미급한 사람들을 위한 아파치 설치
성미급한 사람들을 위한 아파치 설치
경민 남
리스펙토링 세미나 - 웹 브라우저 동작 개념, Node.js를 통한 서버 이해, REST API
리스펙토링 세미나 - 웹 브라우저 동작 개념, Node.js를 통한 서버 이해, REST API
Wooyoung Ko
게이트단의 보안
게이트단의 보안
Choonghyun Yang
Mongo DB 완벽가이드 - 4장 쿼리하기
Mongo DB 완벽가이드 - 4장 쿼리하기
JangHyuk You
HTTP 완벽가이드 7장 캐시
HTTP 완벽가이드 7장 캐시
박 민규
Nodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjs
기동 이
Node.js의 도입과 활용
Node.js의 도입과 활용
Jin wook
Leadweb Nodejs
Leadweb Nodejs
근호 최
[C5]deview 2012 nodejs
[C5]deview 2012 nodejs
NAVER D2
Nodejs 발표자료
Nodejs 발표자료
shanka2
Isomorphic JavaScript with Nashorn
Isomorphic JavaScript with Nashorn
Maxime Najim
한림대학교 석세스모델링 by. 온라인브랜드디렉터강정은
한림대학교 석세스모델링 by. 온라인브랜드디렉터강정은
JUNGEUN KANG
NODEJS INTRO
NODEJS INTRO
JiHwan Yoon
Present 페북 광고 이야기
Present 페북 광고 이야기
Leo Kwon
Laravel로 스타트업 기술 스택 구성하기
Laravel로 스타트업 기술 스택 구성하기
KwangSeob Jeong
Atlassian confluence WIKI를 활용한 공유와 협업 환경 구성
Atlassian confluence WIKI를 활용한 공유와 협업 환경 구성
KwangSeob Jeong
진짜기초 Node.js
진짜기초 Node.js
Woo Jin Kim
Node.js 기본
Node.js 기본
Han Jung Hyun
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
Jeongsang Baek
Beejei node.js & web service
Beejei node.js & web service
Bumjin Kim
HTTP 완벽가이드 - ch5. web server
HTTP 완벽가이드 - ch5. web server
Mungyu Choi
Startup JavaScript 7 - Node.JS 기초
Startup JavaScript 7 - Node.JS 기초
Circulus
Startup JavaScript 8 - NPM, Express.JS
Startup JavaScript 8 - NPM, Express.JS
Circulus
서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)
SU BO KIM
Lw4.2
Lw4.2
준호 정
Play node conference
Play node conference
John Kim
NODE.JS 글로벌 기업 적용 사례 그리고, real-time 어플리케이션 개발하기
NODE.JS 글로벌 기업 적용 사례 그리고, real-time 어플리케이션 개발하기
John Kim

More Related Content

Viewers also liked (13)

Nodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjs
기동 이
Node.js의 도입과 활용
Node.js의 도입과 활용
Jin wook
Leadweb Nodejs
Leadweb Nodejs
근호 최
[C5]deview 2012 nodejs
[C5]deview 2012 nodejs
NAVER D2
Nodejs 발표자료
Nodejs 발표자료
shanka2
Isomorphic JavaScript with Nashorn
Isomorphic JavaScript with Nashorn
Maxime Najim
한림대학교 석세스모델링 by. 온라인브랜드디렉터강정은
한림대학교 석세스모델링 by. 온라인브랜드디렉터강정은
JUNGEUN KANG
NODEJS INTRO
NODEJS INTRO
JiHwan Yoon
Present 페북 광고 이야기
Present 페북 광고 이야기
Leo Kwon
Laravel로 스타트업 기술 스택 구성하기
Laravel로 스타트업 기술 스택 구성하기
KwangSeob Jeong
Atlassian confluence WIKI를 활용한 공유와 협업 환경 구성
Atlassian confluence WIKI를 활용한 공유와 협업 환경 구성
KwangSeob Jeong
진짜기초 Node.js
진짜기초 Node.js
Woo Jin Kim
Node.js 기본
Node.js 기본
Han Jung Hyun
Nodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjs
기동 이
Node.js의 도입과 활용
Node.js의 도입과 활용
Jin wook
[C5]deview 2012 nodejs
[C5]deview 2012 nodejs
NAVER D2
Nodejs 발표자료
Nodejs 발표자료
shanka2
Isomorphic JavaScript with Nashorn
Isomorphic JavaScript with Nashorn
Maxime Najim
한림대학교 석세스모델링 by. 온라인브랜드디렉터강정은
한림대학교 석세스모델링 by. 온라인브랜드디렉터강정은
JUNGEUN KANG
Present 페북 광고 이야기
Present 페북 광고 이야기
Leo Kwon
Laravel로 스타트업 기술 스택 구성하기
Laravel로 스타트업 기술 스택 구성하기
KwangSeob Jeong
Atlassian confluence WIKI를 활용한 공유와 협업 환경 구성
Atlassian confluence WIKI를 활용한 공유와 협업 환경 구성
KwangSeob Jeong

Similar to Nodejs 트래픽 라우팅, 파일 서비스, 미들웨어 (20)

스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
Jeongsang Baek
Beejei node.js & web service
Beejei node.js & web service
Bumjin Kim
HTTP 완벽가이드 - ch5. web server
HTTP 완벽가이드 - ch5. web server
Mungyu Choi
Startup JavaScript 7 - Node.JS 기초
Startup JavaScript 7 - Node.JS 기초
Circulus
Startup JavaScript 8 - NPM, Express.JS
Startup JavaScript 8 - NPM, Express.JS
Circulus
서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)
SU BO KIM
Lw4.2
Lw4.2
준호 정
Play node conference
Play node conference
John Kim
NODE.JS 글로벌 기업 적용 사례 그리고, real-time 어플리케이션 개발하기
NODE.JS 글로벌 기업 적용 사례 그리고, real-time 어플리케이션 개발하기
John Kim
Node.js 첫걸음
Node.js 첫걸음
SeungHyun Lee
Rhea_MMO_SNG_Convergence_Server_Architecture
Rhea_MMO_SNG_Convergence_Server_Architecture
Rhea Strike
Web server
Web server
Lee Geonhee
막하는 스터디 첫 번째 만남 Node.js
막하는 스터디 첫 번째 만남 Node.js
연웅 조
게임 디자이너와 게임 서버
게임 디자이너와 게임 서버
ByungChun2
Nodejs_chapter3
Nodejs_chapter3
Yoon Hee Hwang
제 5회 D2 CAMPUS SEMINAR - Swift로 만든 serverframework 개발기
제 5회 D2 CAMPUS SEMINAR - Swift로 만든 serverframework 개발기
NAVER D2
서버 아키텍쳐 입문
서버 아키텍쳐 입문
중선 곽
REST에 대해 알아봅시다.pdf
REST에 대해 알아봅시다.pdf
Ho Jeong Im
서버 아키텍쳐 입문
서버 아키텍쳐 입문
중선 곽
kt-cloud
kt-cloud
Kenu, GwangNam Heo
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
Jeongsang Baek
Beejei node.js & web service
Beejei node.js & web service
Bumjin Kim
HTTP 완벽가이드 - ch5. web server
HTTP 완벽가이드 - ch5. web server
Mungyu Choi
Startup JavaScript 7 - Node.JS 기초
Startup JavaScript 7 - Node.JS 기초
Circulus
Startup JavaScript 8 - NPM, Express.JS
Startup JavaScript 8 - NPM, Express.JS
Circulus
서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)
SU BO KIM
Play node conference
Play node conference
John Kim
NODE.JS 글로벌 기업 적용 사례 그리고, real-time 어플리케이션 개발하기
NODE.JS 글로벌 기업 적용 사례 그리고, real-time 어플리케이션 개발하기
John Kim
Rhea_MMO_SNG_Convergence_Server_Architecture
Rhea_MMO_SNG_Convergence_Server_Architecture
Rhea Strike
막하는 스터디 첫 번째 만남 Node.js
막하는 스터디 첫 번째 만남 Node.js
연웅 조
게임 디자이너와 게임 서버
게임 디자이너와 게임 서버
ByungChun2
제 5회 D2 CAMPUS SEMINAR - Swift로 만든 serverframework 개발기
제 5회 D2 CAMPUS SEMINAR - Swift로 만든 serverframework 개발기
NAVER D2
서버 아키텍쳐 입문
서버 아키텍쳐 입문
중선 곽
REST에 대해 알아봅시다.pdf
REST에 대해 알아봅시다.pdf
Ho Jeong Im
서버 아키텍쳐 입문
서버 아키텍쳐 입문
중선 곽
Ad

More from Mungyu Choi (17)

HTTP 완벽가이드 - ch15. 엔터티, 인코딩 (Entities and Encoding)
HTTP 완벽가이드 - ch15. 엔터티, 인코딩 (Entities and Encoding)
Mungyu Choi
learning spark - Chatper8. Tuning and Debugging
learning spark - Chatper8. Tuning and Debugging
Mungyu Choi
Chapter3 - learning spark
Chapter3 - learning spark
Mungyu Choi
Elasticsearch server Chapter5
Elasticsearch server Chapter5
Mungyu Choi
JVM과 톰캣 튜닝
JVM과 톰캣 튜닝
Mungyu Choi
조대협의 서버 사이드 - 대용량 아키텍처와 성능튜닝
조대협의 서버 사이드 - 대용량 아키텍처와 성능튜닝
Mungyu Choi
nodejs websocket & SOCKET.IO
nodejs websocket & SOCKET.IO
Mungyu Choi
정렬(버블정렬,선택정렬,삽입정렬)
정렬(버블정렬,선택정렬,삽입정렬)
Mungyu Choi
c++ API디자인 ch9. 발표자료
c++ API디자인 ch9. 발표자료
Mungyu Choi
b+tree
b+tree
Mungyu Choi
Hdfs
Hdfs
Mungyu Choi
hadoop ch1
hadoop ch1
Mungyu Choi
A tour of go
A tour of go
Mungyu Choi
Ch11. server infra
Ch11. server infra
Mungyu Choi
대규모 서비스를 지탱하는 기술 ch6
대규모 서비스를 지탱하는 기술 ch6
Mungyu Choi
4.1 단일호스트의 부하
4.1 단일호스트의 부하
Mungyu Choi
Chap4_2
Chap4_2
Mungyu Choi
HTTP 완벽가이드 - ch15. 엔터티, 인코딩 (Entities and Encoding)
HTTP 완벽가이드 - ch15. 엔터티, 인코딩 (Entities and Encoding)
Mungyu Choi
learning spark - Chatper8. Tuning and Debugging
learning spark - Chatper8. Tuning and Debugging
Mungyu Choi
Chapter3 - learning spark
Chapter3 - learning spark
Mungyu Choi
Elasticsearch server Chapter5
Elasticsearch server Chapter5
Mungyu Choi
조대협의 서버 사이드 - 대용량 아키텍처와 성능튜닝
조대협의 서버 사이드 - 대용량 아키텍처와 성능튜닝
Mungyu Choi
nodejs websocket & SOCKET.IO
nodejs websocket & SOCKET.IO
Mungyu Choi
정렬(버블정렬,선택정렬,삽입정렬)
정렬(버블정렬,선택정렬,삽입정렬)
Mungyu Choi
c++ API디자인 ch9. 발표자료
c++ API디자인 ch9. 발표자료
Mungyu Choi
대규모 서비스를 지탱하는 기술 ch6
대규모 서비스를 지탱하는 기술 ch6
Mungyu Choi
4.1 단일호스트의 부하
4.1 단일호스트의 부하
Mungyu Choi
Ad

Nodejs 트래픽 라우팅, 파일 서비스, 미들웨어