CGI(Common Gateway Interface)는 웹 서버와 외부 프로그램(쉘 스크립트 등) 사이의 통신 방법을 정의한 표준이다. 과거에 게시판 등 동적인 웹 사이트를 만들기 위해 널리 쓰였으나, 각 웹 요청에 대해 별도의 프로세스를 생성해야하기 때문에 서버에 부하를 많이 줘서 현재는 잘 쓰이지 않는다. 다만 WSGI, Fast CGI 등 여러 대안들이 CGI를 확장하거나 변형한 형태로 작동하기 때문에 CGI의 작동 방식을 이해해두면 유용하다.

작동 방식

웹 서버는 쿼리스트링, 요청 헤더의 각종 정보 등을 환경 변수에 담은 뒤 외부 프로그램을 실행한다. HTTP 요청에 본문(body)이 있는 경우 외부 프로그램의 표준 입력으로 전달한다.

외부 프로그램은 환경 변수와 표준 입력으로부터 원하는 정보를 얻어 해야할 일을 수행하고 응답을 표준 출력으로 내보낸다.

웹 서버는 표준 출력을 읽어서 그대로 클라이언트(보통은 웹 브라우저)로 전송한다. 따라서 외부 프로그램의 출력은 HTTP 응답 형식을 엄격히 따라야 한다.