웹 서버 제품 중 하나이다
클라이언트에서 요청을 보냈을 때 요청에 맞는 정적 파일을 응답해주는 HTTP Web Server 로 활용된다.
또한 Reverse Proxy Server 로 활용하여 WAS 부하를 줄여주는 노드 밸런서 역할도 한다.
웹 클라이언트로부터 HTTP req 를 받아 Static file 을 제공하는 프로그램이다
(static file => html, css, js)
(web application service)
=> DB 조회나 다양한 로직 처리를 요구하는 dynamic 컨텐츠를 제공하기 위해 만들어진 application Server
HTTP 를 통해 컴퓨터나 장치에 어플리케이션을 수행해주는 미들웨어 이다
WAS = web server + web container
( web container => JSP, Servlet 을 실행시킬 수 있는 소프트웨어 )
프로그램 실행 환경과 DB 접속 기능 제공
여러개의 트랜잭션 관리 기능
비즈니스 로직 수행
nginx는 결국 정적인 컨텐츠를 담당하고 동적인 요청을 web application에 넘기는 중간 역할같은 서버라 생각해야겠다.
( 정확하게 이해가 가지 않는 상황이다... )
프록시 & 리버스 프록시
프록시 서버 => 안쪽에서 밖으로 나가는 포트를 제어하는 ex) 군대에서 사용하는 내부 망
리버스 프록시 => 밖에서 들어온 요청을 안쪽으로 뿌려준다
@노드 밸런싱 => backend 서버는 하나면 ip 가 1개
2개면 ip 주소가 2개다 -> 곤란하다
따라서 backend 서버를 모아서 endPoint 를 합친다 => 그래서 모든 백엔드 서버에 부하를 분산시켜준다
rds 도 db가 확장되어도 같은 엔드포인트로 접속할 수 있다
사스
바스
파스 paas => beanstalk 등이 해당하는데 aws에서 직접 관리해준다
@ 정적인 컨텐츠
DB에 큰 부하를 주지 않는
ex) netflix 가 db 에 모든 동영상이 있지만 10분 뒤에 다시보고 5분뒤에 다시보고 할때마다 db에 부하를 주지 않기 위해서 frontend 에서 처리하는 컨텐츠
nginx 를 통해서 정적인 컨텐츠를 frontend 가 backend 의 db 처리 부담을 덜어서 사용할 수 있도록 db를 붙들고 있어 준다
디도스 공격 등 이상한 req 에 대해서 예방해주는 보안 상의 개념도 존재한다
sites-available/default
에 있는
root /var/www/html
에 있는 파일을 참조해서 get method 를 보낼 시 보여준다
아래와 같은 코드를 입력해주는 것으로 redirection 을 nginx 에서 해줄 수 있다.
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://127.0.0.1:3000/;
proxy_redirect off;
}