브라우저가 요청 → nginx가 요청을 받아서 nodejs로 전달 → nodejs가 db에서 데이터를 가져와서 nginx로 전달 → nginx가 브라우저로 데이터 전달
WAS? server?
server : 단순히 정적파일을 응답
정적파일 : 움직이지 않는 파일 ex) 이미지, html, css, js파일
WAS : web application server 클라이언트 요청에 대해 동적 처리를 해준 후 응답
동적 처리 : 클라이언트의 요청을 받고 어떠한 처리를 해준 후 응답을 해주는 것 ex) 로그인, 회원가입
일반적으로 현업에서 얘기하는 웹서버 → WAS
nodeJS는 웹서버로 쓸 수도 있고 WAS로도 쓸 수 있음!
그럼 NginX왜 사용해? 왜 웹서버를 별도로 운영해?
was의 부담을 덜어주기 위해 사용
was를 할 일이 많아. 로그인도 시켜줘야하고 회원가입도 시켜야하고.. 근데 정적파일을 전달해주는 일까지 내가해? 그건 좀.. nginx야 이런 간단한건 너가 좀 도와줘
동적처리가 필요할 때만 뒤에 있는 WAS로 보냄
다른 웹서버가 많은데 왜 nginx?
빠르다(성능이 미쳤다)
리버스 프록시로도 사용 가능
SSL 지원
SSL이란? Secure Socket Layer, 간단하게 말하면 들어오고 나가는 데이터들을 암호화하는 보안 기능을 갖고 있는 ‘보안 인증서'
엔진엑스가 https의 인증서를 제공해줄 수 있음
→ 그냥 엔진엑스 사용하면 https를 쉽게 설정할 수 있겠구나~
비동기처리 → 동시 커넥션 많이 수용ㄱㄴ
nodeJS처럼 이벤트 루프 사용 → 많은 클라이언트의 요청을 동시에 처리 ㄱㄴ
이 외에도 많은 기능이 있음
어떻게 적용?
예시)
sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get install nginx
sudo service nginx start
cd /etc/nginx/sites-enabled
sudo rm default
sudo vi default
sudo service nginx restart
server {
listen 80;
server_name idu-market.shop;
if ($host = idu-market.shop) {
return 301 https://$host$request_uri;
}
}
server {
listen 443 ssl;
server_name idu-market.shop;
location / {
proxy_pass http:// 127.0.0.1:5000;
}
}