|
|
| iPlanet Web Server, Enterprise Edition NSAPI プログラマーズガイド |
第 3 章 事前定義済みの SAF および要求処理プロセス
この章では、obj.conf ファイル内でサーバに指示を与えるために使われる、標準の指令と事前定義済みのサーバアプリケーション関数 (SAF) を説明します。obj.conf の使い方と構文の詳細は、前の章、第 2 章「obj.conf の構文と使用法」を参照してください。Init (初期設定) SAF のリストは、第 7 章「magnus.conf の構文と使用法」を参照してください。
この章には、iPlanet Web Server の主要機能の一部である関数も記載しています。この章では、サーブレットおよびサーバが構文解析する HTML などの追加のコンポーネントが有効な場合のみ利用できる関数については、記載していません。
この章では、各指令の節を設けて説明しています。それぞれの節には、該当の指令とともに使用できるすべての事前定義済みのサーバアプリケーション関数のリストがあります。
AuthTrans 段階
事前定義済みの SAF のアルファベット順のリストは、付録 H「magnus.conf 内の指令のアルファベット順リスト」を参照してください。表 3-1 は、各指令とともに使用できる SAF のリストです。
バケットパラメータ
iPlanet Web Server では、次のパフォーマンスバケットが事前に定義されています。
default-bucket は、ユーザが定義したバケットまたは組み込みのバケットと関連しない関数の統計情報を記録します。
magnus.conf ファイルに追加のパフォーマンスバケットを定義することができます (perf-init および define-perf-bucket 関数を参照)。all-requests バケットは、default-bucket の .perf 統計を含むすべての NSAPI SAF の .perf 統計を記録します。
bucket=cache-bucket のように関数に bucket=bucket-name パラメータを追加することによって、obj.conf 内のすべての SAF のパフォーマンスを測定することができます。
パフォーマンス統計を一覧表示するには、service-dump Service 関数を使用します。
別の方法として、stats-xml Service 関数を使用してパフォーマンス統計を生成することができます。バケットは使用してもしなくてもかまいません。
パフォーマンスバケットの詳細は、『Performance Tuning, Sizing, and Scaling Guide for iPlanet Web Server』を参照してください。
AuthTrans 段階
AuthTrans は、承認変換 (Authorization Translation) を意味します。AuthTrans 指令は、クライアントにリソースへのアクセスを許可する前に承認を調べるため、命令をサーバに与えます。AuthTrans 指令は、PathCheck 指令との組み合わせで機能します。通常、AuthTrans 関数は、要求に関連付けられたユーザ名とパスワードが受け入れ可能かどうかを確認します。ただし、要求へのアクセスの許可や拒否は行なわず、これは PathCheck 関数が行ないます。サーバは、次の 2 つのステップでクライアントユーザの承認を処理します。
AuthTrans 指令 - Authorization ヘッダーにあるクライアントによって送信される承認情報の妥当性検査を行ないます。
承認プロセスは 2 つのステップに分かれているため、複数の承認スキーマを簡単に組み込むことができます。また、承認情報を記録してもそれを必要としないリソースを持つという、柔軟性も提供します。PathCheck 段階 - 承認されたユーザが要求されたリソースへのアクセスを許可されているかどうかを確認します。
AuthTrans 関数は、要求に関連付けられたヘッダーからユーザ名とパスワードを取得します。クライアントが最初に要求を行なうときは、ユーザ名とパスワードはまだ不明であり、AuthTrans 関数および PathCheck 関数はユーザ名とパスワードを検証できないため、共に作動して要求を拒否します。クライアントが拒否を受け取ったときの通常の対応は、適切なレルムを入力するためにユーザ名とパスワードを尋ねるダイアログボックスをポップアップすることです。その後クライアントは、ユーザ名とパスワードがヘッダーに入れられた状態で、再度要求を送信します。
obj.conf 内に複数の AuthTrans 指令がある場合、各関数は、いずれかがユーザの承認に成功するまで順番に実行されます。
この節では、次の AuthTrans クラス関数について詳しく説明します。
basic-auth は、カスタム関数を呼び出してユーザ名とパスワードを検証します。任意 (省略可能) で、ユーザのグループを決定します。
basic-ncsa は、ユーザ名とパスワードが NCSA スタイルまたはシステム DBM データベースに合っているかどうかを検証します。任意 (省略可能) で、ユーザのグループを決定します。
get-sslid は、現在の SSL セッションに対して一意の文字列を検出し、それを Session->client パラメータブロック内に ssl-id 変数として格納します。
qos-handler は、現在のサービス品質の統計を扱います。
basic-auth 関数は、カスタム関数を呼び出して、クライアントが送信する承認情報を検証します。Authorization ヘッダーは、基本サーバ承認スキーマの一部として送信されます。
通常この関数は、PathCheck クラス関数 require-auth と組み合わせて使用されます。
(省略可能) ユーザの検証用に使われるユーザデータベースの絶対パスとファイル名を指定します。このパラメータは、ユーザ関数に渡されます。
承認を検証するためのユーザカスタム関数の名前です。この関数は、load-modules を使ってあらかじめ読み込んでおく必要があります。この関数のインタフェースはすべての SAF と同じです。ただし、pb パラメータにユーザ名 (user)、パスワード (pw)、ユーザデータベース (userdb)、およびもし指定されている場合には、グループデータベース (groupdb) を指定して呼び出されます。このユーザ関数は、データベースを使って名前とパスワードを確認し、それらが有効でなければ REQ_NOACTION を返します。名前とパスワードが有効であれば、REQ_PROCEED を返します。次に basic-auth 関数は、auth-type、auth-user (user)、auth-db (userdb)、および auth-password (pw、Windows NT のみ) を rq->vars pblock に追加します。
(省略可能) グループカスタム関数の名前で、load-modules を使ってあらかじめ読み込んでおかなければなりません。この関数のインタフェースはすべての SAF と同じです。ただし、pb パラメータにユーザ名 (user)、パスワード (pw)、ユーザデータベース (userdb)、およびグループデータベース (groupdb) を指定して呼び出されます。また、この関数は、rq->vars pblock 内の auth-type、auth-user (user)、auth-db (userdb)、および auth-password (pw、Windows NT のみ) パラメータへもアクセス可能です。このグループ関数は、グループデータベースを使ってユーザのグループを決定し、それを auth-group として rq->vars に追加し、見つかった場合は REQ_PROCEED を返します。ユーザのグループが見つからなかった場合は、REQ_NOACTION を返します。
Init fn=load-modules shlib=/path/to/mycustomauth.so funcs=hardcoded_auth
AuthTrans fn=basic-auth auth-type=basic userfn=hardcoded_auth
PathCheck fn=require-auth auth-type=basic realm="Marketing Plans"
関連項目
require-auth
basic-ncsa 関数は、クライアントが送信する承認情報がデータベースに合っているかどうか検証します。Authorization ヘッダーは、基本サーバ承認スキーマの一部として送信されます。
通常この関数は、PathCheck クラス関数 require-auth と組み合わせて使用されます。
関連項目
require-auth
注 この関数は、下位互換性のためにのみ提供されているものです。get-sslid の機能は、SSL 接続の標準の処理に組み込まれています。
get-sslid 関数は、現在の SSL セッションに対して一意の文字列を検出し、それを Session->client パラメータブロック内に ssl-id 変数として格納します。
CGI が起動したときに変数 ssl-id が存在している場合、これが HTTPS_SESSIONID 環境変数として CGI に渡されます。
get-sslid 関数にはパラメータはなく、常に REQ_NOACTION が返されます。SSL が有効でない場合は無効です。
qos-handler 関数は、仮想サーバ、仮想サーバクラス、およびグローバルサーバの現在のサービス品質の統計を検査し、統計情報のログをとり、エラーを返すことによって QOS パラメータを強化します。正しく機能させるためには、この関数は default オブジェクト内に構成されている最初の AuthTrans 関数でなければなりません。
この SAF 用のコードは、第 6 章「カスタム SAF の例」の例の 1 つにあります。
詳細は、『Performance Tuning, Sizing, and Scaling Guide for iPlanet Web Server』を参照してください。
関連項目
qos-error
NameTrans 段階
NameTrans は、名前変換 (Name Translation) を意味します。NameTrans 指令は、仮想 URL をサーバ上の物理ディレクトリに変換します。たとえば、URLhttp://www.test.com/some/file.html
/usr/netscape/server4/docs/some/file.html
NameTrans 指令は、デフォルトオブジェクトに存在します。1 つのオブジェクト内に複数の NameTrans 指令がある場合、サーバは、いずれかが成功するまで、それらの一つ一つを順番に実行します。
この節では、次の NameTrans クラス関数について詳しく説明します。
assign-name は、名前付きオブジェクト内の指令を処理することを、サーバに伝えます。
document-root は、要求されたリソースの http://server-name/ の部分をドキュメントルートディレクトリに置き換えることによって、URL をファイルシステムパスに変換します。
home-page は、サーバのルートホームページ (/) に対する要求を特定のファイルに変換します。
pfx2dir は、指定した接頭辞で始まるすべての URL をファイルシステムディレクトリに変換します。また任意 (省略可能) で、追加の名前付きオブジェクト内の指令を有効にします。
redirect は、クライアントを別の URL にリダイレクトします。
strip-params は、セミコロンで区切られた組み込みパラメータをパスから削除します。
unix-home は、URL を、ユーザのホームディレクトリ内の指定したディレクトリに変換します。
assign-name 関数は、現在の要求と一致する obj.conf 内のオブジェクトの名前を指定します。次にサーバは、デフォルトオブジェクト内の指令に優先して、名前付きオブジェクト内の指令を処理します。
例として、デフォルトオブジェクト内の次の指令について考えてください。
NameTrans fn=assign-name name=personnel from=/personnel
サーバが、http://server-name/personnel に対する要求を受け取ると仮定します。この NameTrans 指令を処理した後、サーバは obj.conf 内で personnel という名前のオブジェクトを探し、personnel オブジェクト内の指令を処理することにより続行します。
assign-name 関数は、常に REQ_NOACTION を返します。
document-root 関数は、サーバのルートドキュメントディレクトリを指定します。前の NameTrans 関数によって物理パスが設定されていない場合、パスの http://server-name/ 部分がドキュメントルートの物理パス名に置き換えられます。
サーバが http://server-name/somepath/somefile に対する要求を受け取るとき、document-root 関数は、http://server-name/ を root パラメータの値と置き換えます。たとえば、ドキュメントルートディレクトリが /usr/netscape/server4/docs の場合にサーバが http://server-name/a/b/file.html の要求を受け取ると、document-root 関数は、要求したリソースのパス名を /usr/netscape/server4/docs/a/b/file.html に変換します。
この関数は、常に REQ_PROCEED を返します。この後に存在する NameTrans 指令は決して呼び出されることはないため、必ずdocument-root を起動する指令が最後の NameTrans 指令となるようにします。
ルートドキュメントディレクトリは 1 つしか存在できません。追加のドキュメントディレクトリを指定するには、pfx2dir 関数を使って追加のパス名変換を設定します。
関連項目
pfx2dir
home-page 関数は、サーバ用のホームページを指定します。クライアントがサーバのホームページ (/) を要求するときは常に、クライアントはその指定されたドキュメントを取得します。
ホームページファイルのパスと名前です。スラッシュ (/) で始まる場合、path はファイルへの絶対パスとみなされます。
この関数は、サーバの path 変数を設定し、REQ_PROCEED を返します。path が相対パスの場合、そのパスは URI に追加され、関数は REQ_NOACTION を返して、ほかの NameTrans 指令が続きます。
pfx2dir 関数は、要求された URL 内のディレクトリ接頭辞を実際のディレクトリ名と置き換えます。また、任意 (省略可能) で、現在の要求と一致するオブジェクトの名前を指定することもできます。(名前付きオブジェクトの使い方の詳細は、assign-nameの説明を参照してください。)
例
最初の例では、URL http://server-name/cgi-bin/resource (http://x.y.z/cgi-bin/test.cgi など) は物理パス名 /httpd/cgi-local/resource (/httpd/cgi-local/test.cgi など) に変換され、サーバも cgi という名前のオブジェクト内の指令の処理を開始します。
NameTrans fn=pfx2dir from=/cgi-bin dir=/httpd/cgi-local name=cgi
2 番目の例では、URL http://server-name/icons/happy/resource (http://x.y.z/icons/happy/smiley.gif など) は物理パス名 /users/nikki/images/resource (/users/nikki/images/smiley.gif など) に変換されます。
NameTrans fn=pfx2dir from=/icons/happy dir=/users/nikki/images
3 番目の例は、find-pathinfo-forward パラメータの使い方を示しています。URL http://server-name/cgi-bin/resource は、物理パス名 /export/home/cgi-bin/resource に変換されます。
NameTrans fn="pfx2dir" find-pathinfo-forward="" from="/cgi-bin" dir="/export/home/cgi-bin" name="cgi"
redirect 関数により、URL を変更し、更新された URL をクライアントに送信することができます。クライアントが古いパスを使ってサーバにアクセスすると、サーバは要求を新しい URL の要求として扱います。
(場合によって省略可能) クライアントに返す完全な URL を指定します。このパラメータを使用する場合、url-prefix は使用しないでください。逆の場合も同様です。
(場合によって省略可能) クライアントに返す新しい URL 接頭辞です。from 接頭辞は、単純にこの URL 接頭辞と置き換えられます。このパラメータを使用する場合、url は使用しないでください。逆の場合も同様です。
(省略可能) 送信前に URL を util_uri_escape することをサーバに伝えるフラグです。yes または no でなければなりません。デフォルトは yes です。
例
最初の例では、http://server-name/whatever に対する要求はすべて、http://tmpserver/whatever に対する要求に変換されます。
2 番目の例では、http://server-name/toopopular/whatever に対する要求はすべて、http://bigger/better/stronger/morepopular/whatever に対する要求に変換されます。
NameTrans fn=redirect from=/toopopular url=http://bigger/better/stronger/morepopular
strip-params 関数は、セミコロンで区切られた組み込みパラメータをパスから削除します。 たとえば、/dir1;param1/dir2 の URI は /dir1/dir2 のパスになります。 これを使用するとき、strip-params 関数は、リストされている最初の NameTrans 指令でなければなりません。
UNIX の場合のみ : unix-home 関数は、ユーザ名 (通常は、~username という形式) をサーバの UNIX マシン上のユーザのホームディレクトリに変換します。ユーザディレクトリをシグナルする URL 接頭辞を指定します。この接頭辞で始まるすべての要求は、ユーザのホームディレクトリに変換されます。
/etc/passwd ファイルまたは類似した構造のファイルのいずれかを使って、ユーザのリストを指定します。ファイル内の各行は、次のような構造になります (必要でない passwd ファイル内の要素は * で示されます)。
username:*:*:groupid:*:homedir:*
起動時に一度だけサーバにパスワードファイルを走査させたい場合は、Init クラス関数 init-uhome を magnus.conf 内で使用します。
NameTrans fn=unix-home from=/~ pwfile=/mydir/passwd subdir=public_html
関連項目
init-uhome, find-links
PathCheck 段階
PathCheck 指令は、NameTrans ステップの後に返されるローカルファイルシステムパスを検査します。このパスは、CGI パス情報などの項目や/./ および /../ および // などの危険要素を検査し、その後ですべてのアクセス制限が適用されます。複数の PathCheck 指令がある場合、関数のそれぞれが順番に実行されます。
この節では、次の PathCheck クラス関数について詳しく説明します。
check-acl は、承認のためアクセス制御リストを検査します。
deny-existence は、リソースが見つからなかったことを示します。
find-index は、ディレクトリが要求されたときにデフォルトファイルを検出します。
find-links は、特定のファイルシステムへのリンクを持つディレクトリへのアクセスを拒否します。
find-pathinfo は、PATH_INFO CGI 環境変数用にファイル名以外の特別なパス情報を検出します。
get-client-cert は、SSL3 セッションから承認されたクライアントの証明書を取得します。
load-config は、要求されたパス内のファイルから特別な構成情報を探して、読み込みます。
nt-uri-clean は、「not found」を示すことで、安全でないパス名を持つリソースへのアクセスを拒否します。
ntcgicheck は、指定した拡張子を持つ CGI ファイルを探します。
require-auth は、承認されていないユーザまたはグループのアクセスを拒否します。
set-virtual-index は、ディレクトリの仮想インデックスを指定します。
ssl-check は、秘密鍵サイズを確認します。
ssl-logout は、サーバの SSL セッションキャッシュ内の現在の SSL セッションを無効化します。
unix-uri-clean は、「not found」を示すことで、安全でないパス名を持つリソースへのアクセスを拒否します。
check-acl 関数は、クライアントが要求されたリソースへのアクセスを許可されているかどうかを確認するために使用する、アクセス制御リスト (Access Control List: ACL) を指定します。アクセス制御リストには、リソースへのアクセスが許可されている人や許可されていない人、どのような条件の下でアクセスが許可されているかに関する情報が含まれています。
オブジェクト内の PathCheck 指令の順番とは関係なく、check-acl 関数が最初に実行されます。指定した ACL が必要とする場合は、これによってユーザの認証が行なわれ、アクセス制御状態も更新されます。
deny-existence 関数は、クライアントが指定したパスにアクセスしようとしたときに、「not found」メッセージを送信します。サーバは「forbidden」ではなく「not found」を送信するため、パスが存在するかどうかをユーザが知ることができません。
(省略可能) 非表示にするファイルシステムパスのワイルドカードパターンです。パスが一致しない場合、この関数は何も行なわず、REQ_NOACTION を返します。パスが指定されていない場合は、一致するものとみなされます。
(省略可能) 「not found」メッセージで応答するのではなく、送信するファイルを指定します。これは、ファイルシステムの絶対パスです。
PathCheck fn=deny-existence path=/usr/netscape/server4/docs/private
find-index 関数は、要求されたパスがディレクトリかどうかを調査します。要求されたパスがディレクトリであれば、この関数はディレクトリ内のインデックスファイルを検索してから、インデックスファイルをポイントするようにパスを変更します。インデックスファイルが見つからない場合、サーバはディレクトリのリストを生成します。
ファイル obj.conf に home-page を呼び出す NameTrans 指令があり、要求されたディレクトリがルートディレクトリの場合は、インデックスページではなくホームページがクライアントに返されることに注意してください。
照会文字列がある場合、HTTP メソッドが GET ではない場合、あるいはパスが有効なファイルのものである場合、find-index 関数は何も行ないません。
探索するインデックスファイル名のコンマで区切られたリストです。スペースは、それがファイル名の一部である場合のみ使用します。コンマの前または後にスペースを入れないでください。このリストは、ファイルシステムが大文字と小文字を区別する場合は、大文字と小文字を区別します。
UNIX の場合のみ : find-links 関数は、現在のパスに、ほかのディレクトリまたはファイルシステムへのシンボリックまたはハードリンクが存在するかどうか調べます。何も見つからないと、エラーが返されます。通常この関数は、信頼性のないディレクトリ (ユーザホームディレクトリなど) に対して使われます。この関数は、公開すべきでない情報をほかのユーザによってポイントされることのないようにします。
関連項目
init-uhome, unix-home
find-pathinfo 関数は、URL 内のファイル名の後の追加のパス情報を探し、CGI 環境変数 PATH_INFO で使用するためにそれを格納します。
get-client-cert 関数は、SSL3 セッションから承認済みクライアントの証明書を取得します。これは、すべての HTTP メソッド、または指定したパターンと一致するメソッドにのみ適用することができます。また、サーバ上で SSL が有効なときのみ機能します。
証明書が存在しているか、SSL3 セッションから取得された場合、この関数は REQ_NOACTION を返し、要求の続行を許可します。それ以外の場合、この関数は REQ_ABORTED を返し、プロトコル状態を 403 FORBIDDEN に設定します。これにより、要求は失敗し、クライアントは FORBIDDEN 状態になります。
# クライアント証明書をセッションから取得する
# 証明書がセッションに関連付けられていない場合は、証明書を要求する
# クライアントが有効な証明書を提示しなかった場合、要求は失敗する
load-config 関数は、ドキュメントディレクトリ内で構成ファイルを検索し、そのファイルの内容をサーバの既存の構成に追加します。これらの構成ファイル (動的構成ファイルとも言う) は、要求されたリソースの追加のアクセス制御リストを指定します。サーバは、動的構成ファイルの規則に従って、要求されたリソースへのアクセスをクライアントに許可することも、許可しないこともあります。
load-config を起動する各指令は、ベースディレクトリに関連付けられています。ベースディレクトリは、basedir パラメータから明示的に示されるか、または要求されたリソースのルートディレクトリから派生します。ベースディレクトリは、次の 2 つのことを決定します。
要求がこの load-config 関数への呼び出しを起動する、最上位ディレクトリ。
サーバマネージャのインタフェースから動的設定ファイルを有効にするとき、システムは obj.conf ファイルに、ppath パラメータを含む追加のオブジェクトを書き込みます。load-config を起動する指令を、デフォルトオブジェクトに手入力で追加する (それらを個々のオブジェクトに指定するのではなく) と、サーバマネージャのインタフェースはその変更を反映しないことがあります。
サーバが要求されたリソースに適用する動的構成ファイルを検索する、最上位ディレクトリ。
- たとえば、ベースディレクトリが D:/Netscape/Server4/docs/nikki/ の場合、このディレクトリまたはそのサブディレクトリ (さらにそれらのサブディレクトリ) 内のリソースに対する要求のみが、動的構成ファイルの検索をトリガーします。要求されたリソースはベースディレクトリの親ディレクトリにあるため、リソース D:/Netscape/Server4/docs/somefile.html に対する要求はこのような検索をトリガーしません。
- ベースディレクトリが D:/Netscape/Server4/docs/nikki/ の場合、サーバはこのディレクトリ内の動的構成ファイルの検索を開始します。ほかの要因によって、サブディレクトリを検索することもあれば、検索しないこともあります (ただし、親ディレクトリは検索しません)。
load-config を起動する PathCheck 指令を手入力でファイル obj.conf に追加する場合は、デフォルトオブジェクトにそれを指定するのではなく、追加のオブジェクト (<OBJECT> タグで作成したもの) にそれを指定します。動的構成ファイル内のアクセス規則が影響するリソースの部分パス名を指定するには、OBJECT タグの ppath 属性を使用します。この部分パス名は、パターンと一致する任意のパス名にすることができ、ワイルドカードを含むことができます。
たとえば、次の <OBJECT> タグは、ディレクトリ D:/Netscape/Server4/docs 内のリソースに対する要求がファイル my.nsconfig のアクセス規則に従うように指定しています。
<Object ppath="D:/Netscape/Server4/docs/*">
PathCheck fn="load-config" file="my.nsconfig" descend=1 basedir="D:/Netscape/Server4/docs"
</Object>
注 ppath が、ディレクトリツリーの中のベースディレクトリより上位 (あるいは、ツリーの別の分岐にある) のリソースまたはディレクトリへ解決する場合、load-config 関数は起動されません。これは、ベースディレクトリが、要求が load-config 関数を起動する最上位ディレクトリを指定するためです。
load-config 関数は、構成ファイルが読み込み済みであれば REQ_PROCEED を返し、エラーが発生したときは REQ_ABORTED を返し、構成ファイルがまだ読み込まれていなければ、REQ_NOACTION を返します。
例
この例では、サーバが D:/Netscape/Server4/docs/nikki/ またはそのサブディレクトリにある部分文字列 secret を含むリソースに対する要求を受信するときは常に、 checkaccess.nsconfig という構成ファイルが検索されます。サーバはディレクトリ D:/Netscape/Server4/docs/nikki で検索を開始し、サブディレクトリも検索します。サーバは、要求されたリソースへのアクセスをクライアントに許可するか否かを決定するアクセス制御規則を適用するために、見つかった checkaccess.nsconfig の各インスタンスを読み込みます。
<Object ppath="*secret*">
PathCheck fn="load-config" file="checkaccess.nsconfig" basedir="D:/Netscape/Server4/docs/nikki" descend="1"
</Object>
Windows NT の場合のみ : nt-uri-clean 関数は、物理パスに \.\、\..\、または \\ (これらには潜在的にセキュリティ上の問題があります)が含まれているリソースへのアクセスを拒否します。
存在する場合は、URL にチルド「~」文字が含まれることを許可します。これは、NT プラットフォームではセキュリティ上の危険性があります。longfi~1.htm は longfilename.htm を参照することもありますが、適切な ACL の検査は受けていません。
関連項目
unix-uri-clean
Windows NT の場合のみ : ntcgicheck 関数は、拡張子を持たないファイル名にファイル名拡張子を追加するか、拡張子が .cgi のファイル名と置き換えることを指定します。
関連項目
init-cgi, send-cgi, send-wincgi, send-shellcgi
require-auth 関数は、ユーザまたはグループが承認済みの場合のみ、リソースへのアクセスを許可します。この関数が呼び出される前は、承認関数 (basic-auth など) は AuthTrans 指令で呼び出す必要があります。
AuthTrans 指令でユーザが承認済みであり、auth-user パラメータが指定されている場合、ユーザの名前は auth-user ワイルドカード値と一致していなければなりません。また、auth-group パラメータが指定されている場合、承認済みユーザは承認済みグループに属している必要があり、この承認済みグループは auth-group ワイルドカード値と一致していなければなりません。
PathCheck fn=require-auth auth-type=basic realm="Marketing Plans" auth-group=mktg auth-user=(jdoe|johnd|janed)
関連項目
basic-auth, basic-ncsa
set-virtual-index 関数は、URL の転送を決定する、ディレクトリの仮想インデックスを指定します。このインデックスは、LiveWire アプリケーション、それ自身のネームスペース内のサーブレット、Netscape Application Server applogic などがあてはまります。
from パラメータに現在の URI と一致する URI がリストされていない場合、REQ_NOACTION が返されます。virtual-index パラメータによって指定されているファイルがない場合、または現在の URI が見つからない場合は、REQ_ABORTED が返されます。現在の URI が from パラメータに記述されている URI のいずれかと一致する場合、または from パラメータがない場合は、REQ_RESTART が返されます。
(省略可能) この virtual-index を適用できる、コンマで区切られた URI のリストです。from が指定されていない場合は、常に virtual-index が適用されます。
# MyLWApp は LiveWire アプリケーションである
PathCheck fn=set-virtual-index virtual-index=MyLWApp
セキュリティの設定で指定されている現在の暗号化設定と整合性のない制限が選択されている場合、この関数は、秘密鍵サイズがより大きい暗号化を有効にする必要があることを警告する、ポップアップ ダイアログを開きます。この関数は、Client タグと一緒に使用して、エクスポートできないブラウザに対して特定のディレクトリへのアクセスを制限するよう設計されています。
SSL が有効でない場合、または secret-keysize パラメータが指定されていない場合、この関数は REQ_NOACTION を返します。現在のセッションの秘密鍵サイズが指定した secret-keysize より小さく、bong-file パラメータが指定されていない場合、この関数は、 PROTOCOL_FORBIDDEN のステータスと共に REQ_ABORTED を返します。bong ファイルが指定されている場合、この関数は REQ_PROCEED を返し、bong ファイル名に path 変数が設定されます。また、鍵サイズの制限が満たされないときは、現在のセッションの SSL セッションキャッシュエントリは無効になるため、同じクライアントが次にサーバに接続するときにフル SSL ハンドシェークが発生します。
ssl-check が REQ_NOACTION 以外のものを返す場合、ssl-check を使用する要求はアクセラレータファイルのキャッシュではキャッシュできません。
ssl-logout は、サーバの SSL セッションキャッシュ内の現在の SSL セッションを無効化します。これは、現在の要求には影響しませんが、クライアントが次に接続するときに、新しい SSL セッションを作成します。 SSL が有効な場合、この関数は、セッションキャッシュエントリを無効にした後に REQ_PROCEED を返します。 SSL が有効でない場合は、REQ_NOACTION を返します。
UNIX の場合のみ : unix-uri-clean 関数は、物理パスに /./、/../、または // (これらには潜在的にセキュリティ上の問題があります) が含まれているリソースへのアクセスを拒否します。
関連項目
nt-uri-clean
ObjectType 段階
ObjectType 指令は、要求に応えてクライアントに送信されるファイルの、MIME タイプを決定します。現在、送信される MIME 属性は type、encoding、および language です。MIME タイプは、content-type ヘッダーの値としてクライアントに送信されます。ObjectType 指令は type パラメータも設定します。このパラメータは、Service 指令が、要求された内容の種類に応じて要求を処理する方法を決定するために使用します。
1 つのオブジェクト内に複数の ObjectType 指令がある場合、現れる順番ですべての指令が適用されます。ある指令が属性を設定し、それ以降の指令がその属性を変更しようとした場合、最初の設定が使用され、それ以降の設定は無視されます。
ほとんどの場合 obj.conf ファイルには、type-by-extension 関数を呼び出す ObjectType 指令があります。この関数はサーバに、特定のファイル (MIME タイプのファイル) を確認して要求されたリソースの拡張子からコンテンツタイプを推測するよう、指示します。
この節では、次の ObjectType クラス関数について詳しく説明します。
force-type は、特定のタイプへの応答の content-type ヘッダーを設定します。
set-default-typeを使って、クライアントに返信される応答のデフォルトの charset、content-encoding、および content-language を定義することができます。
shtml-hacktype は、.htm および .html ファイルが、サーバが構文解析する html コマンドについて解析されるように要求します。
type-by-exp は、要求されたパスに基づいて応答の content-type ヘッダーを設定します。
type-by-extension は、ファイル拡張子と MIME タイプのデータベースに基づいて、応答の content-type ヘッダーを設定します。
force-type 関数は、まだ MIME タイプを持たない要求に、タイプを割り当てます。これを使用して、デフォルトのオブジェクトタイプを指定します。
ほかのすべての ObjectType 指令が MIME タイプを最初に設定する機会を持つように、この関数を呼び出す指令が ObjectType 指令のリストの最後に来るようにしてください。1 つのオブジェクト内に複数の ObjectType 指令がある場合、現れる順番ですべての指令が適用されます。ある指令が属性を設定し、それ以降の指令がその属性を変更しようとした場合、最初の設定が使用され、それ以降の設定は無視されます。
関連項目
type-by-extension, type-by-exp
この関数を使って、クライアントに返信される応答のデフォルトの charset、content-encoding、および content-language を定義することができます。
charset、content-encoding、および content-language が応答に設定されていない場合は、ヘッダーが送信される直前に、set-default-type で定義されているデフォルトが使用されます。この関数を obj.conf 内のさまざまなオブジェクトに置くことによって、ドキュメントツリーのさまざまな部分に対して、さまざまなデフォルトを定義することができます。
shtml-hacktype 関数は、.htm または .html ファイルの content-type を magnus-internal/parsed-html に変更し、REQ_PROCEED を返します。これは、拡張子が .htm または .html のファイルをサーバ側に取り込むという、下位互換性を提供します。この関数は、UNIX システム上のファイルの実行ビットを検査することもできます。この関数の使用は推奨されていません。
(UNIX の場合のみ。省略可能) 関数に、実行ビットが有効な場合のみ content-type を変更することを伝えます。このパラメータの値は重要ではありません。指定するだけでかまいません。exec-hack=true を使用することもできます。
type-by-exp 関数は、現在のパスをワイルドカード拡張子と一致させます。この 2 つが一致する場合、type パラメータ情報がファイルに適用されます。これは、URL に指定されているファイルまたはディレクトリのワイルドカードパターンを使用することを除けば、type-by-extension と同じです。
関連項目
type-by-extension, force-type
この関数はサーバに、MIME タイプマッピングのテーブルを見て、要求されたリソースの拡張子に従って要求されたリソースの MIME タイプを探すよう指示します。MIME タイプは、クライアントに返信される content-type ヘッダーに追加されます。
MIME タイプマッピングのテーブルは、server.xml ファイル内の MIME 要素によって作成されます。このファイルは、MIME タイプのファイルまたはリストを読み込んでマッピングを作成します。server.xml の詳細は、第 8 章「仮想サーバの構成ファイル」を参照してください。MIME タイプファイルの詳細は、付録 B「MIME タイプ」を参照してください。
たとえば、次の 2 行は MIME タイプファイルの一部分です。
type=text/html exts=htm,html
type=text/plain exts=txt要求されたリソースの拡張子が htm または html の場合、type-by-extension 関数はタイプを text/html に設定します。拡張子が .txt の場合、関数によりタイプは text/plain に設定されます。
関連項目
type-by-exp, force-type
Service 段階
関数の Service クラスは、クライアントに応答データを送信します。すべての Service 指令には、関数が実行されるかどうかを決定する、次のようなパラメータ (省略可能) があります。省略可能なすべてのパラメータは、実行される関数に対する現在の要求と一致している必要があります。
type
複数の Service クラス関数がある場合、省略可能なワイルドカードパラメータ (type、method、および query) と一致する最初のものが実行されます。
method
- (省略可能) この関数が実行される MIME タイプのワイルドカードパターンを指定します。magnus-internal/* MIME タイプは、実行する Service 関数を選択するためにのみ使用されます。
query
- (省略可能) この関数が実行される HTTP メソッドのワイルドカードパターンを指定します。一般的な HTTP メソッドは、GET、HEAD、および POST です。
UseOutputStreamSize
- (省略可能) この関数が実行される照会文字列のワイルドカードパターンを指定します。
flushTimer
- (省略可能) クライアントに送信されるデータのデフォルトの出力ストリームのバッファサイズ (バイト単位) を決定します。このパラメータが指定されていない場合、デフォルトは 8192 バイトです。
注 UseOutputStreamSize パラメータを obj.conf ファイル内で 0 に設定して、出力ストリームバッファリングを使用不可にすることができます。magnus.conf ファイルの場合、UseOutputStreamSize を 0 に設定しても何にも影響は与えません。
ChunkedRequestBufferSize
- (省略可能) バッファリングが有効である書き込み操作間の間隔の最大数を、ミリ秒で決定します。次に続く書き込み操作間の間隔がアプリケーションの flushTimer 値より大きい場合、それ以降のバッファリングは使用不可になります。これは、継続的に稼働し、定期的な状態更新レポートを生成する、CGI アプリケーションの状態を監視する際に必要です。このパラメータが指定されていない場合、デフォルトは 3000 ミリ秒です。
ChunkedRequestTimeout
- (省略可能) 「チャンクしていない」要求データのデフォルトのバッファサイズ (バイト単位) を決定します。このパラメータが指定されていない場合、デフォルトは 8192 バイトです。
- (省略可能) 「チャンクしていない」要求データのデフォルトのタイムアウト (秒単位) を決定します。このパラメータが指定されていない場合、デフォルトは 60 秒です。
UseOutputStreamSize、flushTimer、ChunkedRequestBufferSize、および ChunkedRequestTimeout パラメータの詳細は、「バッファ化されたストリーム」を参照してください。UseOutputStreamSize、ChunkedRequestBufferSize、および ChunkedRequestTimeout パラメータも magnus.conf 指令と同様です。「チャンクされたエンコーディング」を参照してください。obj.conf パラメータは、magnus.conf 指令を上書きします。
デフォルトでは、サーバは、send-file 関数を呼び出すことによって、要求されたファイルをクライアントに送信します。デフォルトを設定する指令は次のとおりです。
Service method="(GET|HEAD|POST)" type="*~magnus-internal/*" fn="send-file"
通常、この指令はほかのすべての Service 指令に起動の機会を与えるため、Service クラス指令のセットの最後に来ます。この指令は、要求のメソッドが GET、HEAD、または POST で、タイプが magnus-internal/ で始まらない場合に起動されます。*~ というパターンは「一致しない」ことを意味するので、注意してください。パターンで使用できる文字のリストは、付録 C「ワイルドカードパターン」を参照してください。
この節では、次の Service クラス関数について詳しく説明します。
add-footer は、ファイル名または URL で指定されているフッターを HTML ファイルに付加します。
add-header は、ファイル名または URL で指定されているヘッダーを HTML ファイルの前に付加します。
append-trailer は、HTML ファイルの終わりにテキストを追加します。
imagemap は、サーバ側のイメージマップを処理します。
index-common は、要求されたディレクトリ内のファイルとディレクトリの拡張リストを生成します。
index-simple は、要求されたディレクトリ内のファイルとディレクトリのシンプルなリストを生成します。
key-toosmall は、提供されている証明書鍵サイズが受け入れるには小さすぎることを、クライアントに示します。
list-dir は、ディレクトリの内容を一覧表示します。
make-dir はディレクトリを作成します。
query-handler は、HTML ISINDEX タグを処理します。
remove-dir は空のディレクトリを削除します。
remove-file はファイルを削除します。
rename-file はファイルの名前を変更します。
send-cgi は、環境変数を設定し、CGI プログラムを起動し、クライアントに応答を送信します。
send-file は、ローカルファイルをクライアントに送信します。
send-range は、バイト単位のファイルの範囲をクライアントに送信します。
send-shellcgi は、環境変数を設定し、シェル CGI プログラムを起動し、クライアントに応答を送信します。
send-wincgi は、環境変数を設定し、WinCGI プログラムを起動し、クライアントに応答を送信します。
service-dump は、収集されたパフォーマンスバケットデータに基づいて、パフォーマンスレポートを作成します。
shtml_send は、サーバが構文解析する html コマンドについて HTML ファイルを構文解析します。
stats-xml は、XML フォーマットのパフォーマンスレポートを作成します。
upload-file は、ファイルをアップ読み込んで保存します。
この関数は、クライアントに送信される HTML ファイルにフッターを付加します。このフッターはファイル名または URI のいずれかとして指定されます。つまり、フッターは動的に生成できます。フッターとして静的テキストを指定するには、append-trailer 関数を使用します。
Service type=text/html method=GET fn=add-footer file="footers/footer1.html"
Service type=text/html method=GET fn=add-footer file="D:/netscape/server4/footers/footer1.html" NSIntAbsFilePath="yes"
関連項目
append-trailer, add-header
この関数は、クライアントに送信される HTML ファイルの前にヘッダーを追加します。このヘッダーはファイル名または URI のいずれかとして指定されます。つまり、ヘッダーは動的に生成できます。
Service type=text/html method=GET fn=add-header file="headers/header1.html"
Service type=text/html method=GET fn=add-header file="D:/netscape/server4/headers/header1.html" NSIntAbsFilePath="yes"
関連項目
add-footer, append-trailer
append-trailer 関数は、HTML ファイルを送信し、その終わりにテキストを付加します。これは、HTML ファイルにテキストを付加するだけです。通常これは、作成者の情報と著作権のテキストに使われます。ファイルの最後の更新日を挿入できます。
必須パラメータがない場合、URL のファイル名の後に追加のパス情報がある場合、あるいはファイルが読み取り専用アクセスで開くことができない場合は、REQ_ABORTED を返します。
HTML ドキュメントに追加するテキストです。文字列は、送信される前に util_uri_unescape でアンエスケープ処理されます。テキストには HTML タグを入れることができ、データのアンエスケープ処理と挿入の後で最大 512 文字にすることができます。
文字列 :LASTMOD: (これは、ファイルが最後に更新された日付と置き換えられます) を使用する場合は、timefmt の時刻形式も指定する必要があります。
(省略可能) :LASTMOD: の時刻形式の文字列です。時刻形式の詳細は、付録 D「時刻の書式」を参照してください。timefmt が指定されていない場合、:LASTMOD: は時刻とは置き換えられません。
関連項目
add-footer, add-header
imagemap 関数は、イメージマップの要求に応答します。イメージマップは複数領域に分割されたイメージであり、それぞれには関連する URL があります。どの URL がどの領域に関連付けられているかについての情報は、マッピングファイルに格納されます。
Service type=magnus-internal/imagemap method=(GET|HEAD) fn=imagemap
index-common 関数は、要求されたディレクトリ内のファイルの拡張 (または共通) リストを生成します。このリストはアルファベット順にソートされています。ピリオド (.) で始まるファイルは表示されません。各項目は 1 つのHTML リンクとして表示されます。この関数は、各ファイルのサイズ、最新の更新日付、およびアイコンを含む、index-simple よりも詳細な情報を表示します。また、リストにはヘッダーや readme ファイルも含むことができます。
magnus.conf 内の Init クラス関数 cindex-init は、イメージの検索場所を含むインデックスリストの形式を指定します。
obj.conf に Service 段階内の index-common への呼び出しが含まれている場合、magnus.conf は、Init 段階中に cindex-init を呼び出すことによって拡張 (または共通) インデックス処理を初期化しなければなりません。
インデックス処理は、要求されたリソースがインデックスファイルまたはホームページを含まないディレクトリのとき、あるいは、関数 find-index または home-page によってインデックスファイルやホームページが指定されていないときに発生します。
表示されるアイコンは .gif ファイルで、ファイルの content-type によって異なります。
Service fn=index-common type=magnus-internal/directory method=(GET|HEAD) header=hdr readme=rdme.txt
関連項目
cindex-init, index-simple, find-index, home-page
index-simple 関数は、要求されたディレクトリ内のファイルのシンプルなインデックスを生成します。これは、ディレクトリを走査し、そのディレクトリ内のファイルとディレクトリをビュレット付きのリストで HTML ページとしてブラウザに表示します。このリストはアルファベット順にソートされています。ピリオド (.) で始まるファイルは表示されません。各項目は 1 つの HTML リンクとして表示されます。
インデックス処理は、要求されたリソースがインデックスファイルまたはホームページのいずれかを含まないディレクトリのとき、あるいは、関数 find-index または home-page によってインデックスファイルやホームページが指定されていないときに発生します。
関連項目
cindex-init, index-common
注 この関数は下位互換性のためにのみ提供されているもので、iPlanet Web Server 4.x では推奨されていませんでした。これは PathCheck クラス SAF ssl-check と置き換えられます。
key-toosmall 関数は、SSL 通信用の秘密鍵サイズが小さすぎることをクライアントに示すメッセージを返します。この関数は、Client タグと一緒に使用して、エクスポートできないブラウザに対して特定のディレクトリへのアクセスを制限するよう設計されています。
<Object ppath=/mydocs/secret/*>
Service fn=key-toosmall
</Object>
list-dir 関数は、メソッドが INDEX である要求に応えて、一連のテキスト行をクライアントに返します。返される行の形式は次のとおりです。
name フィールドは、ファイルまたはディレクトリの名前です。これは、インデックスされるディレクトリに対して相対です。これは URL エンコーディングされています。つまり、文字は %xx で表されます。xx は、文字の ASCII 番号の 16 進表現です。
type フィールドは、text/html のような MIME タイプです。ディレクトリはタイプ directory になります。サーバにタイプがないファイルのタイプは、unknown になります。
mtime フィールドは、ファイルの最後の更新日時の数値表現です。この数は、epoch (1970 年 1 月 1 日、00:00、協定世界時) 以降の、ファイルの最後の更新日時までの秒数です。
サーバでリモートファイル操作が使用可能なとき、obj.conf ファイルには、メソッドが INDEX である要求に対する list-dir を呼び出す Service クラス関数が含まれます。
make-dir 関数は、メソッドが MKDIR である要求をクライアントが送信するときに、ディレクトリを作成します。サーバがそのディレクトリに書き込みできない場合、この関数は失敗します。
サーバでリモートファイル操作が使用可能なとき、obj.conf ファイルには、要求メソッドが MKDIR のときに make-dir を起動する Service クラス関数が含まれます。
注 この関数は下位互換性のためにのみ提供されているもので、主に、古い ISINDEX タグをサポートするために使われます。可能であれば、代わりに HTML 形式を使用してください。
query-handler 関数は、要求されたパスを参照する代わりに、CGI プログラムを実行します。
remove-dir 関数は、メソッドが RMDIR である要求をクライアントが送信するときに、ディレクトリを削除します。ディレクトリは空 (中にファイルがない状態) でなければなりません。ディレクトリが空でない場合、またはサーバにディレクトリを削除する特権がない場合、この関数は失敗します。
サーバでリモートファイル操作が使用可能なとき、obj.conf ファイルには、要求メソッドが RMDIR のときに remove-dir を起動する Service クラス関数が含まれます。
remove-file 関数は、メソッドが DELETE である要求をクライアントが送信するときに、ファイルを削除します。ユーザが承認されており、サーバが必要なファイルシステム特権を持っている場合に、URL で示されているファイルを削除します。
サーバでリモートファイル操作が使用可能なとき、obj.conf ファイルには、要求メソッドが DELETE のときに remove-file を起動する Service クラス関数が含まれます。
rename-file 関数は、メソッドが MOVE の New-URL ヘッダーを持つ要求をクライアントが送信するときに、ファイルの名前を変更します。ユーザが承認されており、サーバが必要なファイルシステム特権を持っている場合は、URL で示されているファイルの名前を同じディレクトリ内で New-URL へ変更します。
サーバでリモートファイル操作が使用可能なとき、obj.conf ファイルには、要求メソッドが MOVE のときに rename-file を起動する Service クラス関数が含まれます。
send-cgi 関数は、CGI 環境変数を設定し、新しいプロセスでファイルを CGI プログラムとして実行し、その結果をクライアントに送信します。
CGI 環境変数とそれらに対応する NSAPI についての詳細は、「CGI から NSAPI への変換」の節を参照してください。
CGI の詳細は、iPlanet Web Server の『管理者ガイド』および iPlanet Web Server の『プログラマーズガイド 』を参照してください。
CGI バッファのフラッシュに使用するタイミングを変更する方法は、3 つあります。
フラッシュ間の間隔を flushTimer パラメータを使って調整する
flushTimer および UseOutputStreamSize の詳細は、「バッファ化されたストリーム」を参照してください。バッファサイズを UseOutputStreamSize パラメータを使って調整する
CGI スクリプトの中のバッファに強制的にスペースを加えて、iPlanet Web Server に強制的にそのバッファをフラッシュさせる
例
次の例では、send-cgi パラメータとしてserver.xml ファイルに定義されている変数を使用します。変数の定義の詳細は、第 8 章「仮想サーバの構成ファイル」を参照してください。
send-file 関数は、要求されたファイルの内容をクライアントに送信します。これは、content-type、content-length、および last-modified ヘッダーを提供します。
ほとんどの要求は、次の指令を使ってこの関数で処理されます (通常この指令は、デフォルトとして機能するように、デフォルトオブジェクト内の Service クラス指令のリストの最後に来ます)。
Service method="(GET|HEAD|POST)" type="*~magnus-internal/*" fn="send-file"
この指令は、要求のメソッドが GET、HEAD、または POST で、タイプが magnus-internal/ で始まらない場合に起動されます。*~ というパターンは「一致しない」ことを意味するので、注意してください。パターンで使用できる文字のリストは、付録 C「ワイルドカードパターン」を参照してください。
(省略可能) サーバが静的ファイル要求への応答をキャッシュしないようにします。たとえば、特定のディレクトリ内のファイルがキャッシュされないように指定することができます。これは、頻繁にファイルが変わるディレクトリの場合に便利です。
Service type="*~magnus-internal/*" method="(GET|HEAD)" fn="send-file"
次の例では、URL 接頭辞 /myurl で要求されたとき、サーバは静的ファイルを /export/mydir/ からキャッシュしません。
クライアントが HTTP バイト範囲を指定することによってドキュメントの一部を要求すると、send-range 関数はその部分を返します。
Windows NT の場合のみ : send-shellcgi 関数は、ファイルをシェル CGI プログラムとして実行し、その結果をクライアントに送信します。シェル CGI は、Windows NT のファイル関連付けセットを使って CGI アプリケーションを実行するための、サーバ構成です。シェル CGI プログラムの詳細は、iPlanet Web Server の『管理者ガイド』を参照してください。
Windows NT の場合のみ : send-wincgi 関数は、ファイルを Windows CGI プログラムとして実行し、その結果をクライアントに送信します。Windows CGI プログラムの詳細は、iPlanet Web Server の『管理者ガイド』を参照してください。
service-dump 関数は、収集されたパフォーマンスバケットデータに基づいて、パフォーマンスレポートを作成します (「バケットパラメータ」を参照)。
<Object name=default>
NameTrans fn="assign-name" from="/.perf" name="perf"
...
</Object>
<Object name=perf>
Service fn="service-dump"
</Object>
関連項目
stats-xml
shtml_send 関数は、組み込みコマンドを走査して、HTML ドキュメントを構文解析します。これらのコマンドは、サーバからの情報の提供、ほかのファイルの内容の組み込み、または CGI プログラムの実行を行ないます。shtml_send 関数は、Shtml プラグイン (UNIX では libShtml.so 、Windows NT では libShtml.dll) が読み込まれているときにのみ利用可能です。サーバが構文解析する HTML コマンドについては、iPlanet Web Server の『プログラマーズガイド』を参照してください。
(UNIX の場合のみ) 指定されていて yes (デフォルトは no) と等しい場合、init-cgi SAF に定義されている環境変数を、SHTML exec タグによって実行されるコマンドの環境に追加します。
Service type=magnus-internal/shtml_send method=(GET|HEAD) fn=shtml_send
stats-xml 関数は、パフォーマンスレポートを XML 形式で作成します。パフォーマンスバケットがすでに定義されていれば、それらがこのパフォーマンスレポートに取り込まれます。
ただし、magnus.conf 内の stats-init 関数を使ってこの関数を初期化してから、NameTrans 関数を使って要求を stats-xml 関数に送る必要があります。下記の例を参照してください。
http://server_id:port/stats-xml/iwsstats.xml
http://server_id:port/stats-xml/iwsstats.dtd
iwsstats.xml ファイルの形式の詳細は、『Performance Tuning, Sizing, and Scaling Guide for iPlanet Web Server』を参照してください。
Init fn="stats-init" update-interval="5" virtual-servers="2000" profiling="yes"
<Object name="default">
...
NameTrans fn="assign-name" from="/stats-xml/*" name="stats-xml"
...
</Object>
...
<Object name="stats-xml">
Service fn="stats-xml"
</Object>
関連項目
service-dump, stats-init
upload-file 関数は、メソッドが PUT の要求をクライアントが送信したときに、ユーザが承認されておりサーバに必要なファイルシステム特権がある場合、新しいファイルをアップロードして保存します。
サーバでリモートファイル操作が使用可能なとき、obj.conf ファイルには、要求メソッドが PUT のときに upload-file を起動する Service クラス関数が含まれます。
AddLog 段階
サーバが要求に応答した後、AddLog 指令は、トランザクションに関する情報の記録のために実行されます。この節では、次の AddLog クラス関数について詳しく説明します。
common-log は、要求に関する情報を共通ログ形式で記録します。
flex-log は、要求に関する情報を、柔軟で構成可能な形式で記録します。
record-useragent は、クライアントの IP アドレスとユーザエージェントのヘッダーを記録します。
この関数は、要求に固有のデータを共通ログ形式 (ほとんどの HTTP サーバで使用される) で記録します。ログアナライザが iPlanet Web Server の /extras/log_anly ディレクトリにあります。
共通ログは、init-clf 関数によってあらかじめ初期化されていなければなりません。ログのローテーションについての詳細は、flex-rotate-initを参照してください。
(省略可能) ログファイルの名前を指定します。この名前は、magnus.conf 内の init-clf 関数へのパラメータとして指定されている必要があります。名前が指定されていない場合、エントリはグローバルログファイルに記録されます。
(省略可能) サーバに、DNS 名を調べてログをとるのではなく、リモートクライアントの IP アドレスのログをとるよう指示します。magnus.conf ファイルで DNS がオフの場合、これによってパフォーマンスが向上します。iponly の値は、存在しさえすれば特別な意味はなく、 iponly=1 を使用することもできます。
# すべてのアクセスのログをグローバルログファイルに記録する
AddLog fn=common-log
# サブネット (198.93.5.*) の外部からのアクセスログを
# nonlocallog に記録する
<Client ip="*~198.93.5.*">
AddLog fn=common-log name=nonlocallog
</Client>
関連項目
flex-init, init-clf, record-useragent, flex-log, flex-rotate-init
この関数は、要求に固有のデータを、柔軟なログ形式で記録します。共通ログ形式で要求を記録することもできます。ログアナライザが、iPlanet Web Server の /extras/flexanlg ディレクトリにあります。
このログ形式は、flex-init 関数呼び出しによって指定されます。ログのローテーションについての詳細は、flex-rotate-initを参照してください。
(省略可能) ログファイルの名前を指定します。この名前は、magnus.conf 内の flex-init 関数へのパラメータとして指定されている必要があります。名前が指定されていない場合、エントリはグローバルログファイルに記録されます。
(省略可能) サーバに、DNS 名を調べてログをとるのではなく、リモートクライアントの IP アドレスのログをとるよう指示します。magnus.conf ファイルで DNS がオフの場合、これによってパフォーマンスが向上します。iponly の値は存在しさえすれば特別な意味はなく、 iponly=1 を使用することもできます。
# すべてのアクセスログをグローバルファイルに記録する
AddLog fn=flex-log
# サブネット (198.93.5.*) の外部からのアクセスログを
# nonlocallog に記録する
<Client ip="*~198.93.5.*">
AddLog fn=flex-log name=nonlocallog
</Client>
関連項目
flex-init, init-clf, common-log, record-useragent, flex-rotate-init
record-useragent 関数は、クライアントの IP アドレスと、その後に User-Agent HTTP ヘッダーを記録します。これは、このトランザクション用に使用された Netscape Navigator (またはほかのクライアント) のバージョンを示します。
ログのローテーションの詳細は、flex-rotate-initを参照してください。
(省略可能) ログファイルの名前を指定します。この名前は、magnus.conf 内の init-clf 関数へのパラメータとして指定されている必要があります。名前が指定されていない場合、エントリはグローバルログファイルに記録されます。
# クライアント IP アドレスと User-Agent を browserlog に記録する
AddLog fn=record-useragent name=browserlog
関連項目
flex-init, init-clf, common-log, flex-log, flex-rotate-init
Error 段階
サーバアプリケーション関数がエラーとなる場合、HTTP 応答の状態コードを設定し、値 REQ_ABORTED を返します。このような状況が発生すると、サーバは要求の処理を停止します。その代わりに、サーバは、HTTP 応答の状態コードまたはそれに関連する原因を示す句と一致する Error 指令を検索し、その指令の関数を実行します。一致する Error 指令を見つけられない場合、サーバはクライアントに応答状態コードを返します。この節では、次の Error クラス関数について詳しく説明します。
send-error は、HTML ファイルを特定の HTTP 応答状態の代わりにクライアントに送信します。
qos-error は、エラーを発生させたサービス品質の制限と QOS 統計の値を示す、エラーページを返します。
send-error 関数は、HTML ファイルを特定の HTTP 応答状態の代わりにクライアントに送信します。これによりサーバは、問題を記述するわかりやすいメッセージを提示することができます。HTML ページには、イメージや、サーバのホームページ、ほかのページへのリンクが含まれていることもあります。
Error fn=send-error code=401 path=/netscape/server4/docs/errors/401.html
qos-error 関数は、エラーを発生させたサービス品質の制限と QOS 統計の値を示す、エラーページを返します。
この SAF 用のコードは、第 6 章「カスタム SAF の例」の例の 1 つにあります。
詳細は、iPlanet Web Server の『管理者ガイド』のパフォーマンスについての章を参照してください。
(省略可能) 401 や 407 などの、HTTP 応答の状態コードを表す 3 桁の数字です。推奨される値は 503 です。
関連項目
qos-handler
前へ 目次 索引 DocHome 次へ
Copyright © 2000 Sun Microsystems, Inc. Some preexisting portions Copyright © 2000 Netscape Communications Corp. All rights reserved.
Last Updated September 24, 2001