웹 서버, CGI, FastCGI - PHP를 사용하는 이유?

2021. 6. 10. 19:08Network



< 웹 서버 >

소프트웨어 측면에서의 웹 서버란, 

웹 브라우저와와 같은 클라이언트로부터 HTTP 요청을 받아들이고,

이를 HTML 문서 와 같은 정적 페이지로 처리해 반환 하는 프로그램이다.

 

정적이란 말은 즉, 서버에 미리 저장된 정보를 클라이언트에게 전송한다는 것인데,

서버에 저장된 데이터가 변경되지 않는 한 고정된 웹 페이지를 보여준다.

< CGI >

 

Common Gateway Interface,

 

CGI란 웹서버와 외부 프로그램을 연결해주는 표준화된 프로토콜이다. 

 

미리 작성된 정적인 정보만으로는 웹 페이지를 구현하는데 한계가 있다.

 

음... 이런 느낌인 것 같다.

오늘 날짜를 표시하는 웹 페이지를 작성해두면,

오늘도, 내일도 "6월 10일" 을 표시할 것이다.

 

이를 매일 직접 HTML 문서를 수정해 반영하기는 어렵다.

외부 프로그램, 예를 들어 C, PHP, Python 등에서는 그러한 동적인 작업들이 가능할 것이다. 

 

즉 CGI란,

이와 같이 웹 서버가 처리 할 수 없는 정보가 요청되면, 외부 프로그램을 호출하고

외부 프로그램이 이를 처리하여 HTML으로 반환하면

웹 서버가 받아 브라우저로 전송하는

동적 페이지를 구성하기 위한 것이다!



< FastCGI >

CGI  하나의 요청에 하나의 프로세스를 생성한다.

많은 요청이 있으면, 많은 프로세스를 생성하고 서버에 부하가 생긴다.

 

이를 극복하기 위해 등장한 것이 FastCGI.

요청이 있을 때마다 프로세스가 만들어지는 것이 아니라, 하나의 프로세스로 요청들을 처리하여,

프로세스를 생성하고 제거하는 부하를 경감하였다.