웹서버 (아파치, 톰캣, Nginx...)

제이밍·2021년 11월 9일
8
post-thumbnail

웹서버

웹서버 말그대로 웹사이트를 제공하는 서버를 의미한다.

웹서버가 왜 필요할까 ?

웹 사이트가 서비스 될 때 필요함 왜?

우선 웹사이트는 브라우저에서 돌아간다 (크롬, 사파리, 파이어폭스 등등)
그리고 브라우저가 읽을 수 있는 코드는 html, css, javascript 각종 이미지와 데이터들이 있으며 이러한 리소스 들을 서버에서 사용자의 컴퓨터로 보내줄 수 있어야 한다.

이러한 파일(html, css...) 들은 원래 서버 컴퓨터의 특정 폴더, 다이렉토리에 저장되어 있으며 이 폴더를 외부에서 접근 가능하도록 개방해 서버에 지정된 웹사이트 주소로 접속하면
이것들을 받아갈수 있게 된다.

이때 필요한것이 바로 웹서버이다.

웹서버를 사용하면 좋은 점

Web Server를 사용하면 필요할때마다 서버에 요청을 보내지 않고 웹서버에서 정적 컨텐츠만 처리하도록 기능을 분배하여 서버의 부담을 줄일 수 있게 된다.

웹서버의 종류와 역할

아파치, 톰캣, Nginx IIS(윈도우 서버) ...

위와 같은 프로그램들이 서버 컴퓨터에 있는 특정 폴더를 개방한 후 필요한 Html 등의 파일들을 가져와 웹사이트를 제공할 수 있는 게 한다.

즉, 서버에 정해진 사이트 주소로 접속하면 필요한 파일들을 꺼내와서웹 사이트를 띄울수 있게 하는 것

아파치 vs 엔진엑스

  • 아파치 : 다중 프로세스
    - MPM, 멀티 프로세스 모듈 방식으로 일 처리
    요청이 들어 올때마다 프로세스를 새로 생성하는 방식이 있고 한 프로세스 안에서 스레드를 생성하는 방식이 있다.
    - 오랜기간 사용 되어왔기 때문에 안정성이 더 좋다.
  • Nginx : 이벤트로 일 처리
    - event driven 방식 요청을 한줄로 세워 순차대로 진행함
    - 성능면에서 아파치보다 좋다.

어떤 웹 프레임워크든 앞단에 아파치 혹은 nginx를 두는것이 보안측면의 이유가 크다.

web 서버와 WAS(Web Application Server)

was의 기본 개념

DB 조회나 다양한 로직 처리를 요구하는 동적인 컨텐츠를 제공하기 위해 만들어진 Web Application Server

자바랑 Jsp로 만든 웹 또는 API 어플리케이션을 실행할때 이 톰캣같은 web application server(Was)를 사용 즉,'웹' 이랑 '서버' 사이에 '어플리케이션'이란 말이 들어가서 was 가 되었다.

예로 들자면, 아파치 + php, mysql 를 연동시켜 동적인 php 웹사이트 제공(apm)해 왔고, 아파치에 php를 해석할 수 있는 모듈을 세팅 해 두면 웹 접근이 있을때마다 php 코드에 적힌 레시피대로 MySQL에 있는 데이터를 가져와서 아파치가 처리하여 제공 해주는 것이라 할 수 있다.

웹 서버의 특징(하는 일)

  1. 다양한 보안 기능들 제공
  2. 정적 또는 가벼운 동적 리소스를 제공하는 역할
  3. reverse proxy 기능 (반대되는 개념 forward proxy)
  • 클라이언트에게 서버의 주소를 숨기는 기능
  • 서버 내부적으로 파일들이 어느 폴더에 있는지, 서비스가 몇번 포트로 돌고있는지 감출수 있다.
  1. reverse proxy의 기능과 비슷한 로드밸런싱
  • 지속성을 위함, 웹에 새로운 기능이 추가되는 경우 동적 사이트를 업데이트 하기 위해 돌던 서비스를 종료하고 다시 실행해야 하는 경우
  • 톰캣같은 was를 여럿 두고 서비스를 돌릴 경우 순서대로 차례차례 업데이트해서 하기 때문에 재부팅 되는 동안 웹서버는 다른 톰캣들로 주문을 분산해 사용자 입장에서 서비스를 끊김 없이 이용할 수 있게 해준다.
  1. reverse proxy의 캐시
    서버단에서의 캐시, 서버로 자주 오는 요청들을 캐시에 쌓아 두고 있다가 바로 건내주는 기능
  • 캐시의 기본 원리
    한번 받아온 이미지 등 정적 파일들이 사용자와 서버 사이에 있는 프록시서버에 쌓여있다가 다음 요청때 서버까지 가지 않고 가져와 지는 것
  1. 수 많은 모듈을 사용해 뒷단 WAS(web application server)들이 정상동작하는지, 주기적으로 health체크를 해준다.

reference

https://gmlwjd9405.github.io/2018/10/27/webserver-vs-was.html
https://www.youtube.com/watch?v=Zimhvf2B7Es

profile
모르는것은 그때그때 기록하기

0개의 댓글