공용 게이트웨이 인터페이스![]() 공용 게이트웨이 인터페이스(영어: Common Gateway Interface; CGI)는 웹 서버 상에서 사용자 프로그램을 동작시키기 위한 조합이다. 존재하는 많은 웹 서버 프로그램은 CGI의 기능을 이용할 수 있다. 웹 서버 프로그램의 기능의 주체는 미리 준비된 정보를 이용자(클라이언트)의 요구에 응답해 보내는 것이다. 그 때문에 서버 프로그램 그룹에서는 정보를 그 장소에서 동적으로 생성하고 클라이언트에 송신하려하는 조합을 작성하는 것이 불가능했다. 서버 프로그램에서 다른 프로그램을 불러내고, 그 처리 결과를 클라이언트에 송신하는 방법이 고안되었다. 이를 실현하기 위한 서버 프로그램과 외부 프로그램과의 연계법을 정한 것이 CGI이다. CGI는 환경변수나 표준입출력을 다룰 수 있는 프로그램 언어에서라면 언어의 구별을 묻지 않고 확장하여 이용하는 것이 가능하나, 실행속도나 텍스트 처리의 용이함 등의 균형에 의해 펄이 사용되는 경우가 많았다. 최근[언제?]에는 펄뿐 아니라 파이썬, 루비 등도 널리 쓰이고 있다. 대표적인 애플리케이션에는 전자게시판, 접속 카운터, 위키나 블로그 시스템 등이 있다. 근래[언제?]에는 웹 서버의 프로세스로서 인터프리터를 상주시킴으로써, CGI로부터 프로그램을 호출해 부하를 줄임으로써 성능을 개선한 자바 서블릿이나 mod perl, mod php, FastCGI 등도 공개되었다. 역사1993년 NCSA 팀은 www-talk 메일링 리스트의 명령 줄 실행 파일을 호출하는 사양을 작성하였으나[1] NCSA는 더 이상 이 사양을 호스팅하지 않고 있다.[2][3] 기타 웹 서버 개발자들이 이를 수용하였고 그 이후로 웹 서버의 표준으로 자리잡고 있다. Ken Coar가 주도하는 워크 그룹이 1997년 11월 시작되어 CGI의 NCSA 정의가 공식적으로 확립되었다.[4] 이를 통해 RFC 3875 사양이 탄생되었으며 이는 CGI 버전 1.1을 기술한다. CGI에 관한 자주 있는 오해이름에서 알 수 있듯이, CGI는 어디까지나 인터페이스이며, 특정 플랫폼에 의존하지 않고, 웹 서버 등으로부터 외부 프로그램을 호출하는 조합을 가리킨다. 그러므로 그 조합을 사용하여 기동되는 프로그램 본체를 CGI로 호칭하는 것은 잘못된 것이다. 또, 1990년대 후반의 CGI를 사용한 프로그램은 펄이 대부분인 까닭에 CGI와 펄, 또는 그것에 속하는 특정 언어라는 인식도 널리 퍼져 있으나, 이것도 잘못된 인식이다. 사양CGI의 사양은 NCSA에 의해 최초로 정의 (NCSA HTTPd에 있음) 되어, 현재의 최신판은 CGI1.1이다.[5] 2004년에RFC 3875이 되었다.[6] CGI는 전형적으로는 아래와 같은 동작이 기대된다. CGI를 경유해 실행되는 프로그램을 CGI 프로그램이라고 부른다.
예다음의 펄 프로그램은 웹 서버로 전달되는 모든 환경 변수를 보여준다: #!/usr/bin/perl
=head1 DESCRIPTION
printenv — 환경을 출력만 하는 CGI 프로그램
=cut
print "Content-type: text/plain\n\n";
for my $var ( sort keys %ENV ) {
printf "%s = \"%s\"\n", $var, $ENV{$var};
}
각주
외부 링크 |
Portal di Ensiklopedia Dunia