6.2.3 B,C,Dで始まるディレクティブ
- 〈この項の構成〉
-
(1) BindAddress {IPアドレス|*}
〜《*》
(a) 内容
Webサーバをインストールしたサーバ機に割り当てられたIPアドレスのうち,どのIPアドレスからWebサーバに接続できるようにするかを指定します。IPアドレスにIPv6アドレスは指定できません。どのIPv4アドレスからも接続できるようにする場合には,*を指定します。Listenディレクティブを指定した場合は,BindAddressディレクティブの指定は無視されます。
(b) 記述できる場所
httpsd.conf
(2) BrowserMatch "ブラウザ名" 環境変数〔=値〕 〔環境変数〔=値〕 …〕
(a) 内容
Webブラウザごとに環境変数を設定する場合に指定します。設定する値のデフォルト値は1です。環境変数の前に!が付いたときは,その環境変数の設定を解除します。ブラウザ名は正規表現で指定でき,大文字,小文字を区別します。
(b) 記述できる場所
httpsd.conf,<VirtualHost>,<Directory>,.htaccess
(c) 指定例
BrowserMatch "Mozilla/2" nokeepalive BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0 BrowserMatch "RealPlayer 4\.0" force-response-1.0 BrowserMatch "Java/1\.0" force-response-1.0 BrowserMatch "JDK/1\.0" force-response-1.0 BrowserMatch "Microsoft Data Access Internet Publishing Provider" redirect-carefully BrowserMatch "^WebDrive" redirect-carefully BrowserMatch "^WebDAVFS/1.[012]" redirect-carefully BrowserMatch "^gnome-vfs" redirect-carefully
指定例で示した環境変数の意味を次に示します。
環境変数 |
内容 |
---|---|
nokeepalive |
KeepAlive接続を無効にします。Viaヘッダがリクエストに付加されている場合またはHTTP/2通信の場合は,KeepAlive接続を無効にできません。 |
downgrade-1.0 |
HTTP/1.1以上のリクエストを,HTTP/1.0のリクエストとして扱います。 |
force-response-1.0 |
HTTP/1.0のリクエストに対して,常にHTTP/1.0のレスポンスを応答します。 |
redirect-carefully |
ディレクトリへのアクセスでURLの最後に'/'を付加していなく,かつそれがGETメソッド以外を使用していたとき,クライアントにリダイレクトを要求しません。 |
(3) BrowserMatchNoCase "ブラウザ名" 環境変数〔=値〕 〔環境変数〔=値〕 …〕
(a) 内容
Webブラウザごとに環境変数を設定する場合に指定します。設定する値のデフォルト値は1です。環境変数の前に!が付いたときは,その環境変数の設定を解除します。ブラウザ名は正規表現で指定でき,大文字,小文字を区別しません。
(b) 記述できる場所
httpsd.conf,<VirtualHost>,<Directory>,.htaccess
(4) CacheNegotiatedDocs 〔{On|Off}〕
(a) 内容
コンテントネゴシエーションをするリクエストで,クライアント側のキャッシュを有効にするかどうかを指定します。ディレクティブの引数を省略した場合は,Onを指定した場合と同様の動作をします。ディレクティブを設定しない場合は,Offを指定した場合と同様の動作をします。このディレクティブの指定は,HTTP/1.1のリクエストに対しては無効です。
On:キャッシュされるようになります。
Off:Expiresヘッダが付けられてキャッシュされなくなります。
(b) 記述できる場所
httpsd.conf
(5) CoreDumpDirectory ディレクトリ名
〜《ServerRootディレクティブ指定値》
(a) 内容
コアをダンプするディレクトリを指定します。絶対パスまたはServerRootディレクティブの指定値からの相対パスが指定できます。なお,指定したディレクトリには,User,Groupディレクティブで指定したユーザ,グループからの書き込み権限を付与する必要があります。Linux版では,ディレクティブをコンフィグファイルに指定した場合だけ有効となります。
(b) 記述できる場所
httpsd.conf
(6) CustomLog {ファイル名|パイプ} {"フォーマット"|ラベル名} 〔env=〔!〕環境変数〕
(a) 内容
任意のフォーマットのログをファイルに出力させる場合に指定します。フォーマットはLogFormatディレクティブで指定するフォーマットと同様です。
このディレクティブを複数指定する場合,同じファイル名は複数指定できません。
ファイル名:ログの出力先ファイル名を指定します。ファイル名には,絶対パスまたはServerRootディレクティブの指定値からの相対パスが指定できます。
パイプ:標準入力からログ情報を受け取るプログラムを"|プログラム名"の形式で指定します。Webサーバはログ情報に含める改行コードをCRLFにして渡します。
(Windows版での注意事項)
パイプで指定されたプログラムは,制御プロセスとWebサーバプロセス用にログ情報を受け取るそれぞれ別のプロセスとして生成されます。これをパイププロセスと呼びます。サービスとしてWebサーバを起動する場合には次の点に注意してください。
-
制御プロセスのログ情報取得不可
サービスとしてWebサーバを起動した場合には,制御プロセスからのログ情報を受け取るための標準入力はNULデバイスに関連づけられているため,制御プロセス用のパイププロセスは,制御プロセスからのログ情報を受け取ることはできません。制御プロセスからのログ情報とは,Webサーバ起動,停止時のエラーログ情報であり,これらの情報は採取できないことになります。Webサーバ起動後のエラーログ,アクセスログの情報はWebサーバプロセスからのログ情報となりますので,Webサーバプロセス用のパイププロセスで受け取れます。
-
プログラム作成時の留意点
制御プロセス用のパイププロセスは,NULデバイスからのデータ読み込み処理で,read()のバッファが小さいと入力データ待ち状態が解除されないことがあります。read()のバッファを十分大きい値を取るなどしてパイププロセスが入力データ待ち状態にならないようにしてください。
-
プログラムに引数を指定する場合の注意
プログラム,引数に空白を含む場合には,\"で囲んでください。
プログラム,引数を\"で囲む場合には,全体も\"で囲んでください。
(例)
CustomLog "|\"\"<Application Serverのインストールディレクトリ>/httpsd/sbin/rotatelogs.exe\" \"<Application Serverのインストールディレクトリ>/httpsd/logs/access\" 86400 -diff 540\"" common
-
プログラムの引数指定に誤りがある場合の注意
プログラムの引数指定に誤りがある場合,プログラムの起動に失敗しますが,Webサーバは起動します。この場合はログが出力されません。プログラムを指定した場合は,ログファイルが作成され,意図した分割が実施されることを確認してください。
"フォーマット":ログフォーマットを指定します。指定できるフォーマット名を表6-3,表6-4に示します。
ラベル名:LogFormatディレクティブで定義したラベル名を指定します。
env=環境変数:指定した環境変数が設定されている場合に,ログを採取します。
env=!環境変数:指定した環境変数が設定されていない場合に,ログを採取します。
フォーマット |
意味 |
---|---|
%A※1 |
WebサーバのIPアドレス。 |
%a※1 |
クライアントのIPアドレス。 |
%B |
送信バイト数(HTTPヘッダおよびchunkedエンコーディングによって追加されたデータを除く)。 |
%b |
送信バイト数(HTTPヘッダおよびchunkedエンコーディングによって追加されたデータを除く)。ただし,0の場合は-(ハイフン)。 |
%{cookie_name}C |
Cookieヘッダ値に含まれるクッキー名cookie_nameの値。 |
%D |
リクエスト処理時間をマイクロ秒で表示。 |
%{env_name}e |
env_nameに指定した環境変数の値。 |
%f |
クライアントが要求したディレクトリまたはファイル名。 |
%H |
リクエストプロトコル(HTTP/1.0など)。 |
%h※2 |
クライアントのホスト名。 |
%I |
リクエストとヘッダを含む,全受信バイト数。 |
%{header_name}i |
header_nameに指定したリクエストヘッダの値。 |
%l |
クライアントの識別情報(IdentityCheckディレクティブがOn,かつクライアント上でidentdが動作している場合)。 |
%m |
リクエストメソッド(GET,POSTなど)。 |
%{note_name}n |
note_nameに指定したWebサーバ内モジュールの注記の値。 hws_ap_root:ルートアプリケーション情報※3 hws_ap_client:クライアントアプリケーション情報※3 HWS_H2_WORKER_THREAD_ID:HTTP/2リクエストを処理しているワーカスレッドのスレッドID |
%O |
ヘッダを含む,全送信バイト数。 |
%{header_name}o |
header_nameに指定したレスポンスヘッダの値。 |
%P |
HTTP通信のリクエストを処理するプロセスID。 |
%{hws_thread_id}P |
HTTP通信のリクエストを処理するスレッドID。Windows版で有効。 |
%{tid}P |
HTTP通信のリクエストを処理するスレッドID。UNIX版で有効。 |
%p |
ポート番号。 |
%q |
問い合わせ文字列。 |
%r |
HTTP通信のリクエストの先頭行。 |
%s |
ステータス(内部リダイレクトされた場合はオリジナルを示す)。 |
%T |
リクエスト処理に掛かった時間(秒)。HWSLogTimeVerboseディレクティブでOnを指定すると,ミリ秒単位まで表示。 |
%t |
リクエスト処理を開始した時刻。HWSLogTimeVerboseディレクティブでOnを指定すると,ミリ秒単位まで表示。 |
%{format}t |
リクエスト処理を開始した時刻。strftime()で定義されているフォーマットをformatに指定する。 |
%U |
URL。 |
%u |
クライアントのユーザ名(ユーザ認証をした場合)。 |
%V※2 |
UseCanonicalNameディレクティブの指定に従い,ServerNameディレクティブ指定値,サーバ名またはIPアドレス。 |
%v |
サーバ名。 |
%X |
レスポンス完了時の接続ステータス。 +:レスポンス送信後も接続を維持する。 −:レスポンス送信後に接続を切断する。 X:レスポンス完了前に接続を切断する。 |
%>s |
最終ステータス。 |
フォーマット |
意味 |
---|---|
%{version}c |
SSLのバージョン |
%{cipher}c |
現在の通信で使用している暗号種別 |
%{clientcert}c |
SSLクライアント証明書のsubjectのDistinguished Name |
フォーマットの%の後ろにステータスコードを記述できます。
- (例)エラーステータスコード400および501の場合,User-Agentリクエストヘッダ値のログを採取する。
%400,501{User-Agent}i
- (例)エラーステータスコード200,304および302の3種類以外の場合,Refererリクエストヘッダ値のログを採取する。
%!200,304,302{Referer}i
また,env=は,指定した環境変数の設定によって,ログの採取を分ける場合に指定します。
- (例)gifへのアクセスはgif.logに,gif以外へのアクセスはnongif.logにログを採取する。
SetEnvIf Request_URI \.gif$ gif-image CustomLog logs/gif.log common env=gif-image CustomLog logs/nongif.log common env=!gif-image
(b) 注意事項
11-20以降では,CustomLogディレクティブで指定するログのフォーマットで%{header_name}iを指定した場合,リバースプロキシで付加するリクエストヘッダはログに出力されません。詳細は「付録C 旧バージョンからの移行に関する注意点」を参照してください。
(c) 記述できる場所
httpsd.conf,<VirtualHost>
(d) 指定例
CustomLog logs/access.log common CustomLog logs/ssl.log "%t %{version}c %{cipher}c %{clientcert}c"
(7) DefaultIcon URL
(a) 内容
ディレクトリインデクスで表示するアイコンを指定します。AddIcon,AddIconByTypeおよびAddIconByEncodingディレクティブのどれにも該当しない場合に表示するアイコンのURLを指定します。なお,URLの「http://IPアドレス」を省略しないでIPv6アドレスを指定する場合は,IPv6アドレスを[ ]で囲んでください。
(b) 記述できる場所
httpsd.conf,<VirtualHost>,<Directory>,.htaccess
(c) 上書き許可
Indexesレベル
(d) 指定例
DefaultIcon /icons/unknown.gif
(8) DefaultLanguage 言語コード
(a) 内容
ドキュメントで使用するデフォルトの言語を指定します。指定した言語コードはContent-Languageレスポンスヘッダに設定されます。AddLanguageディレクティブの設定に対するデフォルト値となります。デフォルト値が設定されていない場合,Content-Languageレスポンスヘッダは送信しません。
(b) 記述できる場所
httpsd.conf,<VirtualHost>,<directory>,.htaccess
(c) 上書き許可
FileInfoレベル
(9) Deny from {ホスト|all|env=環境変数} 〔{ホスト|env=環境変数} …〕
(a) 内容
Webサーバへアクセスできるクライアントを制限する場合に指定します。ホストにはアクセスを禁止するホストのドメイン名,IPアドレス,サブネット,ネットマスクを指定できます。すべてのホストからアクセスを禁止する場合は,allを指定します。
また,ホストには,IPv6アドレスに関するドメイン名,アドレスおよびプリフィックス長も指定できます。IPv6アドレスを指定する場合は,IPv6アドレスを[ ]で囲まないでください。プリフィックス長は,「IPv6アドレス/プリフィックス長」の形式で指定します。プリフィックス長は10進数で指定してください。
env=環境変数を指定すると,サーバへのアクセスを環境変数で制御できます。BrowserMatch,BrowserMatchNoCase,SetEnvIf,SetEnvIfNoCaseディレクティブと併せて使用すれば,HTTPリクエストヘッダフィールドに基づいてアクセスを制限できます。
Allowディレクティブ(アクセス許可)とDenyディレクティブ(アクセス制限)は,Orderディレクティブで評価の順序を設定できます。
アクセスを拒否した場合,ステータスコード403を返します。
ホスト |
意味 |
---|---|
ドメイン名 |
ドメイン名で示すホストからのアクセスを禁止する。 |
IPアドレス |
IPアドレスで示すホストからのアクセスを禁止する。 |
サブネット |
サブネット(IPアドレスの最初の1から3バイト)で指定したホストからのアクセスを禁止する。 |
ネットマスク |
ネットマスク表記(例:10.1.0.0/255.255.0.0)で指定したホストからのアクセスを禁止する。 10.1.0.0/16形式で表記した場合10.1.0.0/255.255.0.0と同じ意味である。 |
(b) 記述できる場所
<Directory>,.htaccess
(c) 上書き許可
Limitレベル
(10) DirectoryIndex ファイル名 〔ファイル名 …〕
〜《index.html》
(a) 内容
Webブラウザからのリクエストが特定のコンテンツを指定していない場合に,デフォルトとしてクライアントに送信するコンテンツのファイル名を指定します。ファイル名を複数指定した場合は,先に指定したファイル名を優先して送信します。
ここで指定したファイルがリクエストされたディレクトリにない場合,Optionsディレクティブの指定によってWebブラウザの表示が変わります。
-
Indexesが有効の場合
WebブラウザにWebサーバで作成したディレクトリのインデクスを表示します。
-
Indexesが無効の場合
ステータスコード403 Forbiddenを応答します。
(b) 記述できる場所
httpsd.conf,<VirtualHost>,<Directory>,.htaccess
(c) 上書き許可
Indexesレベル
(d) 指定例
DirectoryIndex index.html
ファイル名の指定がないリクエストの場合,ディレクトリにindex.htmlがあれば表示させます。
(11) DocumentRoot ディレクトリ名
〜《/opt/hitachi/httpsd/htdocs》 (UNIX版)
〜《ServerRootディレクティブのデフォルト値/htdocs》 (Windows版)
(a) 内容
コンテンツを格納するドキュメントルートディレクトリを絶対パスで指定します。ディレクトリ名の終端には/(スラッシュ)を記述しないでください。
ディレクトリ名は,絶対パスで指定してください。
(b) 記述できる場所
httpsd.conf,<VirtualHost>
(c) 指定例
DocumentRoot "<Application Serverのインストールディレクトリ>/httpsd/htdocs"