Common Gateway Interface

Common Gateway Interface（コモン・ゲートウェイ・インタフェース、CGI）は、ウェブサーバ上でユーザプログラムを動作させるための仕組み。現存する多くのウェブサーバプログラムはCGIの機能を利用することができる。
ウェブサーバプログラムの機能の主体は、あらかじめ用意された情報を利用者（クライアント）の要求に応じて送り返すことである。そのためサーバプログラム単体では情報をその場で動的に生成してクライアントに送信するような仕組みを作ることはできなかった。
そこでサーバプログラムから他のプログラムを呼び出し、その処理結果をクライアントに送信する方法が考案された。それを実現するためのサーバプログラムと外部プログラムとの連携法の取り決めが CGI である。
CGI は環境変数や標準入出力の扱えるプログラミング言語であれば、どの言語を用いても作成することができるが、主にPHP、Perl、Javaで作成されることが多い。
代表的なアプリケーションには、電子掲示板、アクセスカウンタ、ウィキやブログシステムなどがある。
仕様.
CGI の仕様はNCSAにより最初に定義・実装（NCSA HTTPdにおいて）され、現在の最新版はCGI1.1である。2004年にRFC 3875となった。
CGI は、典型的には以下のような動作を期待される。CGIを経由して実行されるプログラムのことを、CGIプログラムと呼ぶ。
現在のウェブではHTMLが中心的な役割を果たしているので、CGIプログラムはHTMLを出力するケースが圧倒的に多い。
CGI以外の手法.
近年では、ウェブサーバから外部のプログラムを呼び出すという負荷の大きい動作を避け、ウェブサーバの一部としてインタプリタを常時起動させておくことにより性能を向上させた mod_perlや、PSGI(Perl)、mod_php、FastCGI、WSGI(Python) などのインタフェース・実装が一般的である。
このため、比較的新しいウェブサーバアプリケーションでは、CGIを直接動作させる機能を持たないものも存在する。