본문 바로가기
Computer Science/서버

[서버 / 웹서버] Apache, NginX, IIS 그리고 WAS, Proxy, 로드밸런싱

by SIXXXX_ 2022. 7. 27.
728x90

웹서버 종류

  • 아파치 : Apach
  • Nginx : (엔진X)라 읽음
  • IIS : 윈도우 서버

페이지 구분

  • 정적페이지 : 고정된 웹사이트
  • 동적페이지 : 게시판, DB로 인해 바뀌는 사이트

아파치, NginX의 모듈로 할 수 있다.

옛날에 많이 쓰던  조합인 Apach - PHP - MySQL 조합을 APM 이라 했다. 

 

 

 

Tomcat : API 애플리케이션 웹과 서버를 연결시켜주는 것, WAS라고 함

WAS : Tomcat, Jetty, Undertow

 

 

Spring으로 코딩한 웹앱을 war 파일로 빌드하면 그 안에 .class 파일, jsp, 이미지, css, js 등 파일이 압축되어 있는 형태

tomcat: 특정 폴더에 war을 넣고 명령어를 실행하면 스프링 서비스가 

요즘은 반대로 spring을 tomcat이 embeded 된 jar 파일로 빌드해서 배포

 

 

Tomcat (+war) : Spring

Spring(+embeded Tomcat) : jar파일로 배포

 

 

WAS 를 Java외 진영에서는 다르게 쓰기도 한다.

Node.js처럼 한꺼번에 얘기되기도 한다.

한국에서는 Java를 많이 해서

 

 

Tomcat 정적 리소스 빨라짐

WAS는 정적 리소스들을 뒷단,  Apache나 NginX 등 WebServer 를 앞단에 두는  의미는

  • Reverse Proxy: 클라이언트들에게 프록시로 서버의 정보를 감춤 ex. port번호 등을 감춤
  • Forward Proxy : IP를 대신한다, 사용자 관점에서 프록시 서버에서 저장되었다가 제공

 

 

아파치 보안 설정(reverse proxy)

1. 서버 정보 숨기기

2. 디렉토리 인덱싱 차단

3. 심볼릭 링크 차단

4. 웹 서버 프로세스 권한 제한

5. HTTP Method 제한

6. 에러페이지 설정

7. SSL 프로토콜 및 알고리즘 설정

8. http 접속 시 https 리다이렉트(RewriteEngine)

9. 특정 디렉터리 내 파일 실행 차단

 

(출처 : 아파치 보안 설정 https://blog.limelee.xyz/entry/%EC%95%84%ED%8C%8C%EC%B9%98%EB%B3%B4%EC%95%88%EC%84%A4%EC%A0%95)

 

 

보안쪽은 나중에 실습을 통해, 또는 보안담당자가 보여주는 것을 위주로 봐야할듯??

 

로드밸런싱

 

로드밸런싱 : 톰캣(WAS)등의 인스턴스 분산해주는 것

- 지속성 

- 성능이 나음

 

캐싱

 

캐싱 : reverse proxy의 캐시

서버 관점에서의 storage? 서버에 자주찾는 리소스들을 저장했다가 클라이언트에게 주기

 

웹서버 : 수많은 모듈 제공, health check를 한다.

 

Apache vs NginX

 

Apache : 다중프로세스 처리 , MPM : 멀티 프로세스 모듈 방식

클라이언트가 접속할때마다 생성하는 방법과 한 프로세스 안에서 스레드를 새로 생성하는 방식 2가지가 있다.

  • mpm_prefork : 클라이언트마다 프로세스를 두는 방식
  • mpm_worker : 한 프로세스에서 클라이언트마다 스레드를 생성한다는 것

-> context switching (컨텍스트 스위칭) " 메모리", 자원을 많이 소모

다양한 검증된 기능, 오랜기간 안정성,  이벤트 처리 추가됨

 

 

NginX : 이벤트 처리

  • event driven :  성능이 좀더 나음, 가벼움을 추구하는 서비스

 

 

 

REFERENCE

https://www.youtube.com/watch?v=Zimhvf2B7Es

 

더보기

안하면 까먹고 안하면 까먹고... 쥬륵