NGINX
NIGNX란?
트래픽이 많은 웹사이트의 확장성을 위해 설계한 비동기 이벤트 기반의 웹서버 소프트웨어
- 가볍고 높은 성능으로 더 적은 자원으로 더 빠르게 서비스를 제공하는것이 목표
- 다수의 연결을 효과적으로 처리 가능
- 적은 쓰레드로 클라이언트의 요청을 처리
- HTTP, Reverse Proxy, IMAP/POP Proxy server 제공
NodeJs도 비동기고 NGINX도 비동기?…!?!?!!!!!!!!
NODE.JS의 창시자, 라이언 달은
“You just may be hacked when some yet-unknown buffer overflow is discovered. Not that that couldn’t happen behind nginx, but somehow having a proxy in front makes me happy”.
이런 말을 하면서 nginx를 프록시서버로 앞단에 놓고 node.js를 뒤쪽에 놓는게 취약점에 의한 공격을 어느정도 방지한다고 하였습니다. 익명의 사용자의 직접적인 Web Server로의 접근을 차단하고 간접적으로 한 단계를 더 거침으로써 보안적인 부분을 처리할 수 있다는 것입니다.
Reverse Proxy
- 클라이언트는 Reverse Proxy Server에 Request
- Reverse Proxy Server는 요청을 받아서 내부서버에 요청, 응답받은후 클라이언트에게 전달
- 클라이언트에서 Origin Server에 직접 접속할 수 없으므로 높은 보안성 유지
- 한개의 Reverse Proxy Server에 여러 Origin Server를 연결할 수 있으므로 Load Balancing이 쉽게 가능해짐
node.js에 nginx 설치하기
1. Express 프로젝트 완성 후 PM2로 구동
2. EC2 의 보안그룹 – 인바운드 설정에서 80, 443, 8080포트 열기
3. EC2 접속후 nginx 설치하기 sudo apt update -y && sudo apt-get install nginx -y
4. nginx가 제대로 설치되었는지 확인 sudo systemctl status nginx
5. nginx 시작 및 재시작해도 자동으로 시작되게 설정 sudo systemctl start nginx sudo systemctl enable nginx
6. nginx 설정 파일 수정 sudo vim /etc/nginx/sites-available/default
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
server {
listen 8080;
server_name localhost;
location / {
proxy_pass http://localhost:3000; // http://localhost:express의포트번호
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;
}
location /public {
root /usr/local/var/www; }
}
7. nginx 재시작으로 설정 적용 sudo service nginx restart
8. IP:Port/가 아닌 IP/만으로 접속 확인
참고
- https://m.blog.naver.com/jhc9639/220967352282
- https://goodgid.github.io/Nginx/