nginx

Jaa-van·2023년 6월 1일
0
post-thumbnail

웹 서버 제품 중 하나이다

클라이언트에서 요청을 보냈을 때 요청에 맞는 정적 파일을 응답해주는 HTTP Web Server 로 활용된다.

또한 Reverse Proxy Server 로 활용하여 WAS 부하를 줄여주는 노드 밸런서 역할도 한다.

@웹 서버

웹 클라이언트로부터 HTTP req 를 받아 Static file 을 제공하는 프로그램이다
(static file => html, css, js)

  • http 기반으로 클라이언트의 요청을 서비스하는 기능을 한다
  • 정적인 컨텐츠 제공
    WAS 를 거치지 않은 상태로 바로 자원을 제공한다
  • 동적인 컨텐츠 제공을 위해 req 전달
    클라이언트 요청을 WAS 에 보내고 WAS 가 처리한 결과를 client 에 res 한다

WAS ( 왓스 )

(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;
}


0개의 댓글

관련 채용 정보