Wyvern では、 CGI モジュールを使用することで、 CGI 機能が利用可能となります。CGI プログラムは、 Wyvernの設定で説明した wyvern.conf ファイル中の ScriptAlias パラメータで、 その置き場所を指定します。
たとえば、サーバの環境変数の一覧を表示させるプログラム(printenv.cgi)は 次のように記述します。
#!/bin/sh
# printenv.cgi
echo "Content-Type: text/html"
echo
echo "<pre>"
printenv
echo "</pre>"
上記の CGI プログラムを ScriptAlias で 指定したディレクトリに置き、プログラムに実行許可を与えます。
Example:
% chmod a+x printenv.cgi
CGI プログラムへのアクセスは、 http://localhost/cgi-bin/printenv.cgi となります (CGI 動作確認用として "printenv.cgi" プログラムがインストールされます)。
また、CGI モジュールが組み込まれていない場合は、CGI は使用できません。 その場合、ブラウザからの要求に対しては "400 Bad Request" が返されます。
Wyvern で設定される CGI 用の環境変数を次表に示します。
| 環境変数 | 説明 |
|---|---|
| PATH | コマンド検索用パス |
| SERVER_SOFTWARE | ウェブサーバのソフトウェア名 |
| SERVER_NAME | ウェブサーバの名称とバージョン |
| GATEWAY_INTERFACE | CGI のバージョン |
| SERVER_PROTOCOL | HTTP のバージョン |
| SERVER_PORT | ウェブサーバのサービスポート番号 |
| DOCUMENT_ROOT | ウェブサーバの HTML ファイル用トップディレクトリ名 |
| SERVER_ROOT | ウェブサーバのシステムファイル用トップディレクトリ名 |
| SERVER_ADMIN | ウェブサーバの管理者メールアドレス |
| REQUEST_METHOD | ブラウザから送られたメソッド |
| SCRIPT_NAME | 実行しようとしている CGI ファイル名 |
| PATH_INFO | CGI ファイルに対する付加パス情報 |
| PATH_TRANSLATED | ウェブサーバ内の CGI ファイルのためのの絶対パス |
| QUERY_STRING | CGI ファイルに対する引数(GET メソッド時のみ) |
| REMOTE_HOST | クライアントのホスト名 |
| REMOTE_ADDR | クライアントの IP アドレス |
| REMOTE_PORT | クライアントとの通信ポート番号 |
| AUTH_TYPE | ユーザ認証方法(現在は Basic認証のみ) |
| REMOTE_USER | ユーザ認証で許可されたユーザ名 |
| REMOTE_IDENT | RFC 1413 による識別プロトコルで取得したユーザ名 |
| CONTENT_TYPE | データの種類 |
| CONTENT_LENGTH | POST メソッド時のデータの長さ |
| HTTP_ACCEPT | ブラウザが許可している Content-Type |
| HTTP_ACCEPT_ENCODING | ブラウザが受け入れ可能なコンテンツのコーディング |
| HTTP_ACCEPT_LANGUAGE | ブラウザが希望するコンテンツの自然言語セット |
| HTTP_USER_AGENT | ブラウザの名称とバージョン |
| HTTP_REFERER | 直前に参照していた URL |
| HTTP_COOKIE | ブラウザから送られた Cookie の情報 |