Cosminexus V11 アプリケーションサーバ Cosminexus HTTP Server

手引書

3021-3-J18-60

前書き

対象製品

マニュアル「アプリケーションサーバ & BPM/ESB基盤 概説」の前書きの対象製品の説明を参照してください。

輸出時の注意

本製品を輸出される場合には、外国為替及び外国貿易法の規制並びに米国輸出管理規則など外国の輸出関連法規をご確認の上、必要な手続きをお取りください。

なお、不明な場合は、弊社担当営業にお問い合わせください。

商標類

HITACHI，Cosminexusは，株式会社 日立製作所の商標または登録商標です。

Linuxは，Linus Torvalds氏の米国およびその他の国における登録商標です。

Microsoft，Windows，Windows Server は，マイクロソフト 企業グループの商標です。

Oracle(R)，Java ，MySQL及びNetSuite は，Oracle，その子会社及び関連会社の米国及びその他の国における登録商標です。

UNIXは，The Open Groupの登録商標です。

その他記載の会社名，製品名などは，それぞれの会社の商標もしくは登録商標です。

This product includes software developed by the Apache Software Foundation (http://www.apache.org/).

Portions of this software were developed at the National Center for Supercomputing Applications (NCSA) at the University of Illinois at Urbana-Champaign.

This product includes software developed by the University of California, Berkeley and its contributors.

This software contains code derived from the RSA Data Security Inc. MD5 Message-Digest Algorithm, including various modifications by Spyglass Inc., Carnegie Mellon University, and Bell Communications Research, Inc (Bellcore).

Regular expression support is provided by the PCRE library package, which is open source software, written by Philip Hazel, and copyright by the University of Cambridge, England. The original software is available from

　ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/

This product includes software developed by Ralf S. Engelschall <rse@engelschall.com> for use in the mod_ssl project (http://www.modssl.org/).

This product includes the OpenSSL library.

The OpenSSL library is licensed under Apache License, Version 2.0.

https://www.apache.org/licenses/LICENSE-2.0

This product includes the nghttp2 library licensed under MIT License.

マイクロソフト製品のスクリーンショットの使用について

マイクロソフトの許可を得て使用しています。

発行

2024年 9月 3021-3-J18-60

著作権

All Rights Reserved. Copyright (C) 2020, 2024, Hitachi, Ltd.

変更内容

変更内容(3021-3-J18-60) uCosminexus Application Server 11-50，uCosminexus Client 11-50，uCosminexus Developer 11-50，uCosminexus Service Architect 11-50，uCosminexus Service Platform 11-50

追加・変更内容

変更個所

H2SerializeHeadersディレクティブの説明を変更した。

6.2.4(16)

単なる誤字・脱字などはお断りなく訂正しました。

はじめに

このマニュアルをお読みになる際の前提情報については，マニュアル「アプリケーションサーバ & BPM/ESB基盤 概説」のはじめにの説明を参照してください。

1　HTTP Serverとは

この章では，HTTP Serverの概要について説明します。

1.1　HTTP Serverの概要

トランザクション処理を含む業務システムや，基幹系システムなどの，ミッションクリティカルな環境で利用できる基幹業務システム向けWebサーバであるHTTP Serverは，きめ細かな保守サービス，テクニカルサービスによって，信頼性の高いシステムをサポートしています。

1.2　HTTP Serverの特長

HTTP Serverは，全世界で高いシェアを持つApache HTTP Serverをベースに開発しています。HTTP Serverでのサポート範囲は，このマニュアルの記述範囲です。

HTTP Serverで使用できる主な機能には次のものがあります。

ユーザ認証とアクセス保護

バーチャルホスト

リバースプロキシ

流量制限機能

有効期限設定機能

ヘッダカスタマイズ機能

CGIプログラムの実行

ディレクトリインデクス表示

イメージマップ

また，この製品は，SSL/TLSライブラリとして高いシェアをもつOpenSSLを導入して，SSL（Secure Sockets Layer）を実装しています。これによって，データの改ざん，なりすまし（クライアントから見たサーバのなりすましおよびサーバから見たクライアントのなりすまし）および盗聴を防止し，情報の安全性を確保できます。

適用例

HTTP Serverは，Application Serverを構成する製品の一つです。

適用例を次に示します。

図1‒1　適用例

2　運用の準備と起動，停止（UNIX版）

この章では，HTTP Serverを運用する前に，知っておいていただきたいことおよび起動と停止について説明します。

2.1　HTTP Serverを運用するためのシステム構成

HTTP Serverを運用するために必要なシステム構成（ハードウェア構成）について説明します。

サーバ

HTTP Serverの適用機種，使用するメモリ所要量，およびディスク占有量については，リリースノートを参照してください。

クライアント

Webブラウザが動作できる端末

ネットワーク関連

イーサネットなどのネットワーク（必須）

ドメインネームシステムサーバ（任意）

ロードバランサ（任意）

SSLアクセラレータ（任意）

ファイアウォール（任意）

2.2　インストールとアンインストール

HTTP Serverは，Application Serverのインストールによって使用できます。

Application Serverのインストールとアンインストールの方法は次のとおりです。詳細手順については，マニュアル「アプリケーションサーバ システム構築・運用ガイド」を参照してください。

インストール

インストーラを使用します。HTTP Serverは次のディレクトリにインストールされます。

/opt/hitachi/httpsd

アンインストール

PPインストーラを使用します。

2.3　運用環境を定義する

HTTP Serverの動作を定義するファイルについて説明します。

2.3.1　環境の定義方法

(1)　ディレクトリ構成

HTTP Serverをインストールしたときの，ディレクトリ構成を次に示します。この構成は変更しないでください。

図2‒1　ディレクトリ構成

(2)　コンフィグファイル

HTTP Serverの動作環境を定義するファイルをコンフィグファイルといいます。なお，コンフィグファイルのコメント行以外に，マルチバイト文字およびUnicodeの補助文字は指定できません。また，コンフィグファイルの1行に指定可能な文字数の上限は，8191文字です。

各ファイルの用途を次に示します。

表2‒1　コンフィグファイルの用途

ファイル名

用途

標準提供

httpsd.conf

HTTP Serverの動作環境を各種ディレクティブで定義します。システム管理者が管理します。

○

mime.types

コンテンツのファイル拡張子とコンテントタイプ（MIMEタイプ）の関連づけを定義します。システム管理者が管理します。

指定形式は，TypesConfigディレクティブの説明を参照してください。

○

.htaccess

アクセス制御を定義するアクセスコントロールファイル。必要に応じてエンドユーザがアクセス制御するディレクトリ下に作成します（デフォルトファイル名は.htaccess）。

×

Includeディレクティブで指定したファイル

HTTP Serverの動作環境を各種ディレクティブで定義します。システム管理者が管理します。

×

（凡例）

○：標準提供する。

×：標準提供しない。

コンフィグファイルの関連を次に示します。

図2‒2　コンフィグファイルの関連

2.4　起動と停止

HTTP Serverの起動および停止方法について説明します。

2.4.1　HTTP Serverを起動，停止する（Management Serverの使用）

Management Serverを使用してHTTP Serverを起動，停止できます。詳細は，マニュアル「アプリケーションサーバ 運用管理ポータル操作ガイド」の「4.1.2　システムの起動方法」または「4.1.4　システムの停止方法」を参照してください。

2.4.2　HTTP Serverを起動，停止する（httpsdctlコマンド）

HTTP Serverの起動および停止をするhttpsdctlコマンドについて説明します。

(1)　形式

/opt/hitachi/httpsd/sbin/httpsdctl ｛start｜stop｜restart｜graceful｜gracefulstop｜configtest｜help｝

(2)　オプション

start

HTTP Serverを起動します。PRFSPOOL環境変数を設定したあとでhttpsdctlコマンドを実行して起動してください。

stop

HTTP Serverを停止します。

restart

HTTP Serverを再起動します。実行中のサーバプロセスは，直ちに停止します。すべてのサーバプロセス終了後に再起動します。prefork MPMを使用している場合，再起動時にMaxClientsディレクティブ指定値の変更は反映されないで，前回の値が引き継がれます。Listenディレクティブ指定値およびSSL通信で使用する秘密鍵の設定（SSLCertificateKeyFileディレクティブ）を変更した場合は，いったんHTTP Serverを停止してから，起動し直してください。

graceful

HTTP Serverを再起動します。実行中のサーバプロセスは，実行終了後に停止します。サーバプロセスは，随時，新しいコンフィグファイルに基づいて起動します。prefork MPMを使用している場合，再起動時にMaxClientsディレクティブ指定値の変更は反映されないで，前回の値が引き継がれます。Listenディレクティブ指定値およびSSL通信で使用する秘密鍵の設定（SSLCertificateKeyFileディレクティブ）を変更した場合は，いったんHTTP Serverを停止してから，起動し直してください。

gracefulstop

HTTP Serverを計画停止します。実行中のサーバプロセスは，実行終了後に停止します。KeepAlive接続中またはHTTP/2通信中の場合，KeepAlive接続の解除またはHTTP/2通信の終了までサーバプロセスは実行中の状態となります。実行が終了しない場合は，HWSGracefulStopTimeoutディレクティブに指定した待ち時間が経過すると終了します。

configtest

コンフィグファイルの文法チェックをします。文法エラーがあると，画面にエラーメッセージを表示します。このオプションを指定した場合は，HTTP Serverは起動しません。

help

httpsdctlのヘルプを表示させます。

(3)　起動確認方法

HTTP Serverの起動を確認するには，制御プロセスを確認してください。詳細は，「4.1.4　稼働管理について」の「(3)　制御プロセスの監視」を参照してください。

また，HTTP Serverを起動したあと，エラーログに以下のメッセージが出力されていることを確認してください。

　Cosminexus HTTP Server バージョン (Unix) configured -- resuming normal operations

(4)　使用例

HTTP Serverを起動します。

export PRFSPOOL=/opt/Cosminexus/PRF/spool
/opt/hitachi/httpsd/sbin/httpsdctl start

(5)　注意事項

httpsdctl stopおよびgracefulstopによるWebサーバ停止操作実行時に，HTTP Serverのコンフィグファイルの定義が不正な場合，httpsdctlの実行はエラーとなりWebサーバは停止しません。

httpsdctl restartおよびgracefulによるWebサーバ再起動実行時に，HTTP Serverのコンフィグファイルの定義が不正な場合，httpsdctlの実行はエラーとなりWebサーバは停止しないで再起動しません。

httpsdctlコマンドによるHTTP Serverの起動，再起動および停止操作を実行した場合，起動完了および停止完了を示すメッセージは出力されません。

KeepAlive接続中またはHTTP/2通信中の状態でhttpsdctl gracefulstopによるWebサーバ停止操作を実行すると，KeepAlive接続の解除またはHTTP/2通信の終了までサーバ停止が待たされます。

コンフィグファイルは，/opt/hitachi/httpsd/conf/httpsd.confを使用します。

httpsdctl stopおよびgracefulstopによるWebサーバ停止操作実行時に，PidFileディレクティブに指定したファイルを削除した場合，または同ファイルの設定内容を変更した場合，httpsdctlの実行はエラーとなりWebサーバは停止しません。

httpsdctlコマンド実行時にHTTP Serverが起動しない場合があります。詳細は，「4.1.1(2)(a)　留意点」の「PidFileディレクティブ」に関する記載，または，「4.1.2(2)(a)　留意点」の「PidFileディレクティブ」に関する記載をご参照ください。

2.4.3　HTTP Serverを起動する（httpsdコマンド）

サーバのルートディレクトリやhttpsd.confファイルを指定して起動する場合に，この方法を使用して起動します。

PRFSPOOL環境変数を設定したあとでhttpsdコマンドを実行してください。

(1)　形式

/opt/hitachi/httpsd/sbin/httpsd〔〔-d ディレクトリ〕〔-f ファイル名〕〔-R ディレクトリ〕｜-v｜-t〕

(2)　オプション

-d ディレクトリ

ServerRootディレクティブがコンフィグファイルに指定されていない場合の，デフォルト値を指定できます。

-f ファイル名

コンフィグファイルのパスを指定できます。絶対パスまたはServerRootディレクティブの指定値からの相対パスで指定します。未設定時は，/opt/hitachi/httpsd/conf/httpsd.confを使用します。

-R ディレクトリ

DSO実行ライブラリが格納されているディレクトリを絶対パスで指定します。

-v

バージョン情報を表示させます。このオプションを指定した場合は，HTTP Serverは起動しません。

-t

コンフィグファイルの文法チェックをします。文法エラーがあると，画面にエラーメッセージを表示します。このオプションを指定した場合は，HTTP Serverは起動しません。

(3)　再起動方法

killコマンドでHTTP Serverを再起動できます。

kill ｛-HUP｜-USR1｝ `cat PidFileディレクティブ指定値`

-HUP

httpsdctlコマンドのrestartに相当する再起動をします。

-USR1

httpsdctlコマンドのgracefulに相当する再起動をします。

PidFileディレクティブ指定値

PidFileディレクティブで指定した値(ファイル名)を指定します。

(4)　終了方法

httpsdコマンドでHTTP Serverを起動した場合，次に示すコマンドを実行してプロセスを終了し，HTTP Serverを停止してください。

kill ｛-TERM｜-USR2｝ `cat PidFileディレクティブ指定値`

-TERM

httpsdctlコマンドのstopに相当する停止をします。

-USR2

httpsdctlコマンドのgracefulstopに相当する停止をします。

(5)　起動確認方法

HTTP Serverの起動を確認するには，制御プロセスを確認してください。詳細は，「4.1.4　稼働管理について」の「(3)　制御プロセスの監視」を参照してください。

また，HTTP Serverを起動したあと，エラーログに以下のメッセージが出力されていることを確認してください。

　Cosminexus HTTP Server バージョン (Unix) configured -- resuming normal operations

(6)　注意事項

httpsdコマンド実行時にHTTP Serverが起動しない場合があります。詳細は，「4.1.1(2)(a)　留意点」の「PidFileディレクティブ」に関する記載，または，「4.1.2(2)(a)　留意点」の「PidFileディレクティブ」に関する記載をご参照ください。

2.4.4　一般ユーザアカウントによる運用

HTTP Serverは，通常の運用方法として，スーパーユーザによる運用を想定しています。

インストールした状態では，スーパーユーザによる運用ができるように各種設定が施されています。

このことから，スーパーユーザ以外のユーザ（以下，一般ユーザと呼びます）で運用する場合，HTTP Serverの設定ファイルや関連するディレクトリ・ファイルの各種設定内容の変更が必要になります。また，HTTP Serverの一部の機能については，一般ユーザによる運用は制限事項になるものがあります。

ここでは，スーパーユーザと一般ユーザの違い，一般ユーザによるHTTP Serverを運用するための環境構築方法，制限事項について説明します。

(1)　各プロセスの権限

スーパーユーザまたは一般ユーザで運用した場合，HTTP Serverの各プロセスの権限を次に示します。

表2‒2　各プロセスの権限

項番

プロセス

スーパーユーザによる運用

一般ユーザによる運用

1

制御プロセス

スーパーユーザ

一般ユーザ

2

rotatelogs，rotatelogs2プロセス

3

サーバプロセス

User，Groupディレクティブで指定したユーザ，グループ

4

CGIプロセス

(2)　UNIXにおけるスーパーユーザと一般ユーザの違い

UNIXにおいて，スーパーユーザは一般ユーザと異なり，システムの管理者権限を持つユーザになります。UNIXにおけるスーパーユーザと一般ユーザの権限の差異（一例）を次に示します。

表2‒3　UNIXにおけるスーパーユーザと一般ユーザの権限の差異（一例）

項番

項目

スーパーユーザ

一般ユーザ

1

別のユーザが起動したプロセスの停止

可

不可

2

well-knownポート（1023番以下のポート）を開く

可

不可

3

明示的に読み取り/書き込み権限が与えられていないファイルへのアクセス

可

不可

一般ユーザでHTTP Serverを運用する場合，HTTP Serverの制御プロセスの権限が一般ユーザ権限で動作するため，このときの挙動はスーパーユーザでHTTP Serverを運用した場合と異なる場合があります。したがって，一般ユーザでHTTP Serverを運用する場合は，スーパーユーザとの権限の差異を意識しながら環境を構築する必要があります。

(3)　リソースの所有者・グループの変更

HTTP Serverのコンテンツ，設定ファイル類，およびHTTP Serverが動作する際にアクセスする各種ファイル・ディレクトリについて，UNIX上での所有者・グループを変更します。

最低限，インストールディレクトリ（/opt/hitachi/httpsdディレクトリ）以下のリソースに対しては変更が必要です。

将来，リソースの所有者・グループを元に戻したい場合は，変更作業の前に現在のリソースに対して，所有者とグループを保存しておきます。

保存作業は，スーパーユーザで実行します。保存例を以下に示します。

（例）

/opt/hitachi/httpsdディレクトリ以下のリソースに対して，所有者とグループの一覧を作成する。

ls -laR /opt/hitachi/httpsd

変更作業は，スーパーユーザで実行します。変更例を以下に示します。

（例）

/opt/hitachi/httpsdディレクトリ以下のリソースに対して，所有者(hwsuser)とグループ(hwsgroup)を変更する。

chown -R hwsuser:hwsgroup /opt/hitachi/httpsd

(4)　httpsdの起動

HTTP Serverを運用する一般ユーザを使用して，httpsdを起動してください。

httpsdの停止または再起動をする場合は，起動時と同じ一般ユーザで操作してください。

(5)　制限事項

次に示すコマンドは，一般ユーザによる運用に対応していません。スーパーユーザで運用してください。

htpasswdコマンド

hwscollectコマンド

hwsservereditコマンド

logresolveコマンド

openssl.shコマンド

一般ユーザによる運用では次に示すディレクティブは指定できません。指定があっても無視します。

Groupディレクティブ

Userディレクティブ

一般ユーザによる運用では，well-knownポート（1023番以下のポート）を開くことができません。

以下のディレクティブにポート番号を指定する際は注意してください。

Listenディレクティブ

Portディレクティブ

3　運用の準備と起動，停止（Windows版）

この章では，HTTP Serverを運用する前に，知っておいていただきたいことおよび起動と停止について説明します。

3.1　HTTP Serverを運用するためのシステム構成

HTTP Serverを運用するために必要なシステム構成について説明します。

3.1.1　ハードウェア構成

(1)　サーバ

HTTP Serverの適用機種や，使用するメモリ所要量およびディスク占有量については，リリースノートを参照してください。

(2)　クライアント

Webブラウザが動作できる端末

(3)　ネットワーク関連

イーサネットなどのネットワーク（必須）

ドメインネームシステムサーバ（任意）

ロードバランサ（任意）

SSLアクセラレータ（任意）

ファイアウォール（任意）

3.1.2　Windows使用時の注意事項

(1)　コマンド実行時の注意事項

WindowsでHTTP Serverを動作させる場合，このマニュアルに記載されているコマンドはすべて管理者権限で実行する必要があります。

HTTP Serverの前提OSについては，マニュアル「アプリケーションサーバ & BPM/ESB基盤 概説」を参照してください。

HTTP Serverのコマンドは，「管理者：コマンドプロンプト」で実行してください。「管理者：コマンドプロンプト」は，各OSで提供されている機能を使用して起動してください。

(2)　設定ファイル更新時の注意事項

WindowsでHTTP Serverの設定ファイルを更新する場合は，更新するプログラムを必ず管理者権限で実行してください。

HTTP Serverの前提OSについては，マニュアル「アプリケーションサーバ & BPM/ESB基盤 概説」を参照してください。

3.2　インストールとアンインストール

HTTP ServerはApplication Serverのインストールによって使用できます。

Application Serverのインストールとアンインストールの方法は次のとおりです。詳細手順については，マニュアル「アプリケーションサーバ システム構築・運用ガイド」を参照してください。

インストール

インストーラを使用します。HTTP Serverは次のディレクトリにインストールされます。

<Application Serverのインストールディレクトリ>¥httpsd

アンインストール

PPインストーラを使用します。

3.3　運用環境を定義する

HTTP Serverの動作を定義するファイルについて説明します。

3.3.1　環境の定義方法

(1)　ディレクトリ構成

HTTP Serverをインストールしたときの，ディレクトリ構成を次に示します。この構成は変更しないでください。

図3‒1　ディレクトリ構成

(2)　コンフィグファイル

HTTP Serverの動作環境を定義するファイルをコンフィグファイルといいます。なお，コンフィグファイルのコメント行以外に，マルチバイト文字およびUnicodeの補助文字は指定できません。また，コンフィグファイルの1行に指定可能な文字数の上限は，8191文字です。

各ファイルの用途を次に示します。

表3‒1　コンフィグファイルの用途

ファイル名

用途

標準提供

httpsd.conf

HTTP Serverの動作環境を各種ディレクティブで定義します。システム管理者が管理します。

○

mime.types

コンテンツのファイル拡張子とコンテントタイプ（MIMEタイプ）の関連づけを定義します。システム管理者が管理します。

指定形式は，TypesConfigディレクティブの説明を参照してください。

○

.htaccess

アクセス制御を定義するアクセスコントロールファイル。必要に応じてエンドユーザがアクセス制御するディレクトリ下に作成します（デフォルトファイル名は.htaccess）。

×

Includeディレクティブで指定したファイル

HTTP Serverの動作環境を各種ディレクティブで定義します。システム管理者が管理します。

×

（凡例）

○：標準提供する。

×：標準提供しない。

コンフィグファイルの関連を次に示します。

図3‒2　コンフィグファイルの関連

3.4　起動と停止

HTTP Serverの起動および停止方法について説明します。

3.4.1　HTTP Serverの起動，停止

HTTP Serverをインストールすると，"Cosminexus HTTP Server"という名称のサービスとしてシステムに登録されます。このとき，手動起動するサービスとして登録されるため，システム起動時には自動起動されません。

HTTP Serverを起動，停止および再起動するには，次の方法があります。

Management Serverからサービスとしての起動，停止および再起動

コントロールパネルからサービスとしての起動，停止

コマンドプロンプトからの起動，停止および再起動

HTTP Serverをサービスとして実行する場合のユーザアカウントは，インストール時点では"LocalSystem"です。HTTP Serverは，CGIプログラム，API接続モジュールを含め，このユーザアカウントで実行されます。それ以外のユーザアカウントで実行したい場合は，「3.4.2　一般ユーザアカウントによる運用」を参照してください。

(1)　Management Serverからサービスとしての起動，停止および再起動

詳細は，マニュアル「アプリケーションサーバ 運用管理ポータル操作ガイド」の「4.1.2　システムの起動方法」または「4.1.4　システムの停止方法」を参照してください。

(2)　コントロールパネルからサービスとしての起動，停止

コントロールパネルからサービス画面を表示し，次に「Cosminexus HTTP Server」を選択して，起動する場合は「開始(S)」ボタン，停止する場合は「停止(T)」ボタンを押します。サービス画面からの再起動はできません。コンフィグファイルは，インストールパス/httpsd/conf/httpsd.confを使用します。

(3)　コマンドプロンプトからの起動，停止および再起動

コマンドプロンプトからhttpsdコマンドを入力します。httpsdコマンドについて次に説明します。

(a)　形式

"<Application Serverのインストールディレクトリ>¥httpsd¥httpsd.exe" 〔〔-d ディレクトリ〕〔-f ファイル名〕〔〔-n "サービス名"〕 〔-k ｛start | stop | restart | gracefulstop | install | uninstall｝〕〕| -v | -t 〕

(b)　オプション

-d ディレクトリ

ServerRootディレクティブがコンフィグファイルに指定されていない場合の，デフォルト値を設定できます。

-f ファイル名

コンフィグファイルのパスを指定できます。絶対パスまたはServerRootディレクティブの指定値からの相対パスで指定します。

-n "サービス名"

HTTP Serverのサービス名を指定します。サービス名は，"（引用符）で囲んで指定してください。サービス名に指定できる文字数の上限値は，128文字です。サービス名は，ASCIIコードで指定してください。また，次に示す文字は指定できません。

'¥'，'/'，'"'，制御コード，マルチバイト文字

サービス名のデフォルト値は「Cosminexus HTTP Server」です。

本オプションを指定する場合は，-kオプションも合わせて指定する必要があります。

-k start

HTTP Serverを起動します。-n "サービス名"が指定されている場合は，該当するサービスを起動します。

-k stop

HTTP Serverを停止します。-n "サービス名"が指定されている場合は，該当するサービスを停止します。

-k restart

HTTP Serverを再起動します。

-k gracefulstop

HTTP Serverを計画停止します。実行中のサーバスレッドは，実行終了後に停止します。KeepAlive接続中またはHTTP/2通信中の場合，KeepAlive接続の解除またはHTTP/2通信の終了までサーバプロセスは実行中の状態となります。実行が終了しない場合は，HWSGracefulStopTimeoutディレクティブに指定した待ち時間が経過すると終了します。

-k install

HTTP Serverをサービスとして登録します。-n "サービス名"が指定されている場合は，該当するサービスを登録します。サービス登録時，スタートアップの種類は「手動」になります。サービス起動するHTTP ServerのServerRootディレクティブのデフォルト値は，このコマンド実行時のhttpsd.exeのパスまたは-dオプションで指定した値になります。

-k uninstall

HTTP Serverをサービスから削除します。-n "サービス名"が指定されている場合は，該当するサービスを削除します。削除しようとしたサービスが起動中の場合は，サービスを停止してからサービスを削除します。

-v

バージョン情報を表示します。このオプションを指定した場合は，HTTP Serverは起動しません。

-t

コンフィグファイルの文法をチェックします。文法エラーがあると，画面にエラーメッセージを表示します。このオプションを指定した場合は，HTTP Serverは起動しません。

(4)　ターミナルサービスを利用したリモートマシンからのHTTP Serverの操作

HTTP Serverでは，Windowsのターミナルサービス（リモートデスクトップサービス）機能を利用して，サーバマシン上にあるHTTP Serverの起動・停止，コマンドの実行などの操作をリモートマシンから実行できます。

HTTP Serverの前提OSについては，マニュアル「アプリケーションサーバ & BPM/ESB基盤 概説」を参照してください。

ターミナルサービスの操作については，OSのマニュアルを参照してください。

(5)　注意事項

コントロールパネルからの停止，コマンドプロンプトからの-k stopオプションによる停止時に，サーバスレッドが実行中の場合には，実行終了を最大30秒間待ったあとに停止します。

KeepAlive接続中またはHTTP/2通信中の状態でhttpsdctl gracefulstopによるWebサーバ停止操作を実行すると，KeepAlive接続またはHTTP/2通信の終了までサーバ停止が待たされます。

3.4.2　一般ユーザアカウントによる運用

HTTP Serverをサービスとして実行する場合のユーザアカウントは，インストール時点では"LocalSystem"です。HTTP Serverは，CGIプログラム，API接続モジュールを含め，このユーザアカウントで実行されます。

ここでは，さまざまな権限が与えられたグループには所属しないで，Webサーバの動作に必要な権限だけが設定された一般ユーザアカウントで運用する方法について説明します。

(1)　一般ユーザアカウントの作成

HTTP Serverサービスを起動する一般ユーザアカウントを作成する方法について説明します。

一般ユーザアカウントの作成方法

コントロールパネルから［管理ツール］−［コンピュータの管理］を開きます。

［コンピュータの管理］−［システムツール］−［ローカルユーザーとグループ］−［ユーザー］を開きます。

操作メニューから［新しいユーザー］を選択し，必要事項を入力します。

パスワードは必ず入力してください。

新規作成した一般ユーザアカウントは，デフォルトではグループの設定が付加されています。次の手順に従って，グループの設定を削除してください。

グループの設定の削除方法

コントロールパネルから［管理ツール］−［コンピュータの管理］を開きます。

［コンピュータの管理］−［システムツール］−［ローカルユーザーとグループ］−［ユーザー］を開きます。

新規作成したユーザの［プロパティ］を開き，［所属するグループ］タブを表示します。

登録されているグループを削除します。

(2)　ユーザ権利の割り当て

新規作成した一般ユーザアカウントに，ユーザ権利を割り当てる方法について説明します。

ユーザ権利の割り当て方法

コントロールパネルから［管理ツール］−［ローカルセキュリティポリシー］を開きます。

［セキュリティの設定］−［ローカルポリシー］−［ユーザー権利の割り当て］を開きます。

［サービスとしてログオン］をダブルクリックして開きます。

「ユーザーまたはグループの追加」ボタンで該当するユーザアカウントを追加します。

［サービスとしてログオン］の権限を明示的に設定しない場合でも，サービスのログオンアカウントを変更した一般ユーザアカウントには，権限が自動的に付加されます。サービスのログオンアカウントの変更については，「3.4.2(3)　サービスのログオンアカウントの変更」を参照してください。

(3)　サービスのログオンアカウントの変更

HTTP Serverサービスのログオンアカウントを一般ユーザアカウントに変更する方法について説明します。

サービスのログオンアカウントの変更方法

コントロールパネルから［管理ツール］−［サービス］を開きます。

Cosminexus HTTP Serverの［プロパティ］−［ログオン］タブを開きます。

「アカウント」ラジオボタンを選択し，一般ユーザアカウントを設定します。このとき，「3.4.2(1)　一般ユーザアカウントの作成」で設定したパスワードを正しく入力してください。また，パスワードを無期限にするかどうかを指定してください。

(4)　ディレクトリおよびファイルのアクセス権限の設定

HTTP Serverがアクセスするディレクトリおよびファイルのアクセス権限に，作成した一般ユーザアカウントのフルコントロール権限を追加してください。

(5)　サービスの起動

サービス起動権限を持つユーザアカウントでHTTP Serverサービスを起動してください。一般ユーザアカウントには，サービス起動権限はありません。

(6)　注意事項

hwstraceinfoコマンドを使用する場合は，「3.4.2(3)　サービスのログオンアカウントの変更」で指定した一般ユーザアカウントで実行してください。Administrators権限を持つユーザアカウントでは実行できません。

4　システムの運用方法

この章では，Webサーバ環境を運用に合わせて設定するディレクティブおよびコマンドの使用方法について説明します。

4.1　HTTP Serverの処理とディレクティブとの関係

HTTP Serverの処理とディレクティブとの関係について，説明します。

4.1.1　HTTP Serverのプロセス構造（UNIX版かつprefork MPMモジュールの場合）

(1)　プロセス構造

HTTP Serverのプロセス構造を次に示します。

図4‒1　HTTP Serverのプロセス構造（UNIX版かつprefork MPMモジュールの場合）

HTTP Serverを起動すると，制御プロセスが起動します。制御プロセスは，リクエストを処理するサーバプロセスを起動し，その稼働を監視します。制御プロセスは，最初にStartServersディレクティブで指定した個数のサーバプロセスを生成します。その後のサーバプロセス数は，MinSpareServers，MaxSpareServersディレクティブ指定値に基づいて増減していきます。サーバプロセス数の最大値は，MaxClientsディレクティブで指定します。サーバプロセス数の増減は，制御プロセスが管理します。この処理をメンテナンスと呼びます。

クライアントからのTCP接続は，Listenディレクティブで指定したIPアドレスとポートからOSが受信し，OS内のListenキューに保留します。Listenキューのサイズは，ListenBacklogディレクティブで指定できます。Listenキューに格納できなかったTCP接続は確立されません（このとき，HTTP Serverはクライアントにステータスコードを返却しません）。Listenキューに格納されたTCP接続は，サーバプロセスの一つが取り出して処理を行います。

一つのサーバプロセスは，一つのTCP接続を取得して処理します。また，一つのサーバプロセスは，MaxRequestsPerChildディレクティブに指定した個数のHTTPリクエストを処理すると終了します。このときは，制御プロセスが新たなサーバプロセスを生成して処理を続行します。

制御プロセスは，HTTP Serverを起動したユーザ，グループ権限で動作します。サーバプロセスは，User，Groupディレクティブで指定したユーザ，グループ権限で動作します。制御プロセスおよびサーバプロセスともに，プロセス名（実行プログラム名）はhttpsdです。制御プロセスのプロセスIDは，PidFileディレクティブに指定したファイルに出力します。

また，HTTP Serverのリバースプロキシ機能を使用した場合，バックエンドサーバとの間にコネクションが確立されます。そのコネクションの最大数については，「4.7.4(5)　性能に関する注意事項」を参照してください。

(2)　プロセス数の遷移

メンテナンスは，サーバの負荷集中を避けるために，1秒ごとに2ｎ−１（nは連続メンテナンス実行回数，6以上はn=6）個ずつサーバプロセスを生成します。サーバプロセスは，MinSpareServersディレクティブで指定した数の待ちプロセスができるかまたは全プロセス数がMaxClientsディレクティブで指定した数になるまで生成されます。1回のメンテナンスで8個以上のサーバプロセスを生成した場合は，エラーログ（infoレベル）にその旨出力します。

リクエストの処理が終了すると，サーバプロセスは待ち状態になります。待ち状態のプロセスが増加すると，メンテナンスのタイミングで，MaxSpareServersディレクティブで指定した数だけ残して，サーバプロセスを終了させます。

(a)　留意点

StartServersディレクティブには，Webサーバの起動・再起動直後から大量のリクエストを処理しなければならないような場合は，大きな値を指定してください。

Webサーバを起動したあとのプロセス数は，MaxSpareServersおよびMinSpareServersディレクティブによって制御されるため，StartServersディレクティブ指定値は意味がありません（HWSKeepStartServersディレクティブでOnを指定した場合を除く）。MinSpareServersおよびMaxSpareServersディレクティブは，急にリクエストが多発しても対応できるように待ち状態のプロセスを準備するために指定します。プロセスのメンテナンスでエラーログ（infoレベル）が頻繁に出力されるような場合には，待ちプロセス数を増やすよう調整してください。

より多くのサーバプロセスを常時待ち状態にしておくと，より多くのクライアントからの同時接続要求を受け付けられます。しかし，それだけサーバリソースを消費するために注意が必要です。

CGIプログラムの負荷が高くCPUを使い尽くしているような場合は，MaxClientsディレクティブの値を小さくしリクエストを受け付けないようにする必要があります。MaxClientsディレクティブで指定した数のプロセスがすべて処理中の場合は，ListenBacklogディレクティブの指定によって，キューに保留されます。

一つのサーバプロセスは，MaxRequestsPerChildディレクティブで指定された回数のリクエスト処理を実行したあと，終了します。ただし，MaxRequestsPerChildディレクティブに０を指定した場合，リクエスト処理の回数でサーバプロセスが終了することはありません。MaxRequestsPerChildディレクティブの指定は，エンドユーザが作成したアプリケーションプログラムなどでメモリリークを起こすおそれがある場合に有効です。

サーバプロセスに異常終了シグナルが送信された場合（API接続モジュールで障害になった場合も含む），プロセスは，エラーログ（noticeレベル）にそのことを出力します。noticeレベルのエラーログは，LogLevelディレクティブの指定に関係なく出力されます。

StartServersディレクティブで指定した数のサーバプロセスを，MaxSpareServers，MinSpareServersディレクティブの指定に関係なく，常に起動しておきたい場合，HWSKeepStartServersディレクティブでOnを指定してください。サーバプロセス数がStartServersディレクティブで指定した数を下回った場合に，新しいプロセスを生成して回復します。

HTTP Serverが停止するとPidFileディレクティブに指定したファイルは削除されます。しかし，HTTP Serverを停止しないでマシンをシャットダウンした場合など，HTTP Serverが外部から強制的に終了させられたときには，PidFileディレクティブに指定したファイルは削除されないで，次回のHTTP Serverの起動に失敗する場合があります。HTTP Serverが起動していない状態でPidFileディレクティブに指定したファイルが存在する場合は，このファイルを削除してからHTTP Serverを起動してください。

(b)　プロセス数の遷移例

HWSKeepStartServersの指定がOffの場合の，プロセス数の遷移例を図4-2に示します。

ディレクティブの指定値（HWSKeepStartServersの指定がOffの場合）

LoadModule mpm_prefork_module libexec/mod_mpm_prefork.so
StartServers 8
MaxSpareServers 10
MinSpareServers 5
MaxClients 15
HWSKeepStartServers Off
MaxRequestsPerChild 10000
KeepAlive Off

図4‒2　プロセス数の遷移例（HWSKeepStartServersの指定がOffの場合）

HWSKeepStartServersの指定がOnの場合の，プロセス数の遷移例を図4-3に示します。

ディレクティブの指定値（HWSKeepStartServersの指定がOnの場合）

LoadModule mpm_prefork_module libexec/mod_mpm_prefork.so
StartServers 8
MaxSpareServers 10
MinSpareServers 5
MaxClients 15
HWSKeepStartServers On
MaxRequestsPerChild 10000
KeepAlive Off

図4‒3　プロセス数の遷移例（HWSKeepStartServersの指定がOnの場合）

4.1.2　HTTP Serverのプロセス構造（UNIX版かつworker MPMモジュールの場合）

(1)　プロセス構造

HTTP Serverのプロセス構造を次に示します。

図4‒4　HTTP Serverのプロセス構造（UNIX版かつworker MPMモジュールの場合）

HTTP Serverを起動すると，制御プロセスが起動します。制御プロセスは，リクエストを処理するサーバプロセスを起動し，その稼働を監視します。サーバプロセスはメインスレッドのほかに，一つのリスナースレッドとThreadsPerChildディレクティブで指定した数だけサーバスレッドを起動します。サーバプロセス数の最大値は，ServerLimitディレクティブで指定します。

クライアントからのTCP接続は，Listenディレクティブで指定したIPアドレスとポートからOSが受信して，OS内のListenキューに保留します。Listenキューのサイズは，ListenBacklogディレクティブで指定できます。Listenキューに格納できなかったTCP接続は確立されません（このとき，HTTP Serverはクライアントにステータスコードを返却しません）。Listenキューに格納されたTCP接続は，サーバプロセスのリスナースレッドが一つ取り出してサーバプロセス内のキューに登録します。そのあと，サーバスレッドがサーバプロセス内のキューから取り出して処理を行います。サーバプロセス内のキューは，ThreadsPerChildディレクティブで指定した数だけ登録できます。

制御プロセスは，HTTP Serverを起動したユーザ，グループ権限で動作します。サーバプロセスは，User，Groupディレクティブで指定したユーザ，グループ権限で動作します。制御プロセスおよびサーバプロセスともに，プロセス名（実行プログラム名）はhttpsdです。制御プロセスのプロセスIDは，PidFileディレクティブに指定したファイルに出力します。

また，HTTP Serverのリバースプロキシ機能を使用した場合，バックエンドサーバとの間にコネクションが確立されます。そのコネクションの最大数については，「4.7.4(5)　性能に関する注意事項」を参照してください。

(2)　プロセス数・スレッド数の遷移

メンテナンスは，サーバの負荷集中を避けるために，1秒ごとに2ｎ−１（nは連続メンテナンス実行回数，6以上はn=6）個ずつサーバプロセスを生成します。サーバプロセスは，MinSpareThreadsディレクティブで指定した数の待ち状態のサーバスレッドができるか，または全サーバスレッド数がMaxClientsディレクティブで指定した数になるまで生成されます。1回のメンテナンスで8個以上のサーバプロセスを生成した場合は，エラーログ（infoレベル）にその旨出力します。

リクエストの処理が終了すると，サーバプロセスは待ち状態になります。待ち状態のサーバスレッドがMaxSpareThreadsディレクティブの値を超えて増加すると，メンテナンスのタイミングでサーバプロセスを終了させます。

(a)　留意点

worker MPMではサーバスレッド数に比例して，CGIプロセスの生成処理にコストが掛かり性能が劣化します。そのためCGIプログラムを実行する場合には，prefork MPMを使用することを推奨します。

StartServersディレクティブには，Webサーバの起動・再起動直後から大量のリクエストを処理しなければならないような場合は，大きな値を指定してください。

Webサーバを起動したあとのプロセス数は，MaxSpareThreadsおよびMinSpareThreadsディレクティブによって制御されるため，StartServersディレクティブ指定値は意味がありません（HWSKeepStartServersディレクティブでOnを指定した場合を除く）。MinSpareThreadsおよびMaxSpareThreadsディレクティブは，急にリクエストが多発しても対応できるように待ち状態のサーバスレッド数を調整するために指定します。プロセスのメンテナンスでエラーログ（infoレベル）が頻繁に出力されるような場合には，待ちプロセス数を増やすよう調整してください。

より多くのサーバプロセスを常時待ち状態にしておくと，より多くのクライアントからの同時接続要求を受け付けられます。しかし，それだけサーバリソースを消費するために注意が必要です。

すべてのサーバプロセス内のキューが満杯となった場合は，ListenBacklogディレクティブの指定によって，Listenキューに保留されます。

一つのサーバプロセスは，MaxRequestsPerChildディレクティブで指定された回数のリクエスト処理を実行したあと，終了します。ただし，MaxRequestsPerChildディレクティブに０を指定した場合，リクエスト処理の回数でサーバプロセスが終了することはありません。MaxRequestsPerChildディレクティブの指定は，エンドユーザが作成したアプリケーションプログラムなどでメモリリークを起こすおそれがある場合に有効です。

サーバプロセスに異常終了シグナルが送信された場合（API接続モジュールで障害になった場合も含む），プロセスは，エラーログ（noticeレベル）にそのことを出力します。noticeレベルのエラーログは，LogLevelディレクティブの指定に関係なく出力されます。

StartServersディレクティブで指定した数のサーバプロセスを，MaxSpareThreads，MinSpareThreadsディレクティブの指定に関係なく，常に起動しておきたい場合，HWSKeepStartServersディレクティブでOnを指定してください。サーバプロセス数がStartServersディレクティブで指定した数を下回った場合に，新しいプロセスを生成して回復します。

HTTP Serverが停止するとPidFileディレクティブに指定したファイルは削除されます。しかし，HTTP Serverを停止しないでマシンをシャットダウンした場合など，HTTP Serverが外部から強制的に終了させられたときには，PidFileディレクティブに指定したファイルは削除されないで，次回のHTTP Serverの起動に失敗する場合があります。HTTP Serverが起動していない状態でPidFileディレクティブに指定したファイルが存在する場合は，このファイルを削除してからHTTP Serverを起動してください。

HTTP/2プロトコルを使用している場合は，サーバスレッドのほかにHTTP/2プロトコルを処理するためのワーカスレッドが生成されます。詳細は「4.17.3　ワーカスレッド」を参照してください。

(b)　プロセス数・スレッド数の遷移例

プロセス数・スレッド数の遷移例を図4-5に示します。

ディレクティブの指定値

LoadModule mpm_worker_module libexec/mod_mpm_worker.so
ServerLimit 3
StartServers 1
MinSpareThreads 4
MaxSpareThreads 12
ThreadsPerChild 5
MaxClients 15

図4‒5　プロセス数・スレッド数の遷移例

4.1.3　HTTP Serverのプロセス構造（Windows版）

HTTP Serverのプロセス構造を次に示します。

図4‒6　HTTP Serverのプロセス構造（Windows版）

HTTP Serverを起動すると，制御プロセスが起動します。制御プロセスは，サーバプロセスを起動しその稼働を監視します。サーバプロセスが起動すると同時にメインスレッドが起動します。メインスレッドは，リクエストを受信するアクセプトスレッドを一つと，リクエストを処理するサーバスレッドをThreadsPerChildディレクティブで指定した個数だけ起動します。

クライアントからのTCP接続は，Listenディレクティブで指定したIPアドレスとポートからOSが受信し，OS内のListenキューに保留します。ListenキューのサイズはListenBacklogディレクティブで指定できます。Listenキューに格納できなかったTCP接続は確立されません（このとき，HTTP Serverはクライアントにステータスコードを返却しません）。アクセプトスレッドはListenキューからTCP接続を取り出し，HWSMaxQueueSizeディレクティブで指定した大きさのリクエストキューに登録します。それをサーバスレッドの一つが取り出してHTTPリクエストを受信し処理します。HWSMaxQueueSizeディレクティブ指定値を超えたためリクエストキューに格納できなかったTCP接続は，アクセプトスレッドによって閉じられます（このとき，HTTP Serverはクライアントにステータスコードを返却しません）。

サーバプロセス数およびサーバスレッド数が増減することはありません。

制御プロセスおよびサーバプロセスともに，プロセス名（実行プログラム名）はhttpsd.exeです。制御プロセスのプロセスIDは，PidFileディレクティブに指定したファイルに出力します。

HTTP/2プロトコルを使用している場合は，サーバスレッドのほかにHTTP/2プロトコルを処理するためのワーカスレッドが生成されます。詳細は「4.17.3　ワーカスレッド」を参照してください。

また，HTTP Serverのリバースプロキシ機能を使用した場合，バックエンドサーバとの間にコネクションが確立されます。そのコネクションの最大数については，「4.7.4(5)　性能に関する注意事項」を参照してください。

4.1.4　稼働管理について

サーバプロセス（Windows版の場合はサーバスレッド）の稼働状況を管理する上で必要となる，持続型接続の動作原理とタイマ監視機能について，説明します。

(1)　持続型接続（KeepAlive）

持続型接続（KeepAlive）は，クライアントからのリクエストに対してレスポンスを返したあともTCPコネクションを切断しないで，同じクライアントからの次のリクエストを待つ機能です。

この機能は，KeepAliveディレクティブにOnを指定し，かつクライアント側が対応している場合に使用できます。TCPコネクションを切断しないため，クライアントが複数のリクエストを連続して送信する場合にはレスポンス時間を短縮できます。

次のリクエストを待つ間はサーバプロセスがクライアントに占有されますが，この待ち時間はKeepAliveTimeoutディレクティブで設定できます。また，1クライアントが持続型接続を利用して何回までリクエストを処理できるかをMaxKeepAliveRequestsディレクティブで設定します。

なお，HTTP/2通信ではKeepAliveディレクティブの設定に関係なく，コネクションが持続します。コネクションが持続する時間は，KeepAliveTimeoutディレクティブ値に従います。

(2)　タイマ監視

次の場合，Timeoutディレクティブに設定された値によって，タイマ監視ができます。

クライアントからのリクエスト受信（コネクション確立後，HTTPプロトコルの受信）時

クライアントへのレスポンス送信時

CGIプログラムへのリクエスト送信時

CGIプログラムへのリクエスト送信後からレスポンス受信まで

CGIプログラムからのレスポンス受信時

CGIプログラムからのレスポンス受信後，入出力用のパイプを閉じるまでの待ち時間

リバースプロキシを使用している場合，バックエンドサーバへのリクエスト送信時

リバースプロキシを使用している場合，バックエンドサーバへのリクエスト送信後からレスポンス受信まで

リバースプロキシを使用している場合，バックエンドサーバからのレスポンス受信時

(3)　制御プロセスの監視

PidFileディレクティブで指定したファイルに出力されるIDのプロセスを監視すると，HTTP Serverの制御プロセスを監視できます。監視するプロセス名（実行プログラム名）はWindows版の場合httpsd.exe，UNIX版の場合httpsdです。

制御プロセスを監視する際には，PidFileディレクティブで指定したファイルに格納されたIDのプロセスがHTTP Serverのプロセスであることを必ず確認してください。HTTP Serverのプロセスであることを確認するには，プロセスの実行プログラム名が，Windows版の場合httpsd.exe，UNIX版の場合httpsdであることを確認してください。

4.2　ログを採取する

出力されたメッセージの意味については，マニュアル「アプリケーションサーバ メッセージ(構築／運用／開発用)」の「21.　Webサーバ(HTTP Server)が出力するメッセージ」およびマニュアル「アプリケーションサーバ メッセージ(監査者用)」の「3.　KAWS（HTTP Serverが出力する監査ログメッセージ）」を参照してください。

4.2.1　ログの種類

ログの種類を次に示します。

表4‒1　ログの種類

ログの種類

指定するディレクティブ

機能

アクセスログ

TransferLog

デフォルトフォーマットのログを採取します。

rotatelogsプログラムまたはrotatelogs2プログラムを使用して，定期的または定量的に分割できます。

LogFormatディレクティブでフォーマットを変更できます。

CustomLog

カスタマイズしたフォーマットでログを採取します。

rotatelogsプログラムまたはrotatelogs2プログラムを使用して，定期的または定量的に分割できます。

LogFormatディレクティブで定義したフォーマットをCustomLogディレクティブに指定できます。

エラーログ

ErrorLog

エラー発生時のメッセージのログを採取します。

rotatelogsプログラムまたはrotatelogs2プログラムを使用して，定期的または定量的に分割できます。

LogLevelディレクティブで，採取するログのレベルを指定できます。

HWSRequestLogディレクティブを指定していない場合に，モジュールトレースを採取できます。

モジュールトレースの詳細については「4.2.6　モジュールトレースの採取」を参照してください。

ScriptLog

CGIスクリプトのエラーログを採取します。

リクエストログ

HWSRequestLog

リクエストログを採取します。リクエストログとして，次のトレースを採取できます。

モジュールトレース

モジュールの各関数の実行時およびCGIプログラムの実行時に採取されるトレースです。モジュールトレースの詳細については「4.2.6　モジュールトレースの採取」を参照してください。

リクエストトレース

リクエスト処理開始時や完了時などで採取されるトレースです。リクエストトレースの詳細については「4.2.7　リクエストトレースの採取」を参照してください。

I/Oフィルタトレース

モジュールが実装している入出力フィルタ関数の実行時に採取されるトレースです。I/Oフィルタトレースの詳細については「4.2.8　I/Oフィルタトレースの採取」を参照してください。

プロキシトレース

リバースプロキシ機能を使用している場合に，リバースプロキシの処理状況を把握するためのトレースです。プロキシトレースの詳細については「4.2.9　プロキシトレースの採取」を参照してください。

rotatelogsプログラムまたはrotatelogs2プログラムを使用して，定期的または定量的に分割できます。

プロセスIDログ

PidFile

制御プロセスIDのログを採取します。

イベントログ

なし

サービスから起動する際に発生するエラーを記録します（Windows版）。

内部トレース

HWSTraceLogFile

共有メモリのトレース情報を出力します。

共有メモリIDログ

HWSTraceIdFile

共有メモリIDを格納します。

コアファイル※

CoreDumpDirectory

HTTP Server障害発生時のコアダンプの出力先を指定します（UNIX版）。

WebSocketログ

HWSWebSocketLog

WebSocket通信でのログを採取します。

rotatelogsプログラムまたはrotatelogs2プログラムを使用して，定期的または定量的に分割できます。

注※

OSでコアファイルを出力する設定を行った場合に出力されます。

設定方法については各OSのマニュアルを参照してください。

アクセスログ，エラーログ，リクエストログ，WebSocketログのサイズが2GBを超えた場合，HTTP Serverが異常終了したり，再起動できなかったりする場合があります。定期的にログファイルを退避するか，「4.2.3　ログを分割する（rotatelogsプログラム）」や「4.2.4　ログファイルをラップアラウンドさせて使用する（rotatelogs2プログラム）」を参照して，ログファイルのサイズが2GBを超えないように設定してください。

4.2.2　ログの採取方法

アクセスログ，エラーログ，プロセスIDのログおよびリクエストログの採取方法について説明します。

(1)　アクセスログ

(a)　デフォルトフォーマットのアクセスログ

TransferLogディレクティブを指定して，ログを採取します。

デフォルトフォーマットのアクセスログの形式を次に示します。

クライアントホスト名△クライアントの識別情報△クライアントユーザ名△アクセス時刻△"リクエストライン"△ステータスコード△送信バイト数

（凡例）

△：空白

（出力例）

172.17.40.30 - - [25/Dec/2000:16:23:59 +0900] "GET / HTTP/1.0" 200 3546

(b)　カスタムフォーマットのアクセスログ

CustomLogディレクティブを指定して，ログを採取します。フォーマットの指定方法には，二つあります。

直接CustomLogディレクティブにフォーマットを指定する

（例）

CustomLog logs/access.log "%h %l %u %t ¥"%r¥" %>s %b"

LogFormatディレクティブでフォーマットに対するラベル名を定義して，そのラベル名をCustomLogディレクティブに指定する

（例）

LogFormat "%h %l %u %t ¥"%r¥" %>s %b" common

CustomLog logs/access.log common

(2)　エラーログ

(a)　エラーメッセージログ

ErrorLogディレクティブを指定して，ログを採取します。LogLevelディレクティブで採取するエラーのレベルを指定します。

(b)　CGIスクリプトのエラーログ

ScriptLogディレクティブを指定して，CGIスクリプトのエラーログを採取します。

(3)　プロセスIDのログ

PidFileディレクティブを指定して，制御プロセスIDのログを採取します。

複数環境を生成する場合には，ファイルパスはほかの環境と競合しないように変更してください。

(4)　リクエストログ

HWSRequestLogディレクティブとHWSRequestLogTypeディレクティブを指定して，リクエストログを採取します。リクエストログとは，モジュールトレース，リクエストトレースおよびI/Oフィルタトレースの総称です。

モジュールトレースの詳細については「4.2.6　モジュールトレースの採取」，リクエストトレースの詳細については「4.2.7　リクエストトレースの採取」，I/Oフィルタトレースの詳細については「4.2.8　I/Oフィルタトレースの採取」を参照してください。

(5)　WebSocketログ

(a)　指定方法

HWSWebSocketLogディレクティブを指定して，WebSocket通信でのログを採取します。

rotatelogs2で512MBでファイルを分割する例を次に示します。

HWSWebSocketLog "|インストールパス/httpsd/sbin/rotatelogs2 ログ出力先/hws_websocket_log 524288 2"

HWSWebSocketLogディレクティブを指定するには，mod_proxy_wstunnelモジュールの組み込みが必要です。mod_proxy_wstunnelモジュールの組み込み方法については「4.15.1　mod_proxy_wstunnelモジュール」を参照してください。mod_proxy_wstunnelモジュールを組み込んでいない場合は，起動エラーとなります。

(b)　出力フォーマット

各WebSocket通信で出力するログには，ルートAP情報を含みます。ただし，ルートAP情報が取得できない場合は，ルートAP情報部分が"-"となります。出力するフォーマットを次に示します。

クライアントからのデータをバックエンドに送信成功

[時刻]△(ID)△クライアントIP:ポート△-->△WebサーバIP：ポート△-->△WebサーバIP：ポート△-->△バックIP:ポート△(ルートAP情報)

バックエンドからのデータをクライアントに送信成功（初回）

[時刻]△(ID)△クライアントIP:ポート△<--△WebサーバIP：ポート△<--△WebサーバIP：ポート△<--△バックIP:ポート△(ルートAP情報)(ステータスコード)

ただし，ステータスコードを取得できない場合は，ステータスコード部分が"-1"となります。

バックエンドからのデータをクライアントに送信成功（2回目以降）

[時刻]△(ID)△クライアントIP:ポート△<--△WebサーバIP：ポート△<--△WebサーバIP：ポート△<--△バックIP:ポート△(ルートAP情報)

クライアントからのデータ受信でエラー

[時刻]△(ID)△クライアントIP:ポート△-X-△WebサーバIP：ポート△-->△WebサーバIP：ポート△---△バックIP:ポート△(ルートAP情報)

バックエンドへのデータ送信でエラー

[時刻]△(ID)△クライアントIP:ポート△-->△WebサーバIP：ポート△---△WebサーバIP：ポート△-X-△バックIP:ポート△(ルートAP情報)

バックエンドからのデータ受信でエラー

[時刻]△(ID)△クライアントIP:ポート△---△WebサーバIP：ポート△<--△WebサーバIP：ポート△-X-△バックIP:ポート△(ルートAP情報)

クライアントへのデータ送信でエラー

[時刻]△(ID)△クライアントIP:ポート△-X-△WebサーバIP：ポート△<--△WebサーバIP：ポート△<--△バックIP:ポート△(ルートAP情報)

バックエンドとのコネクション切断を検知

[時刻]△(ID)△クライアントIP:ポート△---△WebサーバIP：ポート△---△WebサーバIP：ポート△-X-△バックIP:ポート△(ルートAP情報)

クライアントとのコネクション切断を検知

[時刻]△(ID)△クライアントIP:ポート△-X-△WebサーバIP：ポート△---△WebサーバIP：ポート△---△バックIP:ポート△(ルートAP情報)

（凡例）

△：空白

-->：クライアントからバックエンドサーバ方向へのデータの流れ

<--：バックエンドサーバからクライアント方向へのデータの流れ

-X-：データの送受信でエラー，またはコネクション切断

---：事象なし

（出力例）

[Mon Dec 09 21:13:09.008 2019] (9796) 192.168.10.10:61682 --> 192.168.10.20:80 --> 192.168.10.20:61683 --> 192.168.10.30:8008 (192.168.10.20/14756/0x0000000000000087)
[Mon Dec 09 21:13:09.019 2019] (9796) 192.168.10.10:61682 <-- 192.168.10.20:80 <-- 192.168.10.20:61683 <-- 192.168.10.30:8008 (192.168.10.20/14756/0x0000000000000087)(101)
[Mon Dec 09 21:13:09.029 2019] (9796) 192.168.10.10:61682 <-- 192.168.10.20:80 <-- 192.168.10.20:61683 <-- 192.168.10.30:8008 (192.168.10.20/14756/0x0000000000000087)
[Mon Dec 09 21:13:10.715 2019] (9796) 192.168.10.10:61682 --> 192.168.10.20:80 --> 192.168.10.20:61683 --> 192.168.10.30:8008 (192.168.10.20/14756/0x0000000000000087)
[Mon Dec 09 21:13:10.727 2019] (9796) 192.168.10.10:61682 <-- 192.168.10.20:80 <-- 192.168.10.20:61683 <-- 192.168.10.30:8008 (192.168.10.20/14756/0x0000000000000087)
[Mon Dec 09 21:13:12.227 2019] (9796) 192.168.10.10:61682 --> 192.168.10.20:80 --> 192.168.10.20:61683 --> 192.168.10.30:8008 (192.168.10.20/14756/0x0000000000000087)
[Mon Dec 09 21:13:12.234 2019] (9796) 192.168.10.10:61682 <-- 192.168.10.20:80 <-- 192.168.10.20:61683 <-- 192.168.10.30:8008 (192.168.10.20/14756/0x0000000000000087)
[Mon Dec 09 21:13:12.236 2019] (9796) 192.168.10.10:61682 --- 192.168.10.20:80 --- 192.168.10.20:61683 -X- 192.168.10.30:8008 (192.168.10.20/14756/0x0000000000000087)

(6)　各トレースの出力先

(a)　モジュールトレースの出力先

モジュールトレースの出力先は，エラーログまたはリクエストログのどちらか一方になります。どちらに出力されるかは，ディレクティブの指定によって決まります。モジュールトレースの出力先と出力条件を次に示します。

表4‒2　モジュールトレースの出力先と出力条件

出力先

出力条件

リクエストログ

HWSRequestLogディレクティブの指定があり，かつ，HWSRequestLogTypeディレクティブにmodule-infoまたはmodule-debugを指定した場合

エラーログ

HWSRequestLogディレクティブの指定がなく，かつ，LogLevelディレクティブにinfoまたはdebugを指定した場合

モジュールトレースの詳細については「4.2.6　モジュールトレースの採取」を参照してください。

(b)　リクエストトレースおよびI/Oフィルタトレースの出力先

リクエストトレースおよびI/Oフィルタトレースの出力先はリクエストログになります。

HWSRequestLogディレクティブの指定があり，かつ，HWSRequestLogTypeディレクティブが出力条件を満たしている場合にリクエストログに出力されます。HWSRequestLogTypeディレクティブの出力条件については，「4.2.7　リクエストトレースの採取」および「4.2.8　I/Oフィルタトレースの採取」を参照してください。

4.2.3　ログを分割する（rotatelogsプログラム）

アクセスログ，エラーログ，リクエストログを一定時間単位（例えば，24時間ごと）に分割して，複数のファイルに出力できます。rotatelogsプログラムは次のディレクティブに指定できます。

CustomLogディレクティブ

ErrorLogディレクティブ

HWSRequestLogディレクティブ

HWSWebSocketLogディレクティブ

TransferLogディレクティブ

プログラムの指定方法を次に示します。

(1)　形式

rotatelogs 分割ログファイルのプリフィックス  ログ分割時間間隔 〔-fnum ファイル数〕〔-diff GMTに対する時差〕〔-opt use_mtime〕〔-opt date_suffix〕

(2)　オペランド

分割ログファイルのプリフィックス

分割ログファイルのプリフィックスを絶対パスで指定します。

「プリフィックス.nnnnnnnnnn」というファイルに，ログを採取します。

nnnnnnnnnn：ログ採取開始時刻を表します。ログ採取時刻とは次の式で示す値です。

（（1970年1月1日の0時0分0秒(GMT：Greenwich Mean Time)を起点とした，ログを出力する時間の通算秒数÷ログ分割時間間隔）の小数点以下を切り捨てた値）×ログ分割時間間隔

ログ分割時間間隔　〜((1−31536000))

一つのログファイルを採取する時間間隔を秒単位に指定します。指定した時間間隔を超えた最初のログ出力時，新規ファイルにログを採取します。ただし，-opt date_suffix指定時は86400秒（＝24時間）以上を指定してください。86400秒よりも小さい値を指定した場合，同じ日付のファイルに出力し続けることがあります。

-fnum ファイル数　〜((1−256))

分割したログファイルのファイル数を指定します。分割したファイル数がここで指定した数を超えた場合，最も古いファイルから削除されます。このオペランドを省略した場合，ファイルは削除されません。

-diff GMTに対する時差　〜((-1439−1439))

ログファイルを分割する基準となる時間を，GMTに対する時差として分単位で指定します。指定しないまたは0を指定すると，1970年1月1日0時0分0秒(GMT)が基準時間となります。GMTに対するローカルタイムの差がn時間である場合に，ローカルタイムのm時0分0秒を基準にする場合には，(n-m)×60を指定します。JSTの0時0分0秒を基準にする場合には，(+9-0)×60で540を指定します。

-opt use_mtime

通常-fnum指定時に最も古いファイルを選択する際，分割ログファイルのctimeの日時を使用します。このオプションを指定すると，分割ログファイルのctimeの日時の代わりにmtimeの日時を使用します。ウィルススキャンソフトなどによって，分割ログファイルのctimeの日時が更新されることで最も古いファイルが正しく削除されなくなる場合にこのオプションを指定します。

-opt date_suffix

年月日を含む分割ログファイル名にする場合に指定します。

(3)　使用方法

ディレクティブに，"|プログラム名"の形式で指定して使用します。ログファイルを定期的に別ファイルに分割して採取します。

（例）Windows版

24時間ごとに，アクセスログを分割して<Application Serverのインストールディレクトリ>¥httpsd¥logs¥access.nnnnnnnnnnファイルに採取します。分割時間を日本時間に設定し，日本時間の毎0時にログファイルを分割する場合の指定を次に示します。

TransferLog "|¥"¥"<Application Serverのインストールディレクトリ>/httpsd/sbin/rotatelogs.exe¥" ¥"<Application Serverのインストールディレクトリ>/httpsd/logs/access¥" 86400 -diff 540¥""

ログファイル名：<Application Serverのインストールディレクトリ>¥httpsd¥logs¥access.nnnnnnnnnn

ログ分割時間間隔：86400秒（＝24時間）

年月日を含むファイル名（access.YYYYMMDD）のファイルにアクセスログを採取する指定を次に示します。

TransferLog "|¥"¥"<Application Serverのインストールディレクトリ>/httpsd/sbin/rotatelogs.exe¥" ¥"<Application Serverのインストールディレクトリ>/httpsd/logs/access¥" 86400 -diff 540 -opt date_suffix¥""

ログファイル名：<Application Serverのインストールディレクトリ>¥httpsd¥logs¥access.YYYYMMDD

（例）UNIX版

24時間ごとに，アクセスログを分割して/opt/hitachi/httpsd/logs/access.nnnnnnnnnnファイルに採取します。分割時間を日本時間に設定し，日本時間の毎0時にログファイルを分割する場合の指定を次に示します。

TransferLog "|/opt/hitachi/httpsd/sbin/rotatelogs /opt/hitachi/httpsd/logs/access 86400 -diff 540"

ログファイル名：/opt/hitachi/httpsd/logs/access.nnnnnnnnnn

ログ分割時間間隔：86400秒（＝24時間）

年月日を含むファイル名（access.YYYYMMDD）のファイルにアクセスログを採取する指定を次に示します。

TransferLog "|/opt/hitachi/httpsd/sbin/rotatelogs /opt/hitachi/httpsd/logs/access 86400 -diff 540 -opt date_suffix"

ログファイル名：/opt/hitachi/httpsd/logs/access.YYYYMMDD

(4)　注意事項

(a)　UNIX版の注意事項

rotatelogsプログラムはSIGTERM，SIGUSR1およびSIGHUPシグナルを受信してもプロセス終了処理を実施しませんが，制御プロセスとサーバプロセスが終了すればプロセス終了します。

(b)　Windows版の注意事項

サービスとして起動した場合には，制御プロセスのログは採取されません。

ログファイルは，そのファイルを開いているプロセスがある間は削除できません。このため，-fnumで指定した値より多いファイルが残ることがあります。例えば，制御プロセスがログを出力したファイルは，制御プロセスが終了するまで削除されません。

起動時に引数誤りなどがあった場合にWebサーバは起動しますが，rotatelogsプログラムは起動しません。その際，rotatelogsプログラムではイベントログに次に示す属性を持ったメッセージを出力します。

種類：エラー

ソース：CosminexusHTTPServer

分類：なし

イベント：3299

説明：rotatelogs.exe: (メッセージ)

出力されたメッセージの意味については，マニュアル「アプリケーションサーバ メッセージ(構築／運用／開発用)」の「21.7.4　rotatelogsプログラム」を参照してください。

このメッセージが出力されていた場合，メッセージ内容に従って引数を見直したあとにサーバを再起動してください。なお，同じメッセージが複数回出力されることがあります。

(c)　共通の注意事項

-fnumオペランドの指定によるログファイルの制御はWebサーバの再起動時に，ディレクトリ名またはログファイルのプリフィックスを変更すると，以前に採取したログファイルは削除されません。この場合は運用に応じて削除してください。

Webサーバを起動または再起動してから，指定したログ分割間隔時間が経過した場合，分割したログファイルのプリフィックスに一致するファイルの数が-fnumオペランドの指定値を超えると，作成時間または更新時間（-opt use_mtime指定時）の古いログファイルから削除されます。

分割ログファイルのプリフィックスは絶対パスで指定してください。

TransferLog，CustomLog，ErrorLog，およびHWSRequestLogディレクティブのrotatelogsプログラムの引数指定に誤りがある場合，rotatelogsプログラムの起動に失敗しますが，Webサーバは起動します。この場合はログが出力されません。TransferLog，CustomLog，ErrorLog，およびHWSRequestLogディレクティブにrotatelogsプログラムを指定した場合は，ログファイルが作成され，意図した分割が実施されることを確認してください。

4.2.4　ログファイルをラップアラウンドさせて使用する（rotatelogs2プログラム）

アクセスログ，エラーログ，リクエストログをログファイルサイズで分割して，複数のファイルにラップアラウンドして出力できます。rotatelogs2プログラムは次のディレクティブに指定できます。

CustomLogディレクティブ

ErrorLogディレクティブ

HWSRequestLogディレクティブ

HWSWebSocketLogディレクティブ

TransferLogディレクティブ

プログラムの指定方法を次に示します。

(1)　形式

rotatelogs2 ログファイルプリフィックス名　ログファイルサイズ　ログファイル個数

(2)　オペランド

ログファイルプリフィックス名

出力するログファイルのプリフィックス名を絶対パスで指定します。

出力するログファイルは「プリフィックス.nnn」のファイル名となります。

.nnnは.001からログファイル個数で指定した値までです。

「ログファイル個数」をnnn面とすると，nnn面のうち，HTTP Server起動時の更新時刻が最新のものが，カレントのログファイルとなります。ログファイルは，ファイル名称のプリフィックスに拡張子.001〜.nnnを付けて区別します。カレントのログファイルの拡張子が.mmmであった場合，カレントのログファイルがいっぱいになると，続きは，.mmm+1 のログファイルをクリアして出力されます。.mmmが.nnnと一致した場合，続きは.001に出力されます。

Windows版の場合，「プリフィックス.index」のインデクス番号格納用ファイルが作成されます。このファイルは.nnn管理用ファイルであり，rotatelogs2プログラムの起動時に作成され，停止時に削除されます。ただし，起動エラーの一部などで削除されないことがありますが，以降のWebサーバの動作に影響はありません。

ログファイルサイズ　〜((1−2097151))

ログファイルの最大サイズ（単位：KB）を指定します。

ログを出力するタイミングで，最大サイズを超えていると，次のログファイルをクリアして続きが出力されます。

ログファイル個数　〜((1−256))

出力するログファイルの最大数を指定します。

最大サイズを超えて次のログファイルに移る場合，それまで処理していたログファイルの拡張子が最大個数と同じとき，再度.001のファイルから使用します。

(3)　使用方法

ディレクティブに，"|プログラム名"の形式で指定して使用します。

（例）4,096KBごとにエラーログを最大5個採取する場合

ErrorLog "|¥"¥"<Application Serverのインストールディレクトリ>/httpsd/sbin/rotatelogs2.exe¥" ¥"<Application Serverのインストールディレクトリ>/httpsd/logs/errorlog¥" 4096 5¥""

errorlog.001〜errorlog.005の順番にログが出力されます。errorlog.005が4,096KBを超えるとerrorlog.001をクリアして続きが出力されます。HTTP Server起動時に，すでにこれらのログファイルがある場合には，更新時刻の最も新しいログファイルが出力対象のログファイルとなります。このログファイルのサイズがすでに4,096KBを超えている場合には，次のログファイルをクリアして続きが出力されます。4,096KBを超えない場合は，このファイルの続きに出力されます。

(4)　注意事項

(a)　UNIX版の注意事項

rotatelogs2プログラムはSIGTERM，SIGUSR1およびSIGHUPシグナルを受信してもプロセス終了処理を実施しませんが，制御プロセスとサーバプロセスが終了すればプロセス終了します。

(b)　Windows版の注意事項

Webサーバはサービスとして起動してください。サービスとして起動しない場合，Webサーバの停止または再起動の際に，不当にログファイルがクリアされることがあります。

インデクス番号格納用ファイルは，rotatelogs2プログラムが動作中の間は絶対に編集や削除をしないでください。編集するとログが正しく出力されないことがあります。

Webサーバの起動時にインデクス番号格納用ファイル「プリフィックス.index」と同名のファイルが存在した場合，ファイルは上書きされます。

起動時に引数誤りなどがあった場合にWebサーバは起動しますが，rotatelogs2プログラムは起動しません。その際，rotatelogs2プログラムではイベントログに次に示す属性を持ったメッセージを出力します。

種類：エラー

ソース：CosminexusHTTPServer

分類：なし

イベント：3299

説明：rotatelogs2.exe: (メッセージ)

出力されたメッセージの意味については，マニュアル「アプリケーションサーバ メッセージ(構築／運用／開発用)」の「21.7.5　rotatelogs2プログラム」を参照してください。

このメッセージが出力されていた場合，メッセージ内容に従って引数を見直したあとにサーバを再起動してください。なお，同じメッセージが複数回出力されることがあります。

(c)　共通の注意事項

ログファイルプリフィックス名は絶対パスで指定してください。

HTTP Server起動時の出力ログファイルは，更新日時が最新のものを対象とするため，誤ってファイルを更新した場合は正しいファイルへの出力ができなくなります。

ログファイルサイズには，同一秒内に複数のファイルが指定サイズを超えるような小さいサイズを指定しないでください。このようなサイズを指定した場合には，最も新しいログファイル以外が出力対象となり正しくローテーションされなくなることがあります。

コンフィグファイル内に，同一のログファイルプリフィックス名を複数個所で指定しないでください。複数個所で指定した場合には，最も新しいログファイル以外が出力対象となり正しくローテーションされなくなることがあります。

TransferLog，CustomLog，ErrorLog，およびHWSRequestLogディレクティブのrotatelogs2プログラムの引数指定に誤りがある場合，rotatelogs2プログラムの起動に失敗しますが，Webサーバは起動します。この場合はログが出力されません。TransferLog，CustomLog，ErrorLog，およびHWSRequestLogディレクティブにrotatelogs2プログラムを指定した場合は，ログファイルが作成され，意図した分割が実施されることを確認してください。

4.2.5　ログファイルのIPアドレスをホスト名に変換する（logresolveコマンド）

logresolveコマンドは，レコードの先頭がIPアドレスであるアクセスログファイル内のIPアドレスをホスト名に変換し，新規ログファイルに出力します。変換規則は，ホスト名のルックアップの逆引きによります。

(1)　形式

logresolve 〔-s ファイル名〕 〔-c〕 < アクセスログファイル名 > 新ログファイル名

(2)　オペランド

-s ファイル名

変換したときの情報を出力するファイルを指定します。このファイルには次のような情報が出力されます。

ホスト名の数

異なるIPアドレスの数

変換できなかったIPアドレスの数

-c

変換後のホスト名が変換前のIPアドレスと一致するかどうかチェックする場合に指定します。

アクセスログファイル名

入力ログファイル名を指定します。入力したファイルのIPアドレスからホスト名のルックアップの逆引きをします。レコードの先頭は，必ずIPアドレスでなければなりません。ホスト名の検索に失敗した場合，新ログファイルにはIPアドレスが出力されます。

新ログファイル名

IPアドレスをホスト名に変換したアクセスログを出力するファイル名を指定します。

(3)　使用方法

logs¥access.logに格納しているアクセスログ内のIPアドレスをホスト名に変換します。

アクセスログファイル：logs¥access.log

新ログファイル：logs¥new_access.log

logresolve < logs¥access.log > logs¥new_access.log

4.2.6　モジュールトレースの採取

Webサーバは複数のモジュール※から構成され，これらのモジュールは特定のタイミングで実行される複数の関数から構成されています。モジュールトレースとは，モジュールの各関数の実行時およびCGIプログラムの実行時に採取されるトレースのことです。モジュールトレースは，HWSRequestLogディレクティブの指定の有無によって，採取先などの採取方法が変わります。

注※　モジュールには，WebサーバにLoadModuleディレクティブで動的に組み込んで使用する外部モジュールと，httpsd実行ファイルに含まれる内部モジュールとがあります。

(1)　トレース対象

モジュールトレースのトレース対象を次に示します。

表4‒3　モジュールトレースのトレース対象

トレース対象

トレースの契機

モジュール

モジュールは複数の関数から構成されています。これらの関数は，初期化処理とリクエスト対応処理に分類されます。トレースはリクエスト対応処理についての関数に対して採取します。

CGIプログラム

CGIプログラム実行時にトレースを採取します。

(2)　採取方法

HWSRequestLogディレクティブを指定していない場合は，ErrorLogディレクティブに指定したファイルに対して，LogLevelディレクティブの指定に従って採取します。

HWSRequestLogディレクティブを指定している場合は，HWSRequestLogディレクティブに指定したファイルに対して，HWSRequestLogTypeディレクティブの指定に従って採取します。

注意事項

ErrorLogディレクティブに指定したファイルに対してログを採取する場合は，バーチャルホスト単位にファイルを分けることができます。HWSRequestLogディレクティブに指定したファイルに対してログを採取する場合は，バーチャルホスト単位にファイルを分けることができません。

(3)　採取レベル

LogLevelディレクティブまたはHWSRequestLogTypeディレクティブの指定によって，採取するモジュールトレースのレベルを変更できます。各レベルで採取するトレースの内容を次に示します。

(a)　infoレベル

障害発生の原因となるおそれのある外部モジュールおよびCGIプログラムについて採取します。

LogLevelディレクティブにinfoを指定またはHWSRequestLogTypeディレクティブにmodule-infoを指定した場合に採取します。

(b)　debugレベル

infoレベルのほかに，リクエストごとに動作する内部モジュールについてのトレースも採取します。

LogLevelディレクティブにdebugを指定またはHWSRequestLogTypeディレクティブにmodule-debugを指定した場合に採取します。

(4)　トレースフォーマット

モジュールトレースの出力項目は次のとおりです。

なお，以降の記述で「サーバプロセスID」となっている部分はUNIX版でprefork MPMを使用している場合のフォーマットであり，UNIX版のworker MPMでは「サーバプロセスID:サーバスレッドID」，Windows版の場合「サーバスレッドID」です。

(a)　モジュール

infoレベルで出力される場合

コール時

[時刻]△(サーバプロセスID)△[info]△hws△:△module△-->△(モジュールファイル名称[関数オフセット])

リターン時

[時刻]△(サーバプロセスID)△[info]△hws△:△module△<--△(モジュールファイル名称[関数オフセット])(結果コード)

（凡例）

△：空白

関数オフセットと関数の対応を次に示します。

表4‒4　関数オフセットと関数の対応

関数オフセット

関数名

意味

[0]

create_request

リクエスト開始処理を実行中

[1]

post_read_request

リクエスト読み込み後処理を実行中

[2]

quick_handler

リクエストされたURL変換前処理を実行中

[3]

translate_name

リクエストされたURLから，実際のファイル名への変換処理実行中

[4]

map_to_storage

ディスクアクセスを伴わないリクエスト処理を実行中

[5]

header_parser

リクエストヘッダ解析処理実行中

[6]

access_checker

認証済みユーザからリクエストされたURLに対してホスト名およびIPアドレスによるアクセス権限チェック実行中

[7]

check_user_id

ユーザIDのチェック処理実行中

[8]

auth_checker

認証済みユーザからリクエストされたURLに対してアクセス権限（Require）チェック実行中

[9]

type_checker

MIMEタイプのチェック処理実行中

[10]

fixups

リクエスト実行前処理を実行中

[11]

insert_filter

フィルタ挿入処理を実行中

[12]

handler

ハンドラを実行中

[13]

insert_error_filter

エラー応答前処理を実行中

[14]

log_transaction

ログ出力処理を実行中

[15]

error_log

エラーログ出力後処理を実行中

[16]

get_suexec_identity

ユーザ情報取得処理を実行中

[17]

pre_read_request

リクエスト読み込み前処理を実行中

[18]

access_checker_ex

追加のアクセス権限チェック実行中

（出力例）

[Fri Jul 15 17:29:43 2005] (1864) [info] hws : module --> (mod_example.c[1])
[Fri Jul 15 17:29:43 2005] (1864) [info] hws : module <-- (mod_example.c[1])(-1)

debugレベルで出力される場合

コール時

[時刻]△(サーバプロセスID)△[debug]△ファイル名称(行番号):△hws△:△module△-->△(モジュールファイル名称[関数オフセット])

リターン時

[時刻]△(サーバプロセスID)△[debug]△ファイル名称(行番号):△hws△:△module△<--△(モジュールファイル名称[関数オフセット])(結果コード)

（凡例）

△：空白

（出力例）

[Fri Jul 15 17:29:43 2005] (1864) [debug] request.c(69): hws : module --> (mod_alias.c[3])
[Fri Jul 15 17:29:43 2005] (1864) [debug] request.c(69): hws : module <-- (mod_alias.c[3])(-1)

(b)　CGIプログラム

infoレベルで出力される場合

コール時

[時刻]△(サーバプロセスID)△[info]△hws△:△cgi△-->△(exec=cgiファイル名称)(argv0=実行プログラム名称)(args=引数 ※)(CGIプロセスID)

注※　argsによる引数は，GET /cgi-bin/isindex?aaa+bbb+ccc HTTP/1.0のように，=ではなく，+で連結されたクエリーが指定された場合にだけ表示します。

リターン時

[時刻]△(サーバプロセスID)△[info]△hws△:△cgi△<--△(exec=cgiファイル名称)(argv0=実行プログラム名称)(CGIプロセスID)

（凡例）

△：空白

（出力例）

[Fri Jul 15 19:48:08 2012] (1784) [info] hws : cgi --> (exec=<Application Serverのインストールディレクトリ>/httpsd/cgi-bin/isindex)(argv0=isindex)(args=aaa+bbb+ccc)(1144)
[Fri Jul 15 19:48:08 2012] (1784) [info] hws : cgi <-- (exec=<Application Serverのインストールディレクトリ>/httpsd/cgi-bin/isindex)(argv0=isindex)(1144)

(5)　使用方法

(a)　使用例

リクエストログに，infoレベルのモジュールトレースおよびリクエストトレースを出力する例を示します。

HWSRequestLogType module-info request
HWSRequestLog logs/hwsrequest.log

4.2.7　リクエストトレースの採取

リクエストトレースとは，次のときに採取されるトレースのことです。

HTTP/1.1以前のリクエスト処理の場合

リクエスト処理開始時

リクエスト処理完了時

KeepAlive接続の場合，次のリクエストラインの受信完了時

リクエスト処理開始からリクエストライン受信完了前のコネクション切断時

HTTP/2のリクエスト処理の場合

サーバスレッドによるHTTP/2プロトコルの初回リクエスト受付時

ワーカスレッドによるHTTP/2プロトコルのリクエスト処理開始時

サーバスレッドによるHTTP/2プロトコルのレスポンス送信時

サーバスレッドによるHTTP/2プロトコルの通信終了時

HWSRequestLogディレクティブが指定されていた場合，かつHWSRequestLogTypeディレクティブでrequestが指定された場合にリクエストトレースの採取が有効となります。障害発生時にWebサーバにリクエストが届いているかどうかを確認する場合などに有用です。

(1)　トレースフォーマット

(a)　HTTP/1.1以前の場合のリクエストトレースの出力項目

HTTP/1.1以前の場合のリクエストトレースの出力項目は次のとおりです。

なお，以降の記述で「サーバプロセスID」となっている部分はUNIX版でprefork MPMを使用している場合のフォーマットであり，UNIX版のworker MPMでは「サーバプロセスID:サーバスレッドID」，Windows版の場合「サーバスレッドID」です。

リクエスト処理開始時

[時刻]△(サーバプロセスID)△client△:△hws△-->△(クライアントIPアドレス:ポート番号,サーバIPアドレス:ポート番号[A])

リクエスト処理完了時

[時刻]△(サーバプロセスID)△client△:△hws△<--△(クライアントIPアドレス:ポート番号,サーバIPアドレス:ポート番号[R])

KeepAlive接続での次のリクエストライン受信完了時

[時刻]△(サーバプロセスID)△client△:△hws△-->△(クライアントIPアドレス:ポート番号,サーバIPアドレス:ポート番号[K])

リクエスト処理開始からリクエストライン受信完了前のコネクション切断時

[時刻]△(サーバプロセスID)△client△:△hws△<--△(クライアントIPアドレス:ポート番号,サーバIPアドレス:ポート番号[X])

（凡例）

△：空白

（出力例）

[Tue Nov 21 15:18:40 2006] (1716) client : hws --> (192.168.2.1:5245,192.168.1.1:80[A])
[Tue Nov 21 15:18:41 2006] (1716) client : hws <-- (192.168.2.1:5245,192.168.1.1:80[R])

(b)　HTTP/2の場合のリクエストトレースの出力項目

HTTP/2の場合のリクエストトレースの出力項目は次のとおりです。

なお，以降の記述で「サーバスレッドID」となっている部分はWindows版を使用している場合のフォーマットであり，UNIX版のworker MPMでは「サーバプロセスID:サーバスレッドID」です。

また，次の「ワーカスレッドによるHTTP/2プロトコルのリクエスト処理開始時」の「ワーカスレッドID」となっている部分もWindows版を使用している場合のフォーマットであり，UNIX 版のworker MPM では「サーバプロセスID:ワーカスレッドID」です。

サーバスレッドによるHTTP/2プロトコルの初回リクエスト受付時

[時刻]△(サーバスレッドID)△client△:△hws△-->△(クライアントIPアドレス:ポート番号,サーバIPアドレス:ポート番号[A])

ワーカスレッドによるHTTP/2プロトコルのリクエスト処理開始時

[時刻]△(ワーカスレッドID)△client△:△hws△-->△(クライアントIPアドレス:ポート番号,サーバIPアドレス:ポート番号[S])

サーバスレッドによるHTTP/2プロトコルのレスポンス送信時

[時刻]△(サーバスレッドID)※△client△:△hws△<--△(クライアントIPアドレス:ポート番号,サーバIPアドレス:ポート番号[R])(ワーカスレッドID)

注※

プロトコルエラーなどでHTTP/2通信が終了している場合には，（サーバスレッドID）が（ワーカスレッドID）になることがあります。

サーバスレッドによるHTTP/2プロトコルの通信終了時

[時刻]△(サーバスレッドID)△client△:△hws△<--△(クライアントIPアドレス:ポート番号,サーバIPアドレス:ポート番号[X])

（凡例）

△：空白

（出力例）

[Wed Oct 19 10:28:48.142 2022] (1304) client : hws --> (127.0.0.1:53327,127.0.0.1:443[A])
[Wed Oct 19 10:28:48.145 2022] (10860) client : hws --> (127.0.0.1:53327,127.0.0.1:443[S])
[Wed Oct 19 10:28:48.145 2022] (1304) client : hws <-- (127.0.0.1:53327,127.0.0.1:443[R])(10860)
[Wed Oct 19 10:28:48.175 2022] (10860) client : hws --> (127.0.0.1:53327,127.0.0.1:443[S])
[Wed Oct 19 10:28:48.175 2022] (1304) client : hws <-- (127.0.0.1:53327,127.0.0.1:443[R])(10860)
[Wed Oct 19 10:28:51.184 2022] (1304) client : hws <-- (127.0.0.1:53327,127.0.0.1:443[X])

4.2.8　I/Oフィルタトレースの採取

I/Oフィルタトレースとは，モジュールが実装している入出力フィルタ関数の実行時に採取されるトレースのことです。

HWSRequestLogディレクティブが指定されていた場合，かつHWSRequestLogTypeディレクティブでfilterが指定された場合に有効となります。モジュール内のフィルタで発生した障害を切り分ける場合などに有用です。ただし，出力量が多いため，デバッグ目的以外では使用しないでください。

(1)　トレースフォーマット

I/Oフィルタトレースの出力項目は次のとおりです。

なお，以降の記述で「サーバプロセスID」となっている部分はUNIX版でprefork MPMを使用している場合のフォーマットであり，UNIX版のworker MPMでは「サーバプロセスID:サーバスレッドID」，Windows版の場合「サーバスレッドID」です。

入力フィルタコール時

[時刻]△(サーバプロセスID)△hws△:△in-filter※△-->△(フィルタ名称[フィルタタイプ番号])

入力フィルタリターン時

[時刻]△(サーバプロセスID)△hws△:△in-filter※△<--△(フィルタ名称[フィルタタイプ番号])(戻り値)

（凡例）

△：空白

注※　出力フィルタの場合は，「out-filter」になります。

（出力例）

[Tue Nov 21 15:18:40 2006] (1716) hws : in-filter --> (core_in[60])
[Tue Nov 21 15:18:40 2006] (1716) hws : in-filter <-- (core_in[60])(0)

4.2.9　プロキシトレースの採取

プロキシトレースとは，リバースプロキシ機能を使用している場合に採取される，次のトレースのことです。

バックエンドサーバへの接続処理開始時

バックエンドサーバへの接続処理終了時

バックエンドサーバへのリクエストの転送処理開始時

バックエンドサーバからのレスポンス受信処理開始時

HWSRequestLogディレクティブが指定されている場合，かつHWSRequestLogTypeディレクティブでproxyを指定した場合に有効となります。バックエンドサーバへリクエストを転送する場合に，処理状況の把握に有用です。

(1)　トレースフォーマット

プロキシトレースの出力項目は次のとおりです。

なお，以降の記述で「サーバプロセスID」となっている部分はUNIX版でprefork MPMを使用している場合のフォーマットであり，UNIX版のworker MPMでは「サーバプロセスID:サーバスレッドID」，Windows版の場合「サーバスレッドID」です。

接続処理開始時

[時刻]△(サーバプロセスID)△(ルートアプリケーション情報)△proxy△接続先IPアドレス:接続先ポート番号△:△connect

接続処理終了時（接続成功時）

[時刻]△(サーバプロセスID)△(ルートアプリケーション情報)△proxy△接続先IPアドレス:接続先ポート番号△:△connect(O)

接続処理終了時（接続失敗時）

[時刻]△(サーバプロセスID)△(ルートアプリケーション情報)△proxy△接続先IPアドレス:接続先ポート番号△:△connect(X)

リクエスト転送処理開始時

HTTP/1.1以前の場合

[時刻]△(サーバプロセスID)△(ルートアプリケーション情報)△proxy△接続先IPアドレス:接続先ポート番号△:△req△send(タイプ)(Content-Lengthヘッダ値)

HTTP/2の場合

[時刻]△(サーバプロセスID)△(ルートアプリケーション情報)△proxy△接続先IPアドレス:接続先ポート番号△:△req△send

タイプは次の3種類です。

CHUNK：チャンク形式で転送する方式

CL：Content-Lengthサイズ分転送を繰り返す方式

SPOOL：一時ファイルにボディを保存して，まとめて転送する方式

Content-Lengthヘッダ値が存在しない場合には，"-"を出力します。

レスポンス受信処理開始時

[時刻]△(プロセスID)△(ルートアプリケーション情報)△proxy△接続先IPアドレス:接続先ポート番号△:△res△recv

（凡例）

△：空白

（出力例）

[Thu Aug 29 11:03:58.639 2013] (21999) (192.168.0.33/250/0x0000000000000001) proxy 192.168.1.5:80 : connect
[Thu Aug 29 11:03:58.639 2013] (21999) (192.168.0.33/250/0x0000000000000001) proxy 192.168.1.5:80 : connect(O)
[Thu Aug 29 11:03:58.639 2013] (21999) (192.168.0.33/250/0x0000000000000001) proxy 192.168.1.5:80 : req send(CL)(4096)
[Thu Aug 29 11:03:58.682 2013] (21999) (192.168.0.33/250/0x0000000000000001) proxy 192.168.1.5:80 : res recv

4.2.10　内部トレースの採取（hwstraceinfoコマンド）

アプリケーションプログラムの実行時やリクエスト受け取り時など，システムで発生した事象は内部トレースとして採取されています。内部トレースは，共有メモリにいったん出力され，その後ディレクティブの指定やコマンドによって，ファイルに出力されます。

(1)　トレース情報の採取

Webサーバの各種事象発生を契機に内部トレースが共有メモリに採取されます。共有メモリのメモリ識別子は，HWSTraceIdFileディレクティブに指定したファイルに格納されます。

(2)　ファイルへの出力方法

共有メモリに採取された内部トレースは，サーバプロセスの異常終了時またはhwstraceinfoコマンドの実行によって，ファイルに出力されます。サーバプロセスが異常終了した場合は，HWSTraceLogFileディレクティブで指定したファイルに出力されます。

hwstraceinfoコマンドでは，共有メモリのメモリ識別子，出力先のファイル名を指定します。hwstraceinfoコマンドは，UNIX版の場合，Userディレクティブで指定したユーザまたはスーパーユーザだけが実行できます。また，Windows版の場合，管理者権限を持つユーザだけが実行できます。

内部トレースの出力ファイルサイズは次のとおりです。

UNIX版の場合

prefork MPMを使用している場合

ps -eflコマンドの出力サイズ＋vmstatコマンドの出力サイズ＋ipcs -aコマンドの出力サイズ＋7KB×MaxClient値

worker MPMを使用している場合

ps -eflコマンドの出力サイズ＋vmstatコマンドの出力サイズ＋ipcs -aコマンドの出力サイズ＋2KB×総サーバスレッド数(ServerLimit値×ThreadLimit値)

Windows版の場合

7KB×ThreadPerChild値

(3)　hwstraceinfoコマンド

hwstraceinfoコマンドの指定方法を説明します。

(a)　形式

hwstraceinfo -i 共有メモリ識別子 {-l ファイル名|-r}

(b)　オペランド

-i 共有メモリ識別子

HWSTraceIdFileディレクティブで指定したファイルに出力されている共有メモリ識別子を指定します。

-l ファイル名

-iで指定した共有メモリ識別子に該当するトレースを出力するファイルを指定します。

-r

-iで指定した共有メモリ識別子に割り当てられている共有メモリを解放します。UNIX版では，Webサーバが終了してもトレース用の共有メモリは残ります。残った共有メモリを解放するためにこのオペランドを使用します。Windows版では，Webサーバ終了時にトレース用の共有メモリは解放されますので，このオペランドは提供していません。

(c)　使用例

共有メモリ識別子1800_1133780652_0に該当するトレースをtraceinfo.logファイルに出力する例を示します。

hwstraceinfo -i 1800_1133780652_0 -l traceinfo.log

(4)　共有メモリの解放および再起動時の注意（UNIX版の場合）

Webサーバが終了しても，トレース情報を残すために共有メモリは解放しません。また，Webサーバを再起動する場合は，共有メモリが再利用されます。

Webサーバを停止したあとに起動した場合は，HWSTraceIdFileディレクティブに指定したファイルの値を基に，いったん共有メモリを解放して，再度確保します。ただし，次のような場合は，以前使用していた共有メモリが解放できなくなりますので，注意してください。

同一ユーザで再起動していない（UserディレクティブまたはGroupディレクティブの値が変更されている）

HWSTraceIdFileディレクティブの値を変更している

HWSTraceIdFileディレクティブで指定していたファイルが消去されている

共有メモリを解放する場合は，-rを指定したhwstraceinfoコマンドを実行してください。

4.2.11　保守情報収集機能（hwscollectコマンド）

Webサーバが異常終了および無応答となった場合などに，保守員が障害調査を実施するためのコアダンプ，エラーログ，アクセスログなどの資料が必要となります。hwscollectコマンドによって，これら障害調査のための資料を一括して収集できます。hwscollectコマンドはUNIX版だけで有効です。

hwscollectコマンドは，root権限で実行する必要があります。

(1)　形式

hwscollect 収集情報出力先ディレクトリ 〔-f 定義ファイル名〕

(2)　オペランド

収集情報出力先ディレクトリ

収集した情報をtarのアーカイブファイルとして出力する場合の，出力先のディレクトリを指定します。

アーカイブファイルの名称は，HWSyyyymmddhhmmss.tar となります。ここでyyyymmddは hwscollectを起動した日付，hhmmssはhwscollectを起動した24時間制の時刻で，それぞれローカルタイムです。

-f 定義ファイル名

hwscollect.confファイルを指定します。絶対パスまたはカレントディレクトリからの相対パスで指定します。

(3)　使用方法

HTTP Serverを標準的な構成でインストールした場合の使用方法を示します。

/opt/hitachi/httpsd/maintenance/hwscollect /tmp

(4)　コンフィグファイルの設定

hwscollect.confでhwscollectの動作を定義します。hwscollect.confは，キーワードと値をスペースで区切って記述します。キーワードは，大文字小文字を区別しません。行の最初に#を付けるとコメント行になります。ファイル名はすべて絶対パスで指定してください。コンフィグファイルのキーワードと指定について次に示します。

表4‒5　コンフィグファイルのキーワードと指定

キーワード

指定する値

指定

複数指定

ワイルドカード

ServerRoot

httpsd.confのServerRootディレクティブの値を指定します。

必須

×

×

conf

httpsd.confのファイル名を指定します。

必須

×

×

trcinfo

hwstraceinfoコマンドの存在するディレクトリを指定します。

必須

×

×

trcid

httpsd.confのHWSTraceIdFileディレクティブで指定されるファイル名を指定します。

必須

×

×

PidFile

httpsd.confのPidFileディレクティブで指定されるファイル名を指定します。

必須

×

×

CORE

httpsd.confのCoreDumpDirectoryディレクティブの値と，SSLCacheServerRunDirディレクティブの値を指定します。

任意

○

○

LOG

httpsd.confのErrorLogディレクティブ，HWSRequestLogディレクティブおよびTransferLogディレクティブやCustomLogディレクティブなどのログを指定するファイル名を指定します。

任意

○

○

FILES

そのほか，障害解析に役立つファイルがあれば指定します。

任意

○

○

（凡例）

○：指定できる。

×：指定できない。

(5)　コンフィグファイルの指定例

コンフィグファイルの指定例を示します。

ServerRoot /opt/hitachi/httpsd
conf /opt/hitachi/httpsd/conf/httpsd.conf
trcinfo /opt/hitachi/httpsd/sbin/
trcid /opt/hitachi/httpsd/logs/hws.trcid
PidFile /opt/hitachi/httpsd/logs/httpd.pid
CORE /opt/hitachi/httpsd/logs/core*
LOG /opt/hitachi/httpsd/logs/error*
LOG /opt/hitachi/httpsd/logs/access*
LOG /opt/hitachi/httpsd/logs/hws.trclog*
LOG /opt/hitachi/httpsd/logs/hwsrequest*

(6)　ディスク使用量

一時的に使用するファイル

200KB+7KB×MaxClients値

収集した情報を出力するtarファイル

coreファイルの容量＋logファイルの容量＋一時的に使用するファイルの容量

(7)　注意事項

収集情報出力先ディレクトリには，coreファイルを含む保守情報のアーカイブファイルが作成されるため，空き領域を確保してください。

収集情報出力先ディレクトリに出力ファイルおよび一時ファイルを作成します。このため，収集情報出力先ディレクトリは書き込み可能としてください。

CORE，LOGおよびFILESにディレクトリを指定すると，指定されたディレクトリ下のファイルのすべてを採取します。このため，ルートディレクトリなど上位ディレクトリを指定すると，大量かつ不要な情報を採取してしまうため，注意が必要です。

4.3　サーバマシンのバーチャル化（バーチャルホスト）

バーチャルホストは1台のサーバマシンを複数台のマシンに見せます。その方法は次に示す二つがあります。

サーバ名に基づくバーチャルホスト（Name-Based Virtual Hosts）

IPアドレスに基づくバーチャルホスト（IP-Based Virtual Hosts）

4.3.1　サーバ名に基づくバーチャルホスト

サーバ名に基づくバーチャルホストは，一つのIPアドレスに対して複数のホスト名をDNSサーバなどで定義しておき，クライアントからそのホスト名でアクセスすることで，複数ホストのように見せます。ネットワークインタフェースを複数設定する必要はありません。サーバ名に基づくバーチャルホストでは，SSL対応ホストと非SSL対応ホストの組み合わせ，または異なる複数のSSL対応ホストの組み合わせでは構築できません。それらの組み合わせで構築する場合は，IPアドレスに基づくバーチャルホストで構築してください。サーバ名に基づくバーチャルホストの場合には，<VirtualHost>ディレクティブにIPアドレスを明示的に指定してください。

（例）1台のサーバマシン（IPアドレス：172.17.40.10）上の一つのWebサーバでポートを一つオープンし，Webブラウザからのリクエストに応じてホストを切り替える運用をする。

Webブラウザからの要求が，http://www1.xxx.soft.hitachi.co.jp/の場合

<Application Serverのインストールディレクトリ>/httpsd/htdocs1/index.html（DirectoryIndexの指定がindex.htmlの場合）を参照します。

Webブラウザからの要求が，http://www3.xxx.soft.hitachi.co.jp/の場合

<Application Serverのインストールディレクトリ>/httpsd/htdocs3/index.html（DirectoryIndexの指定がindex.htmlの場合）を参照します。

ただし，この方法はWebブラウザからのリクエスト中のHostヘッダで，"Host: www1.xxx.soft.hitachi.co.jp"のようにホスト名（必要に応じてポート番号）を指定してきた場合だけ利用できます。古いWebブラウザや，簡易タイプのWebブラウザでは利用できないことがあるので注意が必要です。その場合，最も上位に記述された<VirtualHost>ブロックの指定（この例ではwww1.xxx.soft.hitachi.co.jp）が有効になります。

 Listen 80                                                 …1.
 <VirtualHost 172.17.40.10>                              …2.
 DocumentRoot "<Application Serverのインストールディレクトリ>/httpsd/htdocs1"  …3.
 ServerName www1.xxx.soft.hitachi.co.jp                  …4.
 </VirtualHost>
 <VirtualHost 172.17.40.10>                              …5.
 DocumentRoot "<Application Serverのインストールディレクトリ>/httpsd/htdocs2"  …6.
 ServerName www2.xxx.soft.hitachi.co.jp                  …7.
 </VirtualHost>
 <VirtualHost 172.17.40.10>                              …8.
 DocumentRoot "<Application Serverのインストールディレクトリ>/httpsd/htdocs3"  …9.
 ServerName www3.xxx.soft.hitachi.co.jp                  …10.
 </VirtualHost>

ポート番号は一つ

バーチャルホスト1の定義

ルートディレクトリの定義

サーバ名1の定義

バーチャルホスト2の定義

ルートディレクトリの定義

サーバ名2の定義

バーチャルホスト3の定義

ルートディレクトリの定義

サーバ名3の定義

注　www1.xxx.soft.hitachi.co.jp，www2.xxx.soft.hitachi.co.jp，www3.xxx.soft.hitachi.co.jpは，DNSサーバなどに172.17.40.10ホストのホスト名として登録されていなければなりません。

4.3.2　IPアドレスに基づくバーチャルホスト

IPアドレスに基づくバーチャルホストは次の三つの方法でクライアントには複数ホストのように見せます。

複数のポートを使用

1台のサーバマシンに複数のネットワークインタフェースを指定

IPアドレスのエイリアスを指定

（例1）1台のサーバマシン上の一つのWebサーバでポートを二つオープンし，SSL対応Webサーバと非対応Webサーバの二つのホストとして運用する。

Listen 443                                     …1
Listen 80                                      …2
<VirtualHost xxx.soft.hitachi.co.jp:443>       …3
    DocumentRoot "<Application Serverのインストールディレクトリ>/httpsd/ssldocs"
    SSLEngine On                               …4
    SSLCertificateFile "<Application Serverのインストールディレクトリ>/httpsd/conf/ssl/server/httpsd.pem"
    SSLCertificateKeyFile "<Application Serverのインストールディレクトリ>/httpsd/conf/ssl/server/httpsdkey.pem"
</VirtualHost>
<VirtualHost xxx.soft.hitachi.co.jp:80>        …5
    DocumentRoot "<Application Serverのインストールディレクトリ>/httpsd/htdocs"
    SSLEngine Off                              …6
</VirtualHost>

ポート番号の定義

ポート番号の定義

ポート番号443のバーチャルホストの定義

SSL有効

ポート番号80のバーチャルホストの定義

SSL無効

（例2）1台のサーバマシン上に二つのNIC（Network Interface Card）（IPアドレス:172.17.40.10，172.17.40.20）を備え，一つのWebサーバでWebブラウザからのリクエストに応じてホストを切り替えて運用する。

Webブラウザからのリクエストが，http://172.17.40.10/の場合

<Application Serverのインストールディレクトリ>/httpsd/htdocs1/index.html（DirectoryIndexの指定がindex.htmlの場合）を参照します。

Webブラウザからのリクエストが，http://172.17.40.20/の場合

<Application Serverのインストールディレクトリ>/httpsd/htdocs2/index.html（DirectoryIndexの指定がindex.htmlの場合）を参照します。

Listen 80
<VirtualHost 172.17.40.10>
DocumentRoot "<Application Serverのインストールディレクトリ>/httpsd/htdocs1"
ServerName www10.xxx.soft.hitachi.co.jp
</VirtualHost>
<VirtualHost 172.17.40.20>
DocumentRoot "<Application Serverのインストールディレクトリ>/httpsd/htdocs2"
ServerName www20.xxx.soft.hitachi.co.jp
</VirtualHost>

4.4　WebサーバでのCGIプログラムの実行

CGIプログラムとは，Webサーバ上で動作するプログラムです。このCGIプログラムを使用すれば，静的なHTMLへのアクセスだけでは実現できないインタラクティブなWebアクセスができます。

4.4.1　CGIプログラムの定義

CGIプログラムを実行するには，ScriptAliasディレクティブでCGIプログラムがあるディレクトリを指定する方式，AddHandlerディレクティブを使用しファイル拡張子にcgi-scriptハンドラを指定する方式およびSetHandlerディレクティブでcgi-scriptハンドラを指定する方式があります。

httpsd.confで設定する場合は，CGIプログラムの管理のしやすさの点で，ScriptAliasディレクティブによる設定を推奨します。

(1)　ScriptAliasディレクティブの指定例

CGIプログラムのパス名を<Application Serverのインストールディレクトリ>/httpsd/cgi-bin/CGIプログラムファイル名とし，これに対してクライアントから/cgi-bin/CGIプログラムファイル名でアクセスする場合

ScriptAlias /cgi-bin/ "<Application Serverのインストールディレクトリ>/httpsd/cgi-bin/"

(2)　AddHandlerディレクティブの指定例

ファイル拡張子.cgiにcgi-scriptハンドラを指定する場合

AddHandler cgi-script .cgi

なお，OptionsディレクティブでExecCGIオプションの設定が必要です。

(3)　SetHandlerディレクティブの指定例

scriptで始まるファイル名に対するリクエストに対して，cgi-scriptハンドラを指定する場合

<FilesMatch ^script>
  SetHandler cgi-script
  Options ExecCGI
</FilesMatch>

4.4.2　CGIプログラムの呼び出し

CGIプログラムはWebブラウザから次の形式のURLを指定して呼び出します。

http://ホスト名〔:ポート番号〕/パス名〔?問い合わせ文字列〕

ホスト名〔:ポート番号〕

Webサーバが起動しているホスト名またはIPアドレスと，ポート番号を指定します。ポート番号を省略すると，ポート番号80にリクエストを送信します。

パス名

パス名はCGIプログラムのパスを指定します。

問い合わせ文字列

CGIプログラムに渡すパラメタです。そのキーワードと値の組を指定します。Webブラウザのフォームにデータを記述した場合，リクエストラインに自動的に設定されます。

4.4.3　CGIプログラムに渡す情報

WebサーバからCGIプログラムに環境変数を渡します。詳細は「付録B　CGIプログラムに渡す環境変数」を参照してください。

4.4.4　CGIプログラムの例

CGIプログラムのサンプルプログラムと，その実行例を説明します。

サンプルCGIプログラム

Windows版で使用可能なサンプルプログラムのソース例を次に示します。これはPerl言語で書かれたプログラムで，ファイル名をtest-cgi.plとします。

#! c:¥bin¥perl.exe

$argc=$#ARGV+1;
print "Content-Type: text/plain¥n";
print "¥n";
print "argc is $argc. argv is ¥"@ARGV¥".¥n";
print "SERVER_SOFTWARE = $ENV{'SERVER_SOFTWARE'}¥n";
print "SERVER_NAME = $ENV{'SERVER_NAME'}¥n";
print "GATEWAY_INTERFACE = $ENV{'GATEWAY_INTERFACE'}¥n";
print "SERVER_PROTOCOL = $ENV{'SERVER_PROTOCOL'}¥n";
print "SERVER_PORT = $ENV{'SERVER_PORT'}¥n";
print "REQUEST_METHOD = $ENV{'REQUEST_METHOD'}¥n";
print "HTTP_ACCEPT = ¥"$ENV{'HTTP_ACCEPT'}¥"¥n";
print "PATH_INFO = ¥"$ENV{'PATH_INFO'}¥"¥n";
print "PATH_TRANSLATED = ¥"$ENV{'PATH_TRANSLATED'}¥"¥n";
print "SCRIPT_NAME = ¥"$ENV{'SCRIPT_NAME'}¥"¥n";
print "QUERY_STRING = ¥"$ENV{'QUERY_STRING'}¥"¥n";
print "REMOTE_HOST = $ENV{'REMOTE_HOST'}¥n";
print "REMOTE_ADDR = $ENV{'REMOTE_ADDR'}¥n";
print "REMOTE_USER = $ENV{'REMOTE_USER'}¥n";
print "AUTH_TYPE = $ENV{'AUTH_TYPE'}¥n";
print "CONTENT_TYPE = $ENV{'CONTENT_TYPE'}¥n";
print "CONTENT_LENGTH = $ENV{'CONTENT_LENGTH'}¥n";

CGIプログラムの実行

Webブラウザに次に示すように指定して，サンプルCGIプログラムを呼び出します。

http://www.example.com/cgi-bin/test-cgi.pl/ABC?X=1&Y=2

サンプルプログラムの実行結果

4.4.5　CGIプログラムに渡す追加情報

CGI/1.1の環境変数以外にWebサーバからCGIプログラムに情報を渡す場合の指定方法について説明します。

コンフィグファイルにCGIプログラムに渡す環境変数や，その値を指定できます。CGIプログラムに渡さない環境変数の指定もできます。

PassEnv 環境変数                  CGIプログラムに渡す環境変数の指定
SetEnv 環境変数 値                CGIプログラムに渡す環境変数とその値の指定
UnsetEnv 環境変数                 CGIプログラムに渡さない環境変数の指定

4.4.6　環境変数の定義

クライアントのリクエストを基に，環境変数を定義できます。リクエストしているクライアントのホスト名やIPアドレスなどを基に環境変数を定義したり，環境変数の設定を解除したりできます。

SetEnvIfNoCase Request_URI "¥.(gif|jpg)$" request_is_image

この場合，ファイル拡張子が.gifまたは.jpgのとき（このディレクティブの場合，大文字，小文字の区別はしません），request_is_imageという環境変数をCGIプログラムに渡します。

4.4.7　WindowsでCGIプログラムを利用するときの注意事項

(1)　CGIプログラム作成時の注意

CGIプログラムとサーバスレッド間のデータ送受信には，CGIプログラムの標準入力，標準出力，標準エラー出力を使用しています。データ送受信中にはTimeoutディレクティブは有効になります。CGIプログラム作成時には，データの送受信完了後は，標準入出力などを閉じるかまたは終了してください。

(2)　CGIプログラムの強制終了

CGIプログラムはWebサーバが停止しても，CGIプログラム自身が処理を終えるまで終了しません。CGIプログラムを強制終了するには「タスクマネージャ」から終了させます。

4.4.8　UNIX版でCGIプログラムを利用するときの注意事項

(1)　実行権限

CGIプログラムには，User，Groupディレクティブ指定値での実行権限が必要です。

(2)　性能

worker MPMではサーバスレッド数に比例して，CGIプロセスの生成処理にコストが掛かり性能が劣化します。そのため，CGIプログラムを実行する場合には，prefork MPMを使用することを推奨します。

4.4.9　パス情報指定時の注意事項

リクエストURLに，CGIプログラムに渡すパス情報が指定された場合，そのパス情報を環境変数PATH_INFOに，パス情報をファイルシステム上のパスに変換した値を環境変数PATH_TRANSLATEDに設定します。パス情報をファイルシステム上のパスに変換する際には，DocumentRootディレクティブに指定されたパスを基点とします。パス情報に対し，Aliasディレクティブなどで別名を指定している場合は，その指定に従って変換します。

Webサーバの設定によって，環境変数PATH_TRANSLATEDに設定されたパスへのアクセスを許可していない場合には，エラーログにアクセス拒否のメッセージを出力します。このメッセージを出力した場合でも，WebサーバはCGIプログラムを実行し，リクエスト処理を続行します。この際，環境変数PATH_TRANSLATEDもCGIプログラムに渡されます。

（例）ドキュメントルートが "C:/Program Files/Hitachi/Cosminexus/httpsd"，Webブラウザからの要求が "http://www.example.com/cgi-bin/test-cgi.pl/ABC"（CGIプログラム"test-cgi.pl"を実行するリクエストに，パス情報として "/ABC" を付加）の場合の，エラーログ出力例を次に示します。

[Thu Apr 02 15:33:10 2020] [error] [pid 11111:tid 12345] [client 192.168.1.1:45678] AH01797: client denied by server configuration: C:/Program Files/Hitachi/Cosminexus/httpsd/ABC

4.5　ユーザ認証とアクセス制御

Webサーバに対するアクセス制御方法には次に示す方法があります。

ユーザ名およびパスワードによるアクセス制御

クライアントのホスト名またはIPアドレスによるアクセス制御

ディレクトリに対するアクセス制御

ディレクトリサービスを利用したアクセス制御

4.5.1　ユーザ名およびパスワードによるアクセス制御

ユーザ名とそのパスワードはhtpasswdコマンドを使用して，パスワードファイルに登録します。登録されているユーザ名に対して，ホスト内のディレクトリやファイルなどのアクセス権を定義できます。htpasswdコマンドの使用方法については，「4.5.1(1)　ユーザ名とパスワードのパスワードファイルへの登録およびパスワードの変更」を参照してください。

（例）<Application Serverのインストールディレクトリ>¥httpsd¥htdocs¥ディレクトリ下を特定のユーザだけに公開する

htpasswdコマンドを使用してあらかじめユーザ名とパスワードをパスワードファイル（<Application Serverのインストールディレクトリ>¥httpsd¥htdocs¥.htpasswd）に登録しておいてください。httpsd.confファイルに次に示すディレクティブを設定します。ユーザが<Application Serverのインストールディレクトリ>¥httpsd¥htdocs¥にアクセスするとWebサーバはステータスコード401　Authorization Requiredを応答し，Webブラウザでユーザ名およびパスワードの入力を要求します。

<Directory "<Application Serverのインストールディレクトリ>/httpsd/htdocs">
    AuthType Basic
    AuthName "realm 1"
    AuthUserFile "<Application Serverのインストールディレクトリ>/httpsd/htdocs/.htpasswd"
    Require valid-user
</Directory>

(1)　ユーザ名とパスワードのパスワードファイルへの登録およびパスワードの変更

htpasswdコマンドを使用して，パスワードファイルにユーザ名，パスワードの登録および変更ができます。

htpasswdコマンドの使用方法について次に説明します。

(a)　形式

htpasswd 〔-b〕〔-c | -D〕 パスワードファイル名 ユーザ名〔パスワード〕

(b)　オペランド

-b

パスワードをコマンドラインに指定する場合に指定します。

-c

新規にパスワードファイルを作成する場合に指定します。すでに作成しているパスワードファイルにユーザを追加する場合や，パスワードを変更する場合には，指定する必要はありません。

-D

ユーザの登録を削除する場合に指定します。指定したパスワードファイルに，指定したユーザが登録されている場合に，パスワードファイルから該当するユーザを削除します。

パスワードファイル名

パスワードを登録，変更または削除するパスワードファイルを指定します。

ユーザ名

パスワードを登録，変更または削除するユーザ名を指定します。

パスワード

登録または変更するパスワードを指定します。-bオプションを指定したときだけ指定できます。

(c)　使用方法

パスワードファイル名と，登録するユーザ名またはパスワードを変更するユーザ名を指定してhtpasswdを起動すると，そのユーザのパスワードの入力が要求されます。入力確認を含め，2回パスワードを入力すると，パスワードファイルにそのユーザのユーザ名と，パスワードが登録されます。

 C:¥>"<Application Serverのインストールディレクトリ>¥httpsd¥bin¥htpasswd.exe" .htpasswd userxx     …1.
 New password:                                                                         …2.
 Re-type new password:                                                                 …3.
 Updating password for userxxx                                                         …4.
 C:¥>

userxxのパスワードの変更

新パスワード入力

新パスワード再入力

新パスワードの登録終了

登録を削除する場合は，-Dオプション，パスワードファイル名および削除するユーザ名を指定してhtpasswdを起動します。

 C:¥>"<Application Serverのインストールディレクトリ>¥httpsd¥bin¥htpasswd.exe" -D .htpasswd userxx  …1.
 Deleting password for userxx                                                            …2.
 C:¥>

userxxの登録削除

userxxの登録削除終了

(d)　注意事項

ユーザ名の最大長とパスワードの最大長は128文字です。

htpasswdコマンド実行時は，パスワードファイルの作成先と同じディレクトリに，作業ファイルが一時的に作成されます。作業ファイル名は，「パスワードファイル名.プロセスID」です。この作業ファイルは，htpasswdコマンドの終了時に自動的に削除されます。ただし，実行中にキャンセルした場合など，作業ファイルが削除されないことがあります。作業ファイルが残っている場合は，手動で削除してください。

4.5.2　クライアントのホスト名またはIPアドレスによるアクセス制御

クライアントのホスト名やIPアドレスによってアクセス制御するには，Allow fromディレクティブやDeny fromディレクティブを使用します。Allow fromディレクティブでアクセスを許可するホスト，Deny fromディレクティブでアクセスを禁止するホストを指定します。

（例）<Application Serverのインストールディレクトリ>¥httpsd¥htdocs¥ディレクトリ下を，プロキシ経由のリクエストによる参照を禁止する

httpsd.confファイルに次に示すディレクティブを設定します。ユーザが<Application Serverのインストールディレクトリ>¥httpsd¥htdocs¥にアクセスする場合，proxy.xxx.soft.hitachi.co.jpをプロキシとして利用しているWebブラウザはステータスコード403 Forbiddenでアクセスを拒否されます。

<Directory "<Application Serverのインストールディレクトリ>/httpsd/htdocs">    ディレクトリの定義
    Order deny,allow                        アクセス許可と禁止の優先順位定義
    Deny from proxy.xxx.soft.hitachi.co.jp  アクセスの禁止
</Directory>

4.5.3　ディレクトリに対するアクセス制御

アクセスコントロールファイル（.htaccess）を特定のディレクトリ下に作成すれば，そのディレクトリに対するアクセス権を設定できます。そのファイルにアクセスを許可または拒否するクライアント名（IPアドレス）やユーザ名を指定します。

(1)　アクセスコントロールファイル

アクセスコントロールファイルを特定のディレクトリ下に作成すれば，そのディレクトリに対するアクセス権を設定できます。アクセスコントロールファイルの名称は，AccessFileNameディレクティブで指定します。デフォルトは.htaccessです。

アクセスコントロールファイルによるアクセス制御は，Webサーバを再起動することなく，有効になります。ただし，正しく機能させるためには，httpsd.confのAllowOverrideディレクティブを適切な上書き許可レベルに設定する必要があります。

アクセスコントロールファイルにパスワードファイルを指定すると，ユーザがそのディレクトリにアクセスする場合にユーザ名およびパスワードの入力を要求します。

注意事項

アクセスコントロールファイル（.htaccess）とパスワードファイル（.htpasswd）は1対1である必要はありません。異なるアクセスコントロールファイルのAuthUserFileディレクティブに同じパスワードファイルを指定できます。

(2)　アクセス権の設定例

次のようなディレクトリ構成で，各ディレクトリに対してアクセスコントロールファイルにアクセス権を設定します。

[user001のpublic_html]
│
├─[auth]──┬──.htaccess
│　　　      └──index.html
├─[test1]─┬──.htaccess
│　　       ├──.htpasswd (user001/test1)
│　　       ├──index.html
│　　       ├─[test11]──┬───.htaccess
│　　       │　　　        ├───.htpasswd (user001/test11)
│　　       │　　　        └───index.html
│　　       └─[test12]─┬──index.html
│　　　　　               └─[test121]──┬──.htaccess
│　　　　　　　　　                        └──index.html
└─[test2]──┬──.htaccess
　　　　       ├──.htpasswd (user001/test21,
　　　　       │     user002/test22,user003/test23)
　　　　       ├──.groupfile(mygroup: user001 user002)
　　　　       └──index.html

authディレクトリ下のアクセス権の定義（auth/.htaccessファイル）

IPアドレスが172.18.102.11および172.16.202.4のサーバからのアクセスを拒否します。

 Order deny,allow                      …1.
 Deny from 172.18.102.11 172.16.202.4  …2.

アクセス拒否の定義を先に評価

アクセス拒否の定義

test1ディレクトリ下のアクセス権の定義（test1/.htaccessファイル）

ユーザ名=user001，パスワード=test1を入力した場合だけ，test1/index.htmlおよびtest1/test12/index.htmlへのアクセスを許可します。

 AuthUserFile C:/user001/public_html/test1/.htpasswd      …1.
 AuthName "test1 Directory"                               …2.
 AuthType Basic
 <Limit GET POST>                                         …3.
    Require user user001                                  …4.
 </Limit>

パスワードファイルの定義

パスワードファイルに登録しているユーザ名とパスワード

ユーザ名：user001，パスワード：test1

realm名の定義

メソッドに対する定義

ユーザ名：user001のアクセスを許可

test1/test11ディレクトリ下のアクセス権の定義（test1/test11/.htaccessファイル）

ユーザ名=user001，パスワード=test11を入力した場合だけ，test1/test11/index.htmlへのアクセスを許可します。

 AuthUserFile C:/user001/public_html/test1/test11/.htpasswd      …1.
 AuthName "test11 Directory"                                     …2.
 AuthType Basic
 <Limit GET POST>                                                …3.
    Require user user001                                         …4.
 </Limit>

パスワードファイルの定義

パスワードファイルに登録しているユーザ名とパスワード

ユーザ名：user001，パスワード：test11

realm名の定義

メソッドに対する定義

ユーザ名：user001のアクセスを許可

test1/test12/test121ディレクトリ下のアクセス権の定義（test1/test12/test121/.htaccessファイル）

ユーザ名=user001，パスワード=test1を入力し，WebブラウザがMSIEの場合だけ，test1/test12/test121/index.htmlへのアクセスを許可します。

 Order deny,allow      …1.
 Allow from env=MSIE   …2.
 Deny from all         …3.

アクセス拒否の定義を先に評価

WebブラウザがMSIEの場合，アクセスを許可

すべてのホストからのアクセスを拒否

ただし，httpsd.confに次のディレクティブを定義しているものとします。

SetEnvIf User-Agent ".*MSIE.*" MSIE

test2ディレクトリ下のアクセス権の定義（test2/.htaccessファイル）

mygroupグループのユーザ名，パスワードを入力した場合だけ，test2/index.htmlへのアクセスを許可します。

 AuthUserFile C:/user001/public_html/test2/.htpasswd        …1.
 AuthGroupFile C:/user001/public_html/test2/.groupfile      …2.
 AuthName "test2 Directory"                                 …3.
 AuthType Basic
 <Limit GET POST>                                           …4.
    Require group mygroup                                   …5.
 </Limit>

パスワードファイルの定義

パスワードファイルに登録しているユーザ名とパスワード

ユーザ名：user001，パスワード：test21

ユーザ名：user002，パスワード：test22

ユーザ名：user003，パスワード：test23

グループファイルの定義

グループファイルに登録しているグループ名

グループ名：mygroup

mygroupに登録しているユーザ名：user001，user002，user003

realm名の定義

メソッドに対する定義

グループ名：mygroupのアクセスを許可

4.6　ファイル名一覧の表示

ディレクトリ内のファイル名一覧をWebブラウザに表示する機能をディレクトリインデクスといいます。ディレクトリインデクス機能を有効にするには次に示すディレクティブを定義します。

Options +Indexes

このとき，すべてのファイルを表示させることはセキュリティ上危険です。IndexIgnoreディレクティブでインデクス表示させないファイルを指定する必要があります。

ただし，Options +Indexesを指定していても，DirectoryIndexディレクティブに指定しているファイル（デフォルトはindex.htmlファイル）がそのディレクトリ下にある場合は，その指定されているファイルが表示されます。

さらに，ディレクトリインデクスを整形表示する場合は，次のディレクティブを指定します。

IndexOptions +FancyIndexing

整形表示機能の詳細設定はIndexOptionsディレクティブ，AddIconディレクティブで指定します。ディレクトリインデクス機能で表示される画面と，各ディレクティブで設定する内容を次に示します。

図4‒7　整形表示機能についての定義内容

なお，マルチバイト文字列を含むファイル名の表示はできません。

また，HeaderNameディレクティブおよびReadmeNameディレクティブで指定したファイルで使用している文字セットが，デフォルトの文字セット（UNIX版：ISO-8859-1，Windows版：UTF-8）と異なる場合は，ディレクトリインデクス表示で文字化けが発生します。この場合，IndexOptionsディレクティブのCharsetオプションで，HeaderNameディレクティブやReadmeNameディレクティブで指定したファイルで使用している文字セットを指定してください。

4.7　リバースプロキシの設定

直接インターネットに接続できないクライアントからのリクエストをクライアントに代わってWebサーバに送信する代行サーバをプロキシサーバといいます。通常，プロキシサーバは，クライアントとインターネットとの接点に設置されます。これに対し，インターネットとWebサーバとの接点にプロキシサーバを設置した場合をリバースプロキシといいます。リバースプロキシでは，クライアントからのリクエストをWebサーバに代わってプロキシサーバが処理します。

通常のプロキシサーバとリバースプロキシの相違を次に示します。

図4‒8　通常のプロキシサーバとリバースプロキシの相違

リバースプロキシを使用してできることを次に示します。

コンテンツへの直接アクセスを防止できます。

Webサーバに重要な情報（クレジットカード番号のデータベースなど）を保持している場合，リバースプロキシとWebサーバを別のマシンに設定し，悪意のあるアクセスからWebサーバを守り，情報の漏えいを防げます。

プロキシサーバに負荷の高いSSL処理を集約できます。

リバースプロキシを使用し，SSLの処理を別のマシンですれば，Webサーバに掛かる負荷を分散できます。

クライアントに影響を与えないで，Webサーバを分割できます。

Webサーバを分割した場合でも，リバースプロキシが代行するので，クライアントは分割前と同じインタフェースでアクセスできます。

4.7.1　プロキシモジュールの組み込み

リバースプロキシを使用するためにはプロキシモジュールの組み込みが必要です。プロキシモジュールを組み込むには，コンフィグファイル（httpsd.conf）に次に示すディレクティブを指定します。UNIX版の場合は，必ず次に示す順序でLoadModuleディレクティブを指定してください。

UNIX版

LoadModule proxy_module libexec/mod_proxy.so
LoadModule proxy_http_module libexec/mod_proxy_http.so※1
LoadModule proxy_http2_module libexec/mod_proxy_http2.so※2

Windows版

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so※1
LoadModule proxy_http2_module modules/mod_proxy_http2.so※2

注※1

バックエンドサーバとの通信でHTTP/1.1を使用する場合に必要となります。

注※2

バックエンドサーバとの通信でHTTP/2を使用する場合に必要となります。

4.7.2　ディレクティブの設定方法

リバースプロキシを設定する各ディレクティブの設定例を次に示します。

ここではHTTP/1.1を使用するものとし，各アドレスを次のように仮定しています。

リバースプロキシ：www.example.com

バックエンドサーバ：backend.example.com

(1)　リクエストURLの再割り当ておよびリクエストヘッダの再割り当て

次のようにProxyPassディレクティブを設定すると，クライアントからの"http://www.example.com/news/oct-2001"というリクエストは"http://backend.example.com/oct-2001"というリクエストに変更されます。

ProxyPass /news/ http://backend.example.com/

Host:ヘッダは"Host:www.example.com"から"Host:backend.example.com"に再割り当てします。そして，リバースプロキシはバックエンドサーバからのレスポンスをクライアントに応答します。

(2)　応答ヘッダの再割り当て

Redirectディレクティブの指定，イメージマップの利用または末尾を/（スラッシュ）で閉じないディレクトリ指定のリクエストなど，バックエンドサーバでリダイレクトが指示された場合には，バックエンドサーバからのレスポンスのLocationヘッダにバックエンドサーバのアドレスが記載されます。これをそのままクライアントに応答すると，クライアントはリダイレクトをリバースプロキシではなく，直接バックエンドサーバにリクエストします。そこで，ProxyPassReverseディレクティブに次のように指定し，リダイレクトリクエストもリバースプロキシを通るリクエストになるようにします。

ProxyPassReverse /news/ http://backend.example.com/

これで，Locationヘッダはリバースプロキシのアドレスに変更されます。

(3)　Set-Cookieヘッダの再割り当て

バックエンドサーバがクライアントに返すSet-Cookieヘッダには，ドメイン名およびパス名が指定される場合があります。これは，Set-Cookieヘッダのドメイン名およびパス名に一致したリクエストの場合だけ，クライアントにクッキーを送信させるためです。

Set-Cookieヘッダの再割り当てをしない場合と再割り当てをする場合について説明します。

Set-Cookieヘッダの再割り当てをしない例

バックエンドサーバが応答したドメイン名およびパス名を含むSet-Cookieヘッダをリバースプロキシがそのままクライアントに応答する例を次の図に示します。なお，図中の数字は，説明文の項番と対応しています。

図4‒9　Set-Cookieヘッダの再割り当てをしない例

クライアントからリバースプロキシに対して，http://www.example.com/front/cgi-bin/test-cgi.plがリクエストされます。

リバースプロキシは，URLを変換してバックエンドサーバへ転送します。

リバースプロキシは，バックエンドサーバからドメイン名domain=backend.example.com，パス名path=/cgi-bin/のSet-Cookieヘッダを受信します。

リバースプロキシは，バックエンドサーバから受信したSet-Cookieヘッダをそのままクライアントに返します。

この場合，クライアントはリバースプロキシを経由する/front/cgi-bin/以下へのリクエストについて，Set-Cookieヘッダで受信したクッキーを送信しません。これは，クライアントが受信したSet-Cookieヘッダのドメイン名backend.example.comが，リバースプロキシのドメイン名www.example.comと異なるためです。また，パス名についても同様に適合しません。

Set-Cookieヘッダの再割り当てをする例

バックエンドサーバがSet-Cookieヘッダで応答したクッキーをクライアントから受け取るためには， HWSProxyPassReverseCookieディレクティブの指定が必要です。HWSProxyPassReverseCookieディレクティブを指定してSet-Cookieヘッダの再割り当てをする例を次の図に示します。なお，図中の数字は，説明文の項番と対応しています。

図4‒10　Set-Cookieヘッダの再割り当てをする例

クライアントからリバースプロキシに対して，http://www.example.com/front/cgi-bin/test-cgi.plがリクエストされます。

リバースプロキシは，URLを変換してバックエンドサーバへ転送します。

リバースプロキシは，バックエンドサーバからドメイン名domain=backend.example.com，パス名path=/cgi-bin/のSet-Cookieヘッダを受信します。

リバースプロキシは，再割り当てしたSet-Cookieヘッダをクライアントに返します。

この場合，クライアントはリクエストURLのパス部分/front/cgi-bin/test-cgi.plに対して，前方一致するパス名/front/cgi-bin/のSet-Cookieヘッダを受信します。また，クライアントが受信するSet-Cookieヘッダにはドメイン名が含まれていません。これは，クライアントがリクエストしたURLのドメイン名www.example.com がSet-Cookieヘッダに指定されている場合と同じ意味となります。したがって，リバースプロキシを経由したバックエンドサーバへのリクエストに，Set-Cookieヘッダで設定したクッキーを送信させることができます。

4.7.3　システム構築例

リバースプロキシとバックエンドサーバにHTTP Serverを使用してシステムを構築する場合の設定例を次に示します。

システムの構築時には，リダイレクト処理に注意して設定する必要があります。バックエンドサーバ上のディレクトリに対し，URLの最後に/ (スラッシュ)を付けないでアクセスした場合，バックエンドサーバはLocationヘッダを付加したリダイレクト要求を返信します。このとき，Locationヘッダの値をバックエンドサーバのアドレスからリバースプロキシのアドレスに変換し，クライアントの再要求先をリバースプロキシ経由に変更する必要があります。

ここでは，システムのネットワーク構成を図4-10のように仮定しています。また各アドレスを次のように仮定しています。

リバースプロキシ：www.example.com

バックエンドサーバ：backend.example.com

図4‒11　ネットワーク構成

(1)　推奨する構成

ProxyPassディレクティブに指定するホスト名，パス名と，ProxyPassReverseディレクティブに指定するホスト名，パス名は同一の値としてください。また，バックエンドサーバ側のすべてのバーチャルホストでServerNameディレクティブを指定し，その値はリバースプロキシ側のProxyPassReverseディレクティブに設定したホスト名と同一にしてください。

図4-10に示すネットワーク構成で，リバースプロキシおよびバックエンドサーバの設定を表4-6のようにした場合のリダイレクト処理の流れは，表4-7のようになります。

表4‒6　推奨する構成の設定例

設定場所

設定内容

リバースプロキシ

ServerName www.example.com

ProxyPass /before/ http://backend.example.com/after/

ProxyPassReverse /before/ http://backend.example.com/after/

バックエンドサーバ

ServerName backend.example.com

表4‒7　推奨する構成でのリダイレクト処理の流れ

図中の位置

説明

1

"http://www.example.com/before/dir"にアクセスします。

2

ProxyPassディレクティブの値に従い，"http://backend.example.com/after/dir"にアクセスします。また，Hostヘッダの値をbackend.example.comに書き換えて転送します。

3

URLの末尾に /（スラッシュ）が付いていないため，URLの末尾に/ (スラッシュ) を付けたURLを作成し，それをLocationヘッダに設定してリダイレクト要求を返します。

4

ProxyPassReverseディレクティブの値に従い，Locationヘッダを"http://www.example.com/before/dir/"に書き換えて転送します。

5

Locationヘッダに従い，"http://www.example.com/before/dir/"に改めてアクセスします。

A

Hostヘッダの値は"www.example.com"です。

B

Hostヘッダの値は"backend.example.com"です。

C

Locationヘッダの値は"http://backend.example.com/after/dir/"です。

D

Locationヘッダの値は"http://www.example.com/before/dir/"です。

注

バックエンドサーバからの応答がステータスコード（302 Foundや404 Not Foundなど）になった場合，リバースプロキシはそのHTMLドキュメントをそのままクライアントに転送します。「404 Not Found」などのHTMLドキュメントに記載されるバックエンドサーバ名や，「302 Found」などに記載されるリダイレクト先のリンクアドレスはリバースプロキシの情報に変更されません。バックエンドサーバ側でErrorDocumentディレクティブを使用またはリバースプロキシ側でProxyErrorOverrideディレクティブを使用して，バックエンドサーバの情報をクライアントに見せないようにしてください。

(2)　リバースプロキシ側でProxyPreserveHostディレクティブにOnを設定する構成

通常，リバースプロキシはクライアントから受信したHostヘッダの値をProxyPassディレクティブの値に従って変更し，バックエンドサーバに転送します。クライアントが送信したHostヘッダの値をバックエンドサーバ側でもHostヘッダの値として取得したい場合は，リバースプロキシ側でProxyPreserveHostディレクティブの値をOnに設定します。このとき，次の点に注意してください。

バックエンドサーバ側のServerNameディレクティブには，リバースプロキシのServerNameと同じ値を指定してください。

ProxyPassReverseディレクティブに設定するホスト名は，リバースプロキシおよびバックエンドサーバのServerNameと同じ値にしてください。

図4-10に示すネットワーク構成で，リバースプロキシおよびバックエンドサーバの設定を表4-8のようにした場合のリダイレクト処理の流れは表4-9のようになります。

表4‒8　リバースプロキシ側でProxyPreserveHostにOnを設定する構成の設定例

設定場所

設定内容

リバースプロキシ

ServerName www.example.com

ProxyPass /before/ http://backend.example.com/after/

ProxyPassReverse /before/ http://www.example.com/after/

ProxyPreserveHost On

バックエンドサーバ

ServerName www.example.com

表4‒9　リバースプロキシ側でProxyPreserveHostにOnを設定する構成でのリダイレクト処理の流れ

図中の位置

説明

1

"http://www.example.com/before/dir"にアクセスします。

2

ProxyPassディレクティブの値に従い，"http://backend.example.com/after/dir"にアクセスします。また，ProxyPreserveHostディレクティブの値がOnに設定されているため，Hostヘッダの値はwww.example.comのままです。

3

URLの末尾に /（スラッシュ）が付いていないため，URLの末尾に/ (スラッシュ) を付けたURLを作成し，それをLocationヘッダに設定してリダイレクト要求を返します。

4

ProxyPassReverseディレクティブの値に従い，Locationヘッダを"http://www.example.com/before/dir/"に書き換えて転送します。

5

Locationヘッダに従い，"http://www.example.com/before/dir/"に改めてアクセスします。

A

Hostヘッダの値は"www.example.com"です。

B

Hostヘッダの値は"www.example.com"です。

C

Locationヘッダの値は"http://www.example.com/after/dir/"です。

D

Locationヘッダの値は"http://www.example.com/before/dir/"です。

4.7.4　注意事項

(1)　基本的な注意事項

リバースプロキシはリクエストURLのパターンによって機能を設定します。このため，特定のリクエストはリバースプロキシとしてほかのバックエンドサーバに転送，それ以外のリクエストはリバースプロキシ自身がWebサーバとして応答するという設定もできます。しかし，このような設定は，リクエストがリバースプロキシかWebサーバかどちらで処理したかがわかりにくくなります。したがって，リバースプロキシを使用する場合は次のような設定にして，すべてのリクエストをリバースプロキシからバックエンドサーバへ転送することを推奨します。

ProxyPass / http://転送先バックエンドサーバアドレス/

リバースプロキシとWebサーバを共用する場合は，バーチャルホストで機能を分けた運用ができます。

リバースプロキシでは，クライアントから受信したHostヘッダの値をX-Forwarded-Hostヘッダに格納し，Hostヘッダの値をProxyPassディレクティブの指定値に変換してバックエンドサーバへ転送します。このため，バックエンドサーバ側のアプリケーションでクライアントが送信したHostヘッダの値を参照する場合は，リバースプロキシが送信したX-Forwarded-Hostヘッダの値を参照してください。ただし，ProxyPreserveHostディレクティブの値にOnを設定している場合は，リバースプロキシが送信したHostヘッダの値をそのまま参照してください。

リバースプロキシを経由してバックエンドサーバにアクセスする場合，バックエンドサーバが提供するHTMLコンテンツでのリンク先は，バックエンドサーバ上のURLではなく，リバースプロキシにアクセスされるURLを指定する必要があります。このほか，画像やスタイルシートなどのコンテンツの参照先URLを記述する場合も同じように注意が必要です。

（例）

次の状態にあるときに，index.htmlからindex2.htmlへリンクを張るとします。

リバースプロキシ側でProxyPassディレクティブの値が /before/ http://バックエンドサーバのアドレス/after/ と指定されている。

バックエンドサーバ側でindex.htmlとindex2.htmlが同じディレクトリ内（/after/以下）に存在する。

この場合のindex.htmlの記述方法とアクセス可否の関係を次に示します。

表4‒10　リンクの記述方法とリンク可否の関係

リンクの記述

リンクをクリックしたときのアクセス可否

<A HREF="index2.html">リンク</A>

○

<A HREF="/before/index2.html">リンク</A>

○

<A HREF="http://リバースプロキシのアドレス/before/index2.html">リンク</A>

○

<A HREF="/after/index2.html">リンク</A>

×

リバースプロキシは，HTTPバージョン0.9をサポートしていません。

11-20以降では，CustomLogディレクティブで指定するログのフォーマットで%{header_name}iを指定した場合，リバースプロキシで付加するリクエストヘッダはログに出力されません。詳細は「付録C　旧バージョンからの移行に関する注意点」を参照してください。

リバースプロキシでは，クライアントからリクエスト受信時の送信元IPアドレスをX-Forwarded-Forヘッダに格納し，バックエンドサーバへ転送します。このため，バックエンドサーバ側のアプリケーションでクライアントの送信元IPアドレスを参照する場合は，リバースプロキシが送信したX-Forwarded-Forヘッダを参照してください。

リバースプロキシでは，バックエンドサーバに接続したコネクションを維持したまま再利用する，コネクションプール方式を採用しています。

(2)　ProxyPassディレクティブに関する注意事項

ProxyPassディレクティブで指定するパス名とリクエストURLは完全に等しいか，パス名がリクエストURLの先頭から含まれていれば，適合と判断します。

ただし，パス名の終端が/（スラッシュ）でない場合，リクエストURLと完全に等しいかまたは先頭からディレクトリとして含まれていれば適合と判断します。

適合すると，ProxyPassディレクティブに指定したパス名にリクエストURLの先頭からパス名と等しい部分を除いた残りの部分を追加してリクエストを転送します。

ProxyPassディレクティブに指定するパス名は終端を/（スラッシュ）で閉じたものを指定してください。次にProxyPassディレクティブの指定とリクエストの関係を次に示します。

表4‒11　ProxyPassディレクティブの指定とリクエストの関係

ProxyPassディレクティブの指定例

リクエスト

適合可否

リクエスト転送先

ProxyPass /abc/ http://backend.example.com/

http://リバースプロキシのアドレス/abc/

○

http://backend.example.com/

http://リバースプロキシのアドレス/abc

×

−

http://リバースプロキシのアドレス/abc/def

○

http://backend.example.com/def

ProxyPass /abc http://backend.example.com/

http://リバースプロキシのアドレス/abc

○

http://backend.example.com/

http://リバースプロキシのアドレス/abc/

○

http://backend.example.com//

http://リバースプロキシのアドレス/abc/def

○

http://backend.example.com//def

（凡例）

○：適合する。

×：適合しない。

−：該当しない。

ProxyPassディレクティブを複数指定し，リクエストURLが複数のパス名に一致した場合，先に指定したProxyPassディレクティブが有効になります。

（例）

/abc/def/へのリクエストを処理するバックエンドサーバ：backend1.example.com

/abc/def/以外の/abc/へのリクエストを処理するバックエンドサーバ：backend2.example.com

ほかのすべてのリクエストを処理するバックエンドサーバ：backend3.example.com

このように設定するには次の順序で指定してください。

ProxyPass /abc/def/ http://backend1.example.com/
ProxyPass /abc/ http://backend2.example.com/
ProxyPass / http://backend3.example.com/

ProxyPassディレクティブの指定によるリクエストURLはWebサーバの機能である自プロセス内の該当ファイルの検索より先に転送します。したがって，リクエストURLに適合するファイルがある場合でも，ProxyPassディレクティブのパス名に適合すれば，バックエンドサーバへのリクエストに変換して転送します。

/（スラッシュ）で閉じていないディレクトリを指定したリクエストURLの場合，リバースプロキシではリダイレクトを応答しません。

（例）ProxyPass /ab/ http://backend.example.com/　の場合

リクエストがhttp://リバースプロキシのアドレス/abのとき，適合していないと判断して，リバースプロキシ内に/abがなければ，「404 Not Found」を返します。

ProxyPassディレクティブの転送先URLが，先に定義しているProxyPassディレクティブの転送先URLに含まれる場合，それらのProxyPassディレクティブはキーで指定された値を共有します。そのため，あとで定義しているProxyPassディレクティブではキーの値を指定できません。

（例）

ProxyPass /test1/ http://backend.example.com:81/AAA/                   …  1.
ProxyPass /test2/ http://backend.example.com:81/AAA/BBB/  timeout=10   …  2.

2.のProxyPassディレクティブの転送先URLは，1.の転送先URLに含まれるため，1.と2.はキーで指定された値を共有しています。あとで指定した2.ではキーの値を指定できません。

(3)　ProxyPassReverseディレクティブに関する注意事項

ProxyPassReverseディレクティブに指定したURLとバックエンドサーバから受信したLocationヘッダの値は，完全に等しいかまたはURLがリクエストURLの先頭から含まれていれば，適合と判断します。適合すると，アドレスをリバースプロキシとして，ProxyPassReverseディレクティブの指定に従って，クライアントに送信します。

（例）バックエンドサーバからの応答のLocationヘッダが，Location: http://バックエンドサーバのアドレス/docs/memo/の場合

ProxyPassReverseディレクティブの指定が，

ProxyPassReverse /path/ http://バックエンドサーバのアドレス/docs/

と指定されていれば，クライアントに返すLocationヘッダは

Location: http://リバースプロキシのアドレス/path/memo/

となります。

ProxyPassReverseディレクティブを複数指定した場合，先に指定した方が有効になります。

リバースプロキシがProxyPassReverseディレクティブの設定値に従ってLocationヘッダの値を変換してクライアントに転送する際，Locationヘッダの値のスキームは現在のコネクションで使用しているものを設定します。例えば，httpでアクセスしている場合，httpを設定します。このため，httpでアクセスしている場合にLocationヘッダでhttpsにリダイレクトさせるときは，バックエンドサーバ側でリバースプロキシのホスト名をLocationヘッダの値に設定しておくなどしてProxyPassReverseディレクティブの値と一致しないようにしてください。

(4)　HWSProxyPassReverseCookieディレクティブに関する注意事項

HWSProxyPassReverseCookieディレクティブは，バックエンドサーバが応答したSet-Cookieヘッダを変換する場合に指定します。HWSProxyPassReverseCookieディレクティブに，ProxyPassディレクティブのパス名と同じ値を指定することで，ProxyPassディレクティブ単位に設定できます。

リバースプロキシのディレクティブ指定が次のような場合のSet-Cookieヘッダの変換規則について説明します。

ProxyPass /front/ http://backend.example.com/
HWSProxyPassReverseCookie /front/

表4‒12　Set-Cookieヘッダの変換規則

項番

クライアントに応答するSet-Cookieヘッダ

バックエンドサーバが応答するSet-Cookieヘッダ

変換規則の説明

1

Set-Cookie: 〜; path=/front/

Set-Cookie: 〜; path=/

バックエンドサーバが応答するSet-Cookieヘッダにドメイン名が指定されていない場合は，Set-Cookieヘッダのパス名/（スラッシュ）を/front/に置き換えます。

2

Set-Cookie: 〜; path=/front/

Set-Cookie: 〜; domain=backend.example.com; path=/

バックエンドサーバが応答するSet-Cookieヘッダのドメイン名が，ProxyPassディレクティブで指定した転送先URLのドメイン名と完全に一致している場合は，Set-Cookieヘッダのパス名/（スラッシュ）を/front/に置き換えます。また，Set-Cookieヘッダのドメイン名を削除してクライアントに返します。

3

Set-Cookie: 〜; domain=.example.com; path=/

Set-Cookie: 〜; domain=.example.com; path=/

バックエンドサーバが応答するSet-Cookieヘッダのドメイン名が，.（ピリオド）から始まるドメイン名である場合は，バックエンドサーバが応答したSet-Cookieヘッダをそのままクライアントに返します。

4

Set-Cookie: 〜; domain=other.example.com; path=/

Set-Cookie: 〜; domain=other.example.com; path=/

バックエンドサーバが応答するSet-Cookieヘッダのドメイン名がProxyPassディレクティブで指定した転送先URLのドメイン名と異なる場合は，バックエンドサーバが応答したSet-Cookieヘッダをそのままクライアントに返します。

5

Set-Cookie: 〜

Set-Cookie: 〜

バックエンドサーバが応答するSet-Cookieヘッダにドメイン名およびパス名が指定されていない場合は，バックエンドサーバが応答したSet-Cookieヘッダをそのままクライアントに返します。

リバースプロキシのディレクティブ指定が次の場合に，バックエンドサーバが応答したSet-Cookieヘッダのパス名を変換する規則について説明します。

ProxyPass /front/ http://backend.example.com/abc/def/
HWSProxyPassReverseCookie /front/

バックエンドサーバが返すSet-Cookieヘッダのパス名が/abc/def/ghi/の場合

ProxyPassディレクティブの転送先URLのパス名部分が，Set-Cookieヘッダのパス名に前方から一致する場合は，一致したパス名部分をProxyPassディレクティブのパス名で置き換えます。

バックエンドサーバが返すSet-Cookieヘッダのパス名が/abc/の場合

Set-Cookieヘッダのパス名が，ProxyPassディレクティブの転送先URLのパス名部分に前方から一致する場合は，Set-Cookieヘッダのパス名としてProxyPassディレクティブのパス名で置き換えます。

バックエンドサーバが返すSet-Cookieヘッダのパス名が/abc/xxx/の場合

ProxyPassディレクティブの転送先URLのパス名部分とSet-Cookieヘッダのパス名が一致しない場合は，リバースプロキシでのSet-Cookieヘッダ変換は実行しません。バックエンドサーバが応答したSet-Cookieヘッダをそのままクライアントに返します。

(5)　性能に関する注意事項

ProxyPassディレクティブにドメイン名またはホスト名を指定している場合，DNSへの問い合わせが発生します。バックエンドサーバのIPアドレスがわかっている場合は，hostsファイルにあらかじめIPアドレスを記載しておくことによって，名前解決の時間を短縮できます。

バックエンドサーバとの最大コネクション数は次の計算式で表されます。

バックエンドサーバがCosminexusのNIO HTTPサーバの場合，バックエンドサーバとの最大コネクション数以上の値をwebserver.connector.nio_http.max_connectionsキーに設定してください。

Windowsの場合

最大コネクション数＝（ThreadsPerChildディレクティブ値
                       + H2MaxWorkersディレクティブ値※1）
                        ×ProxyPassディレクティブの定義数※2

UNIXの場合

最大コネクション数＝（MaxClientsディレクティブ値
                       + H2MaxWorkersディレクティブ値※1
                        × ServerLimitディレクティブ値）
                          ×ProxyPassディレクティブの定義数※2

注※1

HTTP/2通信を使用しない場合は0とする。

注※2

ほかのProxyPassと設定を共有しているものは除く。

4.8　稼働状況の表示（ステータス情報表示）

稼働中のプロセス数，待機中のプロセス数および各プロセスのステータス（R，W，Lなど）をWebブラウザに表示します（Windows版の場合はサーバスレッド数）。この情報を基に，StartServers，MinSpareServers，MaxSpareServers，MaxClientsディレクティブなどをチューニングできます（Windows版の場合はThreadsPerChildディレクティブ）。各ディレクティブの詳細は，「4.1　HTTP Serverの処理とディレクティブとの関係」を参照してください。

ExtendedStatusディレクティブでOnを指定すると，より詳細な情報が表示されます。

4.8.1　server-statusハンドラの指定

ステータス情報の表示機能を利用するには，次に示すようにserver-statusハンドラを指定します。

<Location /server-status>
      SetHandler server-status
</Location>

ただし，Webサーバのステータス情報はアクセス制御して，エンドユーザには非公開にするのが一般的です。

4.8.2　URLの指定

ステータス情報を表示するには，Webブラウザから次に示す形式でURLを指定します。なお，server-statusは，タイミングによって一時的に正しく表示されない場合があります。

http://ホスト名〔:ポート番号〕/server-status〔?｛refresh=更新間隔｜auto｜notable｝〕

refresh=更新間隔，auto，notableはそれぞれ&でつないで指定できます。ただし，autoはプレーンテキスト形式であるため，notableと同時に指定するのは意味がありません。

refresh=更新間隔　((1-3600))

Webブラウザ上のステータス情報を更新する間隔を秒単位で指定します。ただし，WebブラウザがHTTPレスポンスヘッダのRefreshヘッダに対応した機能をサポートしている必要があります。指定可能範囲外の値が指定された場合は60秒が設定されます。

auto

プレーンテキスト形式で表示します。プレーンテキスト形式のため，ほかのプログラムで容易に処理できます。

notable

<TABLE>タグを用いないHTMLでステータス情報を表示します。

＜指定例＞

http://www.example.com/server-status?refresh=60&notable

＜表示例＞

http://www.example.com/server-status

このように指定した場合の，ステータス情報の表示例を次に示します。表示形式は，UNIX版とWindows版で若干異なります。

図4‒12　ステータス情報の表示例

4.8.3　取得できる情報

ステータス情報の表示機能で取得できる情報を次に示します。ExtendedStatusディレクティブでOnを指定すると，詳細な情報を取得できます。

表4‒13　ステータス情報の表示機能で取得できる情報（auto指定がない場合）

項番

内容

説明

ExtendedStatusの値と取得可否

Off

On

1

Server Version

サーバのバージョン

○

○

2

Server MPM

サーバで動作しているMPM

○

○

3

Server Built

サーバのビルド時間

○

○

4

Current Time

現在時刻

○

○

5

Restart Time

起動時刻

○

○

6

Parent Server MPM Generation

サーバプロセスの再起動回数（初期値0）

○

○

7

Server uptime

サーバプロセスの稼働時間

○

○

8

Total accesses

合計アクセス回数

×

○

9

Total Traffic

合計通信量

×

○

10

CPU Usage: u vvv s www cu xxx cs yyy - zzz% CPU load

ユーザ時間，システム時間，子プロセスのユーザ時間，子プロセスのシステム時間，CPU使用率（UNIX版）

×

○

11

xxx requests/sec - yyy B/second - zzz B/request

1秒当たりのリクエスト数，

1秒当たりの通信量，

1リクエスト当たりの通信量

×

○

12

xxx requests currently being processed, yyy idle workers

リクエスト処理中のサーバプロセス（スレッド）数，

リクエスト待ち状態のサーバプロセス（スレッド）数

○

○

13

スコアボード

個々のスレッドの動作状況

○

○

14

Scoreboard Key

スコアボードの凡例

○

○

15

PID Key

個々のスレッドのサーバプロセスIDと動作状況

○

×

16

Srv

サーバプロセスの識別子と再起動回数

×

○

17

PID

プロセスID

×

○

18

Acc

アクセス数（コネクション単位/スレッド単位/スロット単位）

×

○

19

M

動作状況

×

○

20

CPU

CPU時間（秒）（UNIX版）

×

○

21

SS

最後の処理開始からの経過秒

×

○

22

Req

最後の処理に要したミリ秒

×

○

23

Conn

コネクションに対する通信量

×

○

24

Child

プロセスの通信量

×

○

25

Slot

スロットの通信量

×

○

26

Client

最後の処理のクライアント

×

○

27

VHost

バーチャルホスト名

×

○

28

Request

最後の処理のリクエストライン

（HTTP/2通信の場合はHTTP/2セッション情報も表示）

×

○

（凡例）

○：取得できる。

×：取得できない。

表4‒14　ステータス情報の表示機能で取得できる情報（auto指定がある場合）

項番

内容

説明

ExtendedStatusの値と取得可否

Off

On

1

Total accesses

合計アクセス回数

×

○

2

Total kBytes

合計通信量

×

○

3

CPULoad

CPU使用率（UNIX版）

×

○

4

Uptime

サーバプロセスの稼働時間（秒）

×

○

5

ReqPerSec

1秒当たりのリクエスト数

×

○

6

BytesPerSec

1秒当たりの通信量

×

○

7

BytesPerReq

1リクエスト当たりの通信量

×

○

8

BusyWorkers

リクエスト処理中のサーバプロセス（スレッド）数

○

○

9

IdleWorkers

リクエスト待ち状態のサーバプロセス（スレッド）数

○

○

10

スコアボード

個々のスレッドの動作状況

○

○

（凡例）

○：取得できる。

×：取得できない。

4.8.4　注意事項

サーバステータス表示機能で表示される「Current Time」および「Restart Time」のタイムゾーンの情報に，マルチバイト文字が設定されることがあります。このとき，HTTP Serverでは，これらの文字列をすべてエスケープ（「¥x」から始まる接頭辞と16進コードで構成される文字列に置換）します。

4.9　流量制限機能

Webサーバへのアクセスの増加や，業務アプリケーションなどの影響でWebサーバの負荷が高くなった場合に，Webサイトにアクセスするユーザ数を制限するなどして，Webサービスの処理効率を維持する機能を流量制限機能といいます。

HTTP Serverにmod_hws_qosモジュールを組み込めば，流量制限機能を使用できます。流量制限機能を使用すると，次に示すことができます。なお，以降の記述の「サーバプロセス数」は，UNIX版のworker MPMモジュールの場合およびWindows版の場合「サーバスレッド数」のことです。

リクエスト処理を実施するサーバプロセス数を制限すれば，Webサイトに同時にアクセスするユーザ数を制限できます。高負荷時には，制限値を超えたリクエストに対してすぐに拒否レスポンスを返したり，ほかのWebサーバへリダイレクトさせたりすれば，レスポンスタイムを維持できます。

クッキーを使用したセション管理によって，高負荷時，新しいセションを拒否し，すでにアクセスしているユーザのレスポンスタイムを維持できます。

十分なWebサービスを提供するには，同時にアクセスするユーザ数を満たすだけのサーバプロセス数が必要です。Webサーバが1台で不十分なら，複数台用意し，負荷分散機でアクセスを分散させるなどしてWebサービスを保証できるように運用設計してください。

このようにWebサービスの資源を用意しても，一時的に過負荷状態が発生する場合に備えて，流量制限機能を使用してください。mod_hws_qosによる流量制限機能の概要を次に示します。

図4‒13　mod_hws_qosによる流量制限機能の概要

4.9.1　mod_hws_qosモジュールの組み込み

流量制限機能を使用するためにはmod_hws_qosモジュールの組み込みが必要です。mod_hws_qosモジュールを組み込むには，コンフィグファイル（httpsd.conf）に次に示すディレクティブを指定します。

UNIX版

LoadModule hws_qos libexec/mod_hws_qos.so

Windows版

LoadModule hws_qos modules/mod_hws_qos.so

4.9.2　ディレクティブの設定方法

流量制限機能を使用するための，各ディレクティブの設定例を次に示します。

(1)　サーバプロセス数（サーバスレッド数）の制限によるリクエスト拒否

次のように指定すると，リクエスト処理中のサーバプロセス数（サーバスレッド数）が13の場合には，新たなリクエスト要求はステータスコード503で拒否されます。

UNIX版

MaxClients 15
QOSRejectionServers 2
QOSCookieServers 0

Windows版

ThreadsPerChild 15
QOSRejectionServers 2
QOSCookieServers 0

(2)　クッキーを使用したセション管理

クッキーを使用したセション管理には，HTTP Serverで作成したクッキーを使用するHWS作成モードと，HTTP Server以外の外部モジュールなどで作成されたクッキーを使用するユーザ作成モードがあります。QOSCookieNameディレクティブを用いて，どちらの方式を使用するかを選択します。QOSCookieNameディレクティブの詳細については，「6.2　ディレクティブの詳細」を参照してください。

HWS作成モード

リクエスト処理を実施した場合には，HTTP Serverで作成したクッキーが，レスポンスヘッダのSet-Cookieヘッダに付けられます。HTTP Serverで作成したクッキーを持ったリクエスト要求は，持っていないリクエスト要求よりも優先して処理されます。

ユーザ作成モード

HTTP Server以外で作成されたクッキーがレスポンスヘッダのSet-Cookieヘッダに付けられる場合に，そのクッキーを使用した流量制限が実行されます。そのクッキーを持ったリクエスト要求は，持っていないリクエスト要求よりも優先して処理されます。

次のように指定すると，リクエスト処理中のサーバスレッド数が10の場合，クッキーを持っていない新しいセションのリクエスト要求は拒否されますが，クッキーを持った継続セションは処理されます。リクエスト処理中のサーバスレッド数が13の場合は，クッキーを持っているかどうかに関係なく拒否されます。この例ではHWS作成モードで動作します。

UNIX版

MaxClients 15
QOSRejectionServers 2
QOSCookieServers 5

Windows版

ThreadsPerChild 15
QOSRejectionServers 2
QOSCookieServers 5

(3)　リダイレクト

流量制限機能によってリクエスト処理を拒否する場合には，ステータスコード503でレスポンスメッセージを返送しますが，次のように指定すると，ほかのWebサーバへリダイレクトさせることができます。/index.htmlへのリクエスト要求が流量制限機能によって拒否された場合には，www1.hitachi.co.jpのWebサーバのindex.htmlをレスポンスヘッダに設定し，ステータスコード302で返送されます。

QOSRedirect /index.html http://www1.hitachi.co.jp/index.html

(4)　レスポンスメッセージのカスタマイズ

次のように指定すると，拒否されたリクエストに対するレスポンスは，ステータスコード503で，レスポンスメッセージは，htdocs/busy.htmlの内容が返送されます。

QOSResponse file "text/html; charset=ISO-8859-1" htdocs/busy.html

4.9.3　レスポンスメッセージ

(1)　サーバからクライアントに送信されるクッキーについて

HWS作成モード

HTTP Serverで作成したクッキーは，Set-Cookieヘッダによってクライアントへ返送されます。Set-Cookieヘッダは一つのレスポンスに複数指定できるため，ここで作成するクッキーは，ほかのクッキーに影響しません。HTTP Serverで返送するSet-Cookieヘッダを次に示します。

Set-Cookie: NAME=VALUE; expires=DATE; path=/; domain=DOMAIN_NAME; secure

NAME=VALUE

NAMEにはQOSCookieNameディレクティブで指定した名称が設定されます。VALUEにはリクエスト制御用の値が設定されます。

expires=DATE

クッキーが無効となる時刻。"リクエストの受信時刻＋QOSCookieExpiresディレクティブ設定値"によって求めた値が，RFC822形式で設定されます。

path=/

クッキーが有効となるURL。このモジュールでは，クッキーが有効となるドメイン内の，すべてのURLで有効となるように設定されます。

domain=DOMAIN_NAME

クッキーが有効となるドメイン。QOSCookieDomainディレクティブで指定されます。

secure

SSLによる通信時だけ，クッキーをクライアントからサーバに送信するかどうかの指定。QOSCookieSecureディレクティブで指定されます。

ユーザ作成モード

HTTP Serverではクッキーを作成しません。HTTP Server以外で作成されたクッキーが，Set-Cookieヘッダによってクライアントへ返送されます。

(2)　流量制限機能によって拒否された場合のヘッダについて

流量制限機能によって拒否された場合，レスポンスメッセージをキャッシュできなくするためのヘッダであるExpiresを，レスポンスヘッダに含めます。これは，サーバ側でリクエスト処理が可能であっても，プロキシまたはブラウザでキャッシュされると，キャッシュされたメッセージがブラウザに表示されて，サーバにリクエストしない場合があるためです。また，拒否メッセージ送信後はサーバ側からコネクションを切断します。

そのほかのレスポンスヘッダは，次のように設定されます。Content-Typeには，AddDefaultCharsetで指定した文字セットが付加されます。

(i)ステータスコード503の標準メッセージ

Content-Type：text/html

(ii)QOSResponseによるカスタマイズされたメッセージ

Content-Type：QOSResponseディレクティブ指定値

(iii)QOSRedirectによるステータスコード302のメッセージ

Content-Type：text/html

Location：QOSRedirectディレクティブ指定値

4.9.4　注意事項

クッキーの受け付けを拒否しているクライアントは，クッキーをサーバに送信しないため，「4.9.2(2)　クッキーを使用したセション管理」の機能が無効となります。

KeepAliveによって接続した場合には，接続後最初のリクエストを処理するときだけ判定処理が行われ，同一接続上で2回目以降のリクエストでは判定されません。最初に接続したリクエストとは異なる流量制限設定へのリクエストである場合も，2回目以降のリクエストでは判定されません。

流量制限機能によってアクセス拒否された場合に送信されるメッセージは，ErrorDocumentディレクティブを指定しても変更されません。また，RedirectディレクティブやRedirectMatchディレクティブの処理は，mod_hws_qosモジュールの制御によって処理を継続すると判定されたあとに実行されます。

流量制限機能を使用しても，QOSRejectionServersディレクティブの設定数を超えた同時リクエストを受信した場合は，リクエストの拒否が正しくできないことがあります。QOSResponseディレクティブで指定されたHTMLファイルに画像データなどのリンクが含まれている場合には，画像データを取得するため，さらにアクセスします。このアクセスも流量制限処理の対象となり，画像データが取得できない場合があります。HTMLファイル作成時には，リンクの設定に注意してください。

エラードキュメントの文字セットは，Windows版ではHWSErrorDocumentMETACharsetディレクティブの設定を有効とします。

クッキーを使用したセション管理をURLごとまたはVirtualHostごとに設定する場合は，QOSCookieNameディレクティブで別の名称を指定する必要があります。

QOSCookieServersディレクティブおよびQOSRejectionServersディレクティブは，サーバプロセス数（ThreadsPerChildディレクティブまたはMaxClientsディレクティブで設定）より後ろに指定してください。サーバプロセス数よりも前に指定すると，サーバが起動できない場合があります。

HTTP/2プロトコル通信機能では流量制限機能は使用できません。

4.10　ヘッダカスタマイズ機能

HTTP通信では，WebブラウザとWebサーバの間でさまざまなHTTPヘッダが用いられます。WebブラウザおよびWebサーバは，受信したHTTPヘッダから，その後の動作を決定する場合があります。WebブラウザがHTTPリクエストの送信時に付加するHTTPヘッダをリクエストヘッダ，Webサーバが応答時に付加するHTTPヘッダをレスポンスヘッダといいます。Webサーバが受信したリクエストヘッダや送信するレスポンスヘッダを追加，変更または削除して，WebサーバまたはWebブラウザに特定の動作をさせるための機能をヘッダカスタマイズ機能といいます。

HTTP Serverにmod_headersモジュールを組み込むことで，ヘッダカスタマイズ機能を使用できます。

4.10.1　mod_headersモジュールの組み込み

ヘッダカスタマイズ機能を使用するためにはmod_headersモジュールの組み込みが必要です。mod_headersモジュールを組み込むには，コンフィグファイル（httpsd.conf）に次に示すディレクティブを指定します。

UNIX版

LoadModule headers_module libexec/mod_headers.so

Windows版

LoadModule headers_module modules/mod_headers.so

4.10.2　ディレクティブの設定方法

ヘッダカスタマイズ機能は，HeaderディレクティブおよびRequestHeaderディレクティブで指定します。ヘッダカスタマイズ機能を使用するための，ディレクティブの設定例を次に示します。

(1)　レスポンスヘッダを設定する場合

Headerディレクティブのset指示子によって，レスポンスヘッダを設定できます。ほかのモジュールですでに同じ名前のレスポンスヘッダが設定されている場合は，ヘッダ値を上書きします。

レスポンスヘッダにExpires: Sat, 1 Jan 2000 00:00:00 GMTを設定する例を次に示します。ただし，有効期限を動的に設定する場合は，有効期限設定機能を使用してください。

Header set Expires "Sat, 1 Jan 2000 00:00:00 GMT"

(2)　レスポンスヘッダを追加する場合

Headerディレクティブのadd指示子によって，レスポンスヘッダを追加できます。ほかのモジュールですでに同じ名前のレスポンスヘッダが設定されていても，別のヘッダとして設定されます。同じ名前のレスポンスヘッダを複数行設定する場合に使用します。

レスポンスヘッダにSet-Cookie: HOSTNAME=HOST1; path=/; domain=www.example.com; secureを追加する例を次に示します。

Header add Set-Cookie "HOSTNAME=HOST1; path=/; domain=www.example.com; secure"

(3)　バックエンドのレスポンスヘッダ値を書き換える場合

Headerディレクティブのedit指示子によって，レスポンスヘッダ値の書き換えができます。バックエンドからのレスポンスヘッダ値にsecure属性などを付加したい場合に使用します。

バックエンドが設定したSet-Cookieレスポンスヘッダのヘッダ値にsecure属性を付加する例を次に示します。

Header edit Set-Cookie ^(.+)$ "$1; secure"

4.10.3　注意事項

レスポンスヘッダのうち，Date，Server，Content-Type，Content-Length，Last-Modifiedヘッダなどは，カスタマイズできない場合があります。また，LoadModuleディレクティブでほかのモジュールを組み込んだ場合，これら以外のヘッダでもカスタマイズできない場合があります。

4.11　有効期限設定機能

Webサーバ上のコンテンツに有効期間を設定すると，その期間中，キャッシュ機能をサポートしているクライアントやプロキシサーバは，Webサーバにアクセスしないで，自身のキャッシュにアクセスするようになるため，効率的です。

HTTP Serverにmod_expiresモジュールを組み込むことで，有効期限設定機能を使用できます。有効期限設定機能を使用すると，次に示すことができます。

有効期限設定機能を使用すると，レスポンスにExpiresヘッダおよびCache-Controlヘッダが追加されます。

Expiresヘッダでは有効期限がグリニッジ標準時（GMT）で設定され，Cache-Controlヘッダではmax-age指示子に，有効期限までの時間が秒単位で設定されます。

設定されたExpiresヘッダおよびCache-Controlヘッダの扱いは，クライアントやプロキシサーバに依存します。

4.11.1　mod_expiresモジュールの組み込み

有効期限設定機能を使用するためには，mod_expiresモジュールの組み込みが必要です。mod_expiresモジュールを組み込むには，コンフィグファイル（httpsd.conf）に次に示すディレクティブを指定します。

UNIX版

LoadModule expires_module libexec/mod_expires.so

Windows版

LoadModule expires_module modules/mod_expires.so

4.11.2　ディレクティブの設定方法

有効期限設定機能を使用するための，ディレクティブの設定例を次に示します。

(1)　デフォルトの有効期限の設定

Webサーバ上のすべてのコンテンツを対象に，ExpiresDefaultディレクティブでデフォルトの有効期限を設定します。有効期限は，ファイルの更新時刻またはクライアントがアクセスした時刻を基準にして設定します。

次のように指定すると，クライアントがアクセスした時刻から60秒後を有効期限として，ExpiresヘッダおよびCache-Controlヘッダがレスポンスに追加されます。

ExpiresActive On
ExpiresDefault A60

ExpiresDefaultの"A"指定は，クライアントがアクセスした時刻を基準時刻としていることを示します。

(2)　MIMEタイプ別の有効期限の設定

ExpiresByTypeディレクティブでMIMEタイプ別に有効期限を設定します。ExpiresDefaultディレクティブで設定されたデフォルトの有効期限は，この設定によってMIMEタイプ別に上書きされます。有効期限は，ファイルの更新時刻またはクライアントがアクセスした時刻を基準にして設定します。ExpiresByTypeディレクティブに指定するMIMEタイプは，TypesConfigディレクティブに指定したファイル（デフォルト値：conf/mime.typesファイル）内にファイル拡張子とコンテントタイプ（MIMEタイプ）の関係を定義するか，またはAddTypeディレクティブにファイル拡張子とコンテントタイプ（MIMEタイプ）の関係を定義する必要があります。

次のように指定すると，MIMEタイプがtext/htmlの場合にだけ，ファイルの更新時刻から1時間後を有効期限として，ExpiresヘッダおよびCache-Controlヘッダがレスポンスに追加されます。

ExpiresActive On
ExpiresByType text/html M3600

ExpiresByTypeの"M"指定は，ファイルの更新時刻を基準時刻としていることを示します。

4.11.3　注意事項

ファイルの更新時刻を基準時刻として設定する場合，ディスク上のファイルにアクセスしないリクエスト（ステータス情報を表示するリクエストなど）では，更新時刻が存在しないため，ExpiresヘッダおよびCache-Controlヘッダは追加されません。

HTTP Serverで標準提供されていないモジュールを，LoadModuleディレクティブで組み込んだ場合，ExpiresヘッダおよびCache-Controlヘッダが操作されるおそれがあります。

ヘッダカスタマイズ機能を同時に使用する場合，ヘッダカスタマイズ機能ではExpiresヘッダおよびCache-Controlヘッダを操作しないでください。

レスポンスデータにすでにExpiresヘッダが設定済みの場合には，この機能ではExpiresヘッダおよびCache-Controlヘッダを付与しません。

4.12　複数のWebサーバ環境を生成する

4.12.1　複数のWebサーバ環境の生成（hwsservereditコマンド）

バーチャルホストでなく，1台のサーバマシンで複数のWebサーバを運用する場合，各Webサーバでhttpsd.confの準備などの環境設定が必要です。この環境設定を補助するのがhwsservereditコマンドです。

(1)　形式

hwsserveredit {-add|-add_woker|-add_prefork|-delete|-check} サーバ名

(2)　オペランド

-add

サーバ環境を新規作成する場合に指定します。コマンドは要求を受け付けると，serversディレクトリの下に，指定されたサーバ名と同名のディレクトリを作成し，httpsd.confとlogsディレクトリを作成します。また，Windows版の場合は，サーバ名を用いてHTTP Serverをサービスとして登録します。UNIX版の場合は，httpsd.confにworker MPMが設定されています。

-add_worker

UNIX版の場合に使用できます。サーバ環境を新規作成する場合に指定します。コマンドは要求を受け付けると，serversディレクトリの下に，指定されたサーバ名と同名のディレクトリを作成し，httpsd.confとlogsディレクトリを作成します。また，httpsd.confにはworker MPMが設定されています。

-add_prefork

UNIX版の場合に使用できます。サーバ環境を新規作成する場合に指定します。コマンドは要求を受け付けると，serversディレクトリの下に，指定されたサーバ名と同名のディレクトリを作成し，httpsd.confとlogsディレクトリを作成します。また，httpsd.confにはprefork MPMが設定されています。

-delete

サーバ環境を削除する場合に指定します。コマンドは要求を受け付けると，serversディレクトリ下のサーバ名と同名のディレクトリを削除します。また，Windows版の場合は，サーバ名のサービスを削除します。

-check

サーバ環境が構築済みかどうかを確認する場合に指定します。コマンドは要求を受け付けると，-addオペランド要求時に作成したリソースがある場合は，サーバ起動環境構築済みと判断します。

サーバ名　〜((1−(220−HTTP Serverインストールディレクトリのパス長)，かつ128バイト以下))

サーバ単位にユニークな文字列を指定します。ただし，"Cosminexus HTTP Server"は指定できません。また，文字列中の空白を取り除くと，"CosminexusHTTPServer"となる文字列（"Cosminexus HTTPServer"など）は指定できません。

(3)　使用方法

(a)　リソースの作成

各サーバのサーバ名を決定してから，hwsservereditコマンドを実行します。"HWS1"というサーバ名の場合は，次を指定します。

hwsserveredit -add HWS1

hwsservereditコマンドは，インストール時に作成されているserversディレクトリの下に，ディレクトリとファイルを作成します。また，Windows版の場合，ディレクトリとファイルの作成と同時に，サーバ名を使用してサービスを登録します。

次にディレクトリとファイルの構成を示します。

+httpsd
   └servers
       └HWS1
          ├conf
          │ └httpsd.conf
          └logs

(b)　httpsd.confの編集

作成されたリソースのうち，httpsd.confのディレクティブ値を変更してください。

複数環境を生成する場合には，次のディレクティブの設定値を，ほかの環境と競合しないように変更してください。

ServerNameディレクティブ

PortディレクティブまたはListenディレクティブ

PidFileディレクティブ

HWSTraceIdFileディレクティブ

HWSTraceLogFileディレクティブ

UNIX版の場合は，さらに次のディレクティブの設定値を，環境に合わせて変更してください。

Userディレクティブ

Groupディレクティブ

そのほかのディレクティブは，hwsservereditコマンドによって，変更しなくても起動できるように設定されています。運用に応じて必要があれば変更してください。

なお，各ディレクティブの詳細については，「6.2　ディレクティブの詳細」を参照してください。

(c)　サーバの起動

次の方法でサーバを起動してください。

UNIX版の場合

/opt/hitachi/httpsd/sbin/httpsd -f servers/HWS1/conf/httpsd.conf

Windows版の場合

"<Application Serverのインストールディレクトリ>¥httpsd¥httpsd.exe" -n HWS1 -k start

または，コントロールパネルからHWS1サービスを起動してください。

(d)　複数サーバ環境の設定

複数サーバ環境を設定する場合は，(a)から(c)の操作を繰り返してください。

(4)　注意事項

コマンドは，管理者権限を持つユーザで実行してください。また，コマンドの場所は移動しないでください。

サーバ名には，ASCIIコードで指定してください。また，次に示す文字は指定できません。

'¥'，'/'，':'，','，';'，'*'，'?'，'"'，'<'，'>'，'|'，'$'，'%'，'^'，'''，'!'，'('，')'，'='，'+'，'{'，'}'，'@'，'['，']'，'~'，制御コード

サーバ名には，ピリオドだけで構成される名称は指定できません。また，名称の前後に連続した空白を指定した場合には，それらを取り除きます。

サービスへの登録時，スタートアップの種類は手動で登録します。

登録したサービスの表示名を変更しないでください。

4.13　イメージマップ

画像（画像のファイル）に複数のリンクを定義できます。その指定個所をクリックすると，その画像の座標位置やイメージマップファイル名がWebサーバにWebブラウザから送信されます。Webサーバは，そのイメージマップファイルと座標位置から対応したURLを検索して，Webブラウザに応答します。これをイメージマップといいます。

イメージマップを使用するには，imap-fileハンドラにマップファイル拡張子を対応付ける定義が必要です。

AddHandler imap-file .map

4.13.1　イメージマップファイルの文法

イメージマップデータの指定形式には次の3とおりの指定があります。

形状名称 指定値 座標
形状名称 指定値 "説明文" 座標
形状名称 指定値 座標 "説明文"

"説明文"はマップファイルメニュー表示時の説明文，座標は画像の座標を示しています。

形状名称を表4-15に，指定値を表4-16に示します。

表4‒15　形状名称と座標の指定形式

形状名称

意味

座標の指定

座標の説明

base

マップファイル内の相対URLのベースを指定。

なし

−

default

poly，circle，rectに該当しないで，point指定もない場合のリンクを指定する。

poly

多角形を指定する。点を3〜100個指定する。

x1,y1 x2,y2 … xn,yn

多角形の各座標位置（3〜100点の座標）

circle

円を指定する。中心点と，円周上の１点を指定する。

x1,y1 x2,y2

中心座標と円周上の1点の座標

rect

四角形を指定する。対角の２点を指定する。

x1,y1 x2,y2

対角の2点の座標

point

点を指定する。カーソルに最も近いpointが有効になる。

x1,y1

点

（凡例）

−：該当しない。

注

座標の指定で(0,0)を含んでいる場合でも，イメージマップ画像の座標(0,0)をマウスポインタでポイントすると，マップファイルメニューが表示されます。

表4‒16　指定値

指定値

意味

URL

リンク先を指定する。相対ディレクトリの場合，base，ImapBaseディレクティブが有効になる。

map

マップファイルメニューを表示する。

menu

referer

ステータスコード302 Foundを応答する。

nocontent

ステータスコード204 No Contentを応答する。base以外に有効。

error

ステータスコード500 Server Errorを応答する。base以外に有効。

4.13.2　イメージマップの定義例と注意事項

(1)　イメージマップの定義例

イメージマップを利用するための操作を次に示します。

httpsd.confファイルに，次に示すディレクティブを設定します。.map拡張子名がURLで指定されたときにイメージマップを実行します。

AddHandler imap-file .map

（ファイル拡張子.mapにimap-fileハンドラを定義）

上記で定義されたファイル拡張子のファイルにリンク先を定義します。

HTML文書内に次のHTML構文を記述します。

<A HREF="/ディレクトリ名/マップファイル名"><IMG SRC="画像データ名" ISMAP></A>

イメージマップファイルの定義例や，実際の表示例などを次に示します。

図4‒14　イメージマップファイルの定義例

この例で，polyで指定された部分をクリックすると，次に示すようなマップファイルメニューが表示されます。

(2)　注意事項

マップファイルメニューで使用している文字セットが，デフォルトの文字セット(ISO-8859-1)と異なる場合は，マップファイルメニューの表示において文字化けが発生します。この場合，HWSImapMenuCharsetディレクティブで，マップファイルメニューで使用している文字セットを指定してください。

4.14　IPv6による通信

従来のIPv4による通信だけでなく，IPv6による通信ができます。IPv4またはIPv4とIPv6のデュアルスタック環境で動作させることができます。

4.14.1　サポート範囲

(1)　IPv6に対応しているディレクティブ

ListenディレクティブやVirtualHostディレクティブなどのディレクティブに，IPv6アドレスを指定することによって，IPv6による通信やIPv6アドレスに対応したバーチャルホストの指定などができます。

IPv6に対応しているディレクティブを次に示します。

<VirtualHost>，AddIcon，AddIconByEncoding，AddIconByType，Allow from，CustomLog，DefaultIcon，Deny from，ErrorDocument，ExtendedStatus，HostnameLookups，HWSErrorLogClientAddr X-Forwarded-For，HWSSetEnvIfIPv6，ImapBase，ImapDefault，Listen，LogFormat，ProxyPass，ProxyPassReverse，QOSCookieDomain，QOSRedirect，Redirect，RedirectMatch，ServerAlias，ServerName，ServerSignature，SetEnvIf，SetEnvIfNoCase，TransferLog，UseCanonicalName

各ディレクティブの詳細については，「6.2　ディレクティブの詳細」を参照してください。

(2)　ディレクティブにIPv6アドレスを指定するときの注意

ディレクティブにIPv6アドレスを記述する場合は，「[IPv6アドレス]」のようにIPv6アドレスを[　]で囲んで指定してください。また，ディレクティブにIPv6アドレスとポート番号を併記する場合は，「[IPv6アドレス]:ポート番号」のようにIPv6アドレスを[　]で囲み，「:」の後ろにポート番号を指定します。

ただし，次のディレクティブにIPv6アドレスを記述する場合は，IPv6アドレスを[　]で囲まないで指定してください。

Allow fromディレクティブ

Deny fromディレクティブ

HWSSetEnvIfIPv6ディレクティブ

なお，IPv6アドレスを指定する場合は，グローバルユニキャストアドレスを指定してください。

(3)　制限事項

次の機能については，IPv6には対応していません。

アドレス制限

BindAddressディレクティブには，IPv6アドレスは指定できません。

クライアントの確認

IdentityCheckディレクティブにOnを指定しても，IPv6ソケットを使用している場合は機能しません。

環境変数の設定

SetEnvIfディレクティブとSetEnvIfNoCaseディレクティブの正規表現には，IPv6アドレスを指定できません。IPv6アドレスを指定する場合は，HWSSetEnvIfIPv6ディレクティブを使用してください。

4.14.2　IPv6による通信の準備（httpsd.confファイルの編集）

IPv6アドレスの指定

httpsd.confファイルにPortディレクティブまたはポート番号だけのListenディレクティブを指定した場合は，IPv4アドレスを使用したリクエストだけを受け付けます。IPv6アドレスを使用する場合は，IPv6アドレスを指定したListenディレクティブの設定が必要です。

例えば，次のように設定すると，IPv4アドレスまたはIPv6アドレスを使用したリクエストを受け付けるようになります。

Listen 80
Listen [::]:80

4.15　WebSocketによる通信

4.15.1　mod_proxy_wstunnelモジュール

クライアントとバックエンドサーバがWebSocket通信をするために，Webサーバはクライアントとバックエンドサーバの間でWebSocket通信を中継します。WebSocket通信の中継にはmod_proxyモジュール，mod_proxy_httpモジュール，およびmod_proxy_wstunnelモジュールの組み込みが必要です。モジュールを組み込むには，コンフィグファイル（httpsd.conf）に，次に示すディレクティブを指定します。

UNIX版

LoadModule proxy_module libexec/mod_proxy.so
LoadModule proxy_http_module libexec/mod_proxy_http.so
LoadModule proxy_wstunnel_module libexec/mod_proxy_wstunnel.so

Windows版

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so

4.15.2　ディレクティブの設定方法

(1)　WebSocket通信の転送

ここでは各アドレスを次のように仮定します。

Webサーバ：www.example.com

バックエンドサーバ：backend.example.com

ProxyPassの転送先URLには，ws://ホスト名〔:ポート番号〕/を含む形で指定します。次のようにProxyPassディレクティブを設定すると，クライアントからの”ws://www.example.com/ws/”というリクエストは”ws://backend.example.com/”というリクエストとしてバックエンドサーバに転送されます。

ProxyPass /ws/ ws://backend.example.com/

(2)　WebSocketログ

WebSocketログについては，「4.2.2　ログの採取方法」の「(5)　WebSocketログ」を参照してください。

(3)　サーバスレッド数の上限値変更

WebSocket通信中は，クライアントまたはバックエンドサーバのどちらかのコネクションが切断されるまで，一つのサーバプロセスまたはスレッドが占有されます。そのため，WebSocketを利用しない場合に比べて多くのサーバスレッドを動作させておく必要があります。

(a)　UNIX版の場合

WebSocketを利用する場合，多くのサーバスレッドを必要とするため，worker MPMの使用を推奨します。worker MPMで一つのサーバプロセスで動作するサーバスレッド数は，ThreadsPerChildおよびThreadLimitディレクティブで指定します。サーバプロセス数の上限はServerLimitディレクティブで指定します。最大のサーバスレッド数はMaxClientsディレクティブで指定します。

(b)　Windows版の場合

動作させるサーバスレッドは，ThreadsPerChildおよびThreadLimitディレクティブで指定します。

4.15.3　注意事項

(1)　サーバプロセス数およびスレッド数

Webサーバの起動には，サーバプロセス数およびスレッド数に応じたリソースを必要とします。大きな値を設定すると，リソース不足によって起動できない場合があります。

(2)　Webサーバ停止方法

WebSocket通信では，クライアントまたはバックエンドサーバのどちらかがコネクションを切断するまで，リクエスト処理が終了しません。そのため，計画停止を要求してもWebSocket通信が終了しないかぎり，Webサーバを終了できません。Webサーバを停止させるには，次のどれかの方法で停止させます。

HWSGracefulStopTimeoutディレクティブで指定したタイムアウトを使用して，時間経過後に計画停止させる。

計画停止要求後，通常停止をすることで，Webサーバを強制停止させる。

通常停止でWebサーバを停止させる。この場合，サーバプロセスの終了を一定秒数待ってから終了する（待ち時間はプラットフォームや設定によって異なる）。

(3)　ProxyPassに指定するプロトコル

WebSocket通信を転送する場合，ProxyPassディレクティブの転送先URLにはws://ホスト名〔:ポート番号〕/を含む形で指定してください。転送先URLのプロトコルにwssは指定できません。

4.16　アプリケーションサーバとの連携

アプリケーションサーバとの連携については，マニュアル「アプリケーションサーバ 機能解説 基本・開発編(Webコンテナ)」を参照してください。

4.17　HTTP/2プロトコル通信機能

Webサーバでは，クライアントから送信されたHTTP/2プロトコルのリクエストを処理することができ，平文と暗号の両方の通信ができます。HTTP/2の接続方法には次の3種類があります。

TLSのALPN拡張による接続（TLS使用時だけ）

ダイレクト接続

Upgradeヘッダによる接続

また，リバースプロキシ機能でバックエンドサーバと通信する際，HTTP/2プロトコルを使用できます。ただし，バックエンドサーバとの通信では暗号通信でHTTP/2プロトコルは使用できません。

4.17.1　mod_http2モジュールの組み込み

クライアントとWebサーバがHTTP/2プロトコル通信機能を使用するためにはmod_http2モジュールの組み込みが必要です。

mod_http2モジュールを組み込むには，コンフィグファイル（httpsd.conf）に次に示すディレクティブを指定します。

UNIX版

LoadModule http2_module libexec/mod_http2.so

Windows版

LoadModule http2_module modules/mod_http2.so

4.17.2　mod_proxy_http2モジュールの組み込み

リバースプロキシ機能でバックエンドサーバとHTTP/2プロトコルを使用するためには，mod_proxyモジュール，mod_proxy_http2モジュールの組み込みが必要です。モジュールを組み込むには，コンフィグファイル（httpsd.conf）に次に示すディレクティブを指定します。

UNIX版

LoadModule proxy_module libexec/mod_proxy.so
LoadModule proxy_http2_module libexec/mod_proxy_http2.so

Windows版

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http2_module modules/mod_proxy_http2.so

リバースプロキシ機能を使ってHTTP/2プロトコルでバックエンドサーバにリクエストを転送する設定例を次に示します。

ここでは各アドレスを次のように仮定しています。

リバースプロキシ：www.example.com

バックエンドサーバ：backend.example.com

ProxyPass /news/ h2c://backend.example.com/
ProxyPassReverse /news/ http://backend.example.com/

このようにProxyPass ディレクティブを設定すると，クライアントからの"http://www.example.com/news/oct-2001"というリクエストは"http://backend.example.com/oct-2001"というリクエストに変更されます。変更されたリクエストはHTTP/2プロトコルを使用して，バックエンドサーバに送信されます。

バックエンドサーバでリダイレクトが指示された場合，バックエンドサーバからのレスポンスのLocationヘッダにバックエンドサーバのアドレスが記載されます。これをそのままクライアントに応答すると，クライアントはリダイレクトをリバースプロキシではなく，直接バックエンドサーバにリクエストします。そこで，ProxyPassReverseディレクティブを上記のように指定することで，リダイレクトリクエストもリバースプロキシを通るリクエストになります。

リバースプロキシ機能を使用してバックエンドサーバに転送する場合は，バックエンドサーバ側でもHTTP/2リクエストを受け付けるための設定が必要です。バックエンドサーバにCosminexusのNIO HTTPサーバを使用する場合には，NIO HTTPサーバのwebserver.http2.enabledキーにtrueの指定が必要です。詳細はマニュアル「アプリケーションサーバ リファレンス 定義編(サーバ定義)」を参照してください。

4.17.3　ワーカスレッド

サーバスレッドがリクエストを受け付けたあと，そのリクエストがHTTP/2プロトコルである場合は，ワーカスレッドと呼ばれるスレッドでHTTP/2プロトコルのストリームに相当するリクエスト処理をします。

HTTP/2通信を使用する場合，HTTP/2リクエストを処理したサーバスレッド，ワーカスレッド，およびストリームを把握するために，アクセスログにHTTP/2に関連する情報を出力することを推奨します。その設定例を次に示します。

UNIX版

LogFormat "%h %l %u %t ¥"%r¥" %>s %b %T %P %{tid}P ¥"%{hws_ap_root}n¥" H2_STREAM_TAG=%{H2_STREAM_TAG}e HWS_H2_WORKER_THREAD_ID=%{HWS_H2_WORKER_THREAD_ID}n" hws_std

Windows版

LogFormat "%h %l %u %t ¥"%r¥" %>s %b %T %{hws_thread_id}P ¥"%{hws_ap_root}n¥"  H2_STREAM_TAG=%{H2_STREAM_TAG}e HWS_H2_WORKER_THREAD_ID=%{HWS_H2_WORKER_THREAD_ID}n" hws_std

ワーカスレッドは，サーバプロセス内に存在し，コンフィグファイルの設定に従って増減します。ワーカスレッドは，サーバプロセスが生成される際にH2MinWorkersディレクティブで指定した数だけ生成されます。このとき生成されたワーカスレッドはサーバプロセス終了時まで生存します。運用時にワーカスレッドが不足した場合は，H2MaxWorkersディレクティブで指定した数を上限としてワーカスレッドが生成されます。リクエスト処理が完了したあと，H2MaxWorkerIdleSecondsディレクティブで指定した時間が経過するとワーカスレッドは終了しますが，サーバプロセス生成時に生成されたワーカスレッドは終了しません。

ワーカスレッドはサーバプロセスごとに生成されるため，最小数はH2MinWorkersディレクティブ指定値×サーバプロセス数，最大数はH2MaxWorkersディレクティブ指定値×サーバプロセス数となります。

4.17.4　制限事項

次の機能は，HTTP/2プロトコル通信機能では使用できません。

サーバープッシュ機能は使用できません。クライアントがリクエストしたコンテンツだけを返します。

UNIX版のprefork MPMを使用する場合は，HTTP/2プロトコル通信機能は使用できません。worker MPMを使用してください。

mod_hws_qos モジュールによる流量制限機能は使用できません。

HWSNotModifiedResponseHeadersディレクティブによってレスポンスヘッダを付加できません。

HWSGracefulStopLogディレクティブによって，計画停止時に強制停止させたHTTP/2通信のリクエスト情報は，エラーログファイルに出力できません。

HTTP/2通信時にWebSocket通信は開始できません。

KeepAliveディレクティブによって，持続型接続（KeepAlive）は無効にできません。KeepAliveディレクティブの設定に関係なく，コネクションが持続します。コネクションが持続する時間は，KeepAliveTimeoutディレクティブ値に従います。

4.17.5　注意事項

HTTP/2プロトコル通信機能を使用する場合，コンフィグファイル（httpsd.conf）に次に示すディレクティブを指定することを推奨します。

HWSSuppressModuleTrace mod_http2.c

5　SSLによる認証，暗号化

この章では，SSLによる認証，暗号化について説明します。

5.1　SSLで認証，暗号化する

HTTP ServerはSSL（Secure Sockets Layer）プロトコルを使用すれば，送受信する情報を保全できます。この製品はTLS（Transport Layer Security）バージョン1.0，1.1，1.2，および1.3に対応しており，SSLサーバ認証，SSLクライアント認証ができます。SSLの機能を次に示します。

通信相手を確認し，特定するために認証します。

サーバとクライアントの間で転送するデータを暗号化します。

転送中に改ざんされたデータを検出します。

これらの機能はSSL関連コマンドで作成された秘密鍵と，認証局（CA）が発行した証明書をWebサーバにインストールすれば，利用できます。証明書には，SHA-2アルゴリズムで署名された証明書，ワイルドカード証明書，マルチドメイン証明書も利用できます。また，RSA暗号および楕円曲線暗号に対応しています。

5.1.1　SSL通信のための準備

SSLによる認証や，データの暗号化を使用するには，Webサーバに秘密鍵と認証局（CA）が発行した証明書をインストールする必要があります。

手順を次に示します。

秘密鍵の作成

openssl.bat genrsaコマンドまたはopenssl.sh genrsaコマンドを使用して，Webサーバの秘密鍵を作成します。

CSR（証明書発行要求）の作成

openssl.bat reqgenコマンドまたはopenssl.sh reqgenコマンドを使用して，CSRを作成します。

CAへCSRを送付

2.で作成したCSRをCAに送付します。

証明書の入手

PEM形式の証明書をCAから入手します。

httpsd.confファイルの編集（ディレクティブの定義）

SSLを有効にするために，SSLEngineディレクティブにOnを指定します。CAから入手したPEM形式の証明書はSSLCertificateFileディレクティブ，Webサーバの秘密鍵はSSLCertificateKeyFileディレクティブに指定します。

（例）SSLを有効にして，PEM形式の証明書およびWebサーバの秘密鍵を定義

UNIX版の場合

SSLEngine On
SSLCertificateFile /opt/hitachi/httpsd/conf/ssl/server/httpsd.pem
SSLCertificateKeyFile /opt/hitachi/httpsd/conf/ssl/server/httpsdkey.pem

Windows版の場合

SSLEngine On
SSLCertificateFile "<Application Serverのインストールディレクトリ>/httpsd/conf/ssl/server/httpsd.pem"
SSLCertificateKeyFile "<Application Serverのインストールディレクトリ>/httpsd/conf/ssl/server/httpsdkey.pem"

SSLを使用して通信する場合，Webブラウザからは，https://でリクエストします。ポート番号を省略した場合，SSLの標準では443ポートを使用します。したがって，Listenディレクティブで443ポートを指定するのが一般的です。

Webサーバの再起動

httpsd.confファイルの定義を有効にするには，Webサーバを再起動する必要があります。ただし，SSLCertificateKeyFileディレクティブの設定を変更した場合は，いったん，Webサーバを停止後，起動し直してください。

SSLを無効にする場合には，5.の指定を無効化して再起動します。

5.1.2　SSL通信の手順

SSL通信の手順を次に示します。2〜6の手順をSSLでのハンドシェイクと呼びます。

Webブラウザから，https://へのリクエストを実行します。

Webブラウザは，使用できるSSLのバージョンや暗号種別を示すデータをWebサーバに送付します。

Webサーバは，使用するSSLのバージョンと暗号種別を決定し，Webブラウザに通知します。また，公開鍵とCAの署名が入った証明書をWebブラウザに送付します。

WebブラウザはWebブラウザが持っているCAの公開鍵を使用して，送付された証明書が改ざんされていないことを確認して，Webサーバの公開鍵を入手します。

Webブラウザは，通信でWebサーバと共有する対称鍵を作成し，Webサーバの公開鍵で暗号化して送信します。また，Webブラウザが持っている証明書をクライアント認証のためにWebサーバに提示する場合，証明書を送信します。

Webサーバの公開鍵で暗号化したデータは，対になる秘密鍵がないと復号できません。つまり，データ送信先のWebサーバだけがデータの内容を解読できます。

Webサーバは受信した対称鍵をWebサーバの秘密鍵で復号し，入手します。Webブラウザからの証明書を受信した場合は，証明書を確認します。

Webブラウザと，Webサーバの間で共有された対称鍵を使用して，HTTPリクエストまたはレスポンスを暗号化し，送受信します。

SSL通信でのリクエスト処理を次に示します。

図5‒1　SSL通信でのリクエスト処理

ハンドシェイクの際に，クライアント側とWebサーバ側の両方に有効であり，最も強い強度の暗号が選択されます。Webサーバ側の暗号種別は，SSLCipherSuiteディレクティブで指定します。この指定で，常にすべての暗号種別を有効にしておけば，クライアントが持つ最も強い強度の暗号で通信できることになります。

5.1.3　SSLクライアント認証の準備

SSLクライアント認証をする場合は，「5.1.1　SSL通信のための準備」の1〜5に加えて，次の操作をして，再起動してください。

クライアント証明書をWebブラウザにインストール

証明書の発行に使用するCAの指示に従い，Webブラウザにクライアント証明書をインストールします。

CAの証明書の入手

クライアント証明書を発行したCAの証明書（PEM形式）を入手します。

httpsd.confファイルの編集（ディレクティブの定義）

SSLクライアント認証を有効にするために，SSLVerifyClientディレクティブにrequireを指定し，SSLVerifyDepthディレクティブに1以上を指定します。CAから入手したPEM形式の証明書は，SSLCACertificateFileまたはSSLCACertificatePathディレクティブに指定します。

注

SSLCACertificatePathディレクティブはWindows版では指定できません。

5.1.4　証明書の有効性の検証

SSLクライアント認証のときに，クライアント証明書の検証だけでなく，その時点のクライアント証明書の有効性をCRL（Certificate Revocation List）を使用して検証できます。CRLは，検証したいクライアント証明書を発行したCAから入手します。

(1)　CRLファイルの形式

CRLはPEM形式のファイルを使用します。

（例）PEM形式のCRL

<Application Serverのインストールディレクトリ>¥httpsd¥conf¥ssl¥crl>type crl.pem
-----BEGIN X509 CRL-----
MIIBGDCBwwIBATANBgkqhkiG9w0BAQQFADB0MQswCQYDVQQGEwJKUDERMA8GA1UE
CBMIS2FuYWdhd2ExFTATBgNVBAcTDFlva29oYW1hLXNoaTERMA8GA1UEChMITE9D
QUwtQ0ExDDAKBgNVBAsTA2NhMTEaMBgGA1UEAxMRY2ExLmhpdGFjaGkuY28uanAX
DTAxMDgyOTA0NDIzMFoXDTAxMDgzMDA1NTIzMFowGzAZAghx2Sa8AAAAARcNMDEw
ODI4MDQ1MTI5WjANBgkqhkiG9w0BAQQFAANBAJorY7DUJ91uthNlAA+PT6zw6rVo
uZLFeYZPNVXgF217YOCtJtKDT+16bR5kgk0p/1xIbgReshjMNTmXPqARNjE=
-----END X509 CRL-----

注

旧バージョンのHTTP ServerでDER形式のCRLを使用していた場合は，PEM形式に変換してください。

(2)　HTTP ServerへのCRL適用方法

CRLを使用してクライアント証明書の有効性を検証する場合は，「5.1.3　SSLクライアント認証の準備」に加えて，次の操作をして，Webサーバを再起動してください。

CRLの入手

各CAのCRL配布点からCRLファイルを入手し，適切なディレクトリに格納します。

httpsd.confの編集（ディレクティブの定義）

CRLを有効にするために，SSLCARevocationCheckディレクティブにleafを指定して，SSLCARevocationFileディレクティブにCRLファイルを設定します。

Webサーバを起動または再起動します。

既存のCRLを更新する場合には，古いCRLを新規CRLで上書きしたあと，Webサーバを再起動します。

(3)　CRLを使用したクライアント証明書検証

CRLを使用したクライアント証明書検証では次の項目を確認します。

CRL自体が有効であるかどうか。

次回発行日より前かどうか。

クライアント証明書のシリアル番号が記載されていないかどうか。

(a)　CRLクライアント証明書検証でクライアント証明書が有効と判定される条件

CRLクライアント証明書検証でクライアント証明書が有効と判定される条件には次に示すものがあります。

証明書を発行したCAが発行したCRLを読み込んでいない場合。

現在時刻がCRLの次回発行日より前であり，かつ該当する接続のクライアント証明書のシリアル番号がCRLに記載されていない場合。

現在時刻がCRL発行日よりあとで，次回発行日が指定されてなく，かつCRLに該当する接続のクライアント証明書のシリアル番号が記載されていない場合。

(b)　CRLクライアント証明書検証でクライアント証明書が無効と判定される条件

CRLクライアント証明書検証でクライアント証明書が無効と判定される条件には次に示すものがあります。

CRLが有効でない場合。

該当する接続のクライアント証明書のシリアル番号がCRLに記載されている場合。

5.2　証明書の取得

RSA暗号，および楕円曲線暗号を利用したSSL通信をするためには，利用する暗号種別に応じて，秘密鍵と認証局（CA）が発行した証明書を用意する必要があります。

5.2.1　証明書取得手順

暗号種別ごとに証明書を取得するまでの手順を次に示します。

(1)　RSA暗号を利用する場合

RSA暗号を利用する場合に，証明書を取得するまでの手順を次に示します。証明書取得に必要なWebサーバの秘密鍵や証明書発行要求（CSR）は，Windowsの場合はopenssl.batコマンド，UNIXの場合はopenssl.shコマンドで作成します。

図5‒2　証明書取得手順

上の図の手順でCAの署名済みの証明書ファイルを取得したあと，証明書ファイルの"-----BEGIN CERTIFICATE-----"から，"-----END CERTIFICATE----"の部分を，ディレクティブに指定する証明書ファイルとして保存します（標準提供のhttpsd.confではhttpsd.pem）。秘密鍵のファイルをSSLCertificateKeyFileディレクティブに，保存した証明書ファイルをSSLCertificateFileディレクティブに定義することで，SSLが利用できるようになります。なお，SSLCertificateKeyFileディレクティブには，PKCS#1またはPKCS#8に準拠した形式の秘密鍵のファイルを定義してください。

(2)　楕円曲線暗号を利用する場合

楕円曲線暗号を利用する場合に，証明書を取得するまでの手順を次に示します。証明書取得に必要なWebサーバの秘密鍵や証明書発行要求（CSR）は，Windowsの場合はopenssl.batコマンド，UNIXの場合はopenssl.shコマンドで作成します。

上の図の手順でCAの署名済みの証明書ファイルを取得したあと，証明書ファイルの"-----BEGIN CERTIFICATE-----"から，"-----END CERTIFICATE----"の部分を，ディレクティブに指定する証明書ファイルとして保存します（標準提供のhttpsd.confではhttpsd.pem）。秘密鍵のファイルをSSLCertificateKeyFileディレクティブに，保存した証明書ファイルをSSLCertificateFileディレクティブに定義することで，SSLが利用できるようになります。なお，SSLCertificateKeyFileディレクティブには，PKCS#8に準拠した形式の秘密鍵のファイルを定義してください。

(3)　注意事項

RSA暗号と楕円曲線暗号の両方の暗号スイートを同時に利用する場合は，RSA暗号と楕円曲線暗号の両方の秘密鍵と証明書をディレクティブに定義してください。

5.2.2　Webサーバの秘密鍵の作成

openssl.batコマンドまたはopenssl.shコマンドを使用して，Webサーバの秘密鍵を作成します。暗号種別ごとにWebサーバの秘密鍵を作成する方法を示します。

(1)　RSA暗号を利用する場合（openssl.bat genrsaコマンドまたはopenssl.sh genrsaコマンド）

openssl.bat genrsaコマンドまたはopenssl.sh genrsaコマンドを使用して，Webサーバの秘密鍵を作成します。作成したWebサーバの秘密鍵のファイルは，SSLCertificateKeyFileディレクティブに指定します。

秘密鍵は，PKCS#1に準拠した形式で作成されます。

(a)　形式

Windowsの場合

openssl.bat genrsa -rand ファイル名 -out 鍵ファイル 〔1024｜2048｜4096〕

UNIXの場合

openssl.sh genrsa -rand ファイル名〔:ファイル名…〕 -out 鍵ファイル 〔1024｜2048｜4096〕

(b)　オペランド

-rand ファイル名（Windowsの場合）

-rand ファイル名〔:ファイル名…〕（UNIXの場合）

乱数生成に利用する任意のファイルを指定します。乱数生成用のファイルは，十分大きい適当なファイルを指定してください。Windows版では，ファイル名は一つだけ指定できます。複数指定はできません。

-out　鍵ファイル

Webサーバの秘密鍵を出力するファイルを指定します。

〔1024｜2048｜4096〕

作成するWebサーバの秘密鍵のビット長を指定します。

(c)　使用例

Webサーバの秘密鍵httpsdkey.pemをPKCS#1に準拠した形式で作成します。

Windowsの場合

openssl.bat genrsa -rand file1 -out httpsdkey.pem 2048

file1：任意のファイル

UNIXの場合

openssl.sh genrsa -rand file1:file2:file3:file4:file5 -out httpsdkey.pem 2048

file1，file2，file3，file4，file5：任意のファイル

(2)　楕円曲線暗号を利用する場合（openssl.bat ecparamコマンドまたはopenssl.sh ecparamコマンド）

openssl.bat ecparamコマンドまたはopenssl.sh ecparamコマンドを使用して，Webサーバの秘密鍵を作成します。作成したWebサーバの秘密鍵のファイルは，SSLCertificateKeyFileディレクティブに指定します。

(a)　形式

Windowsの場合

openssl.bat ecparam -genkey -noout -rand ファイル名 -name 楕円曲線名 -out 鍵ファイル

UNIXの場合

openssl.sh ecparam -genkey -noout -rand ファイル名〔:ファイル名 …〕 -name 楕円曲線名 -out 鍵ファイル

(b)　オペランド

-rand ファイル名（Windowsの場合）

-rand ファイル名〔:ファイル名…〕（UNIXの場合）

乱数生成に利用する任意のファイルを指定します。乱数生成用のファイルは，十分大きい適当なファイルを指定してください。Windows版では，ファイル名は一つだけ指定できます。複数指定はできません。

-name 楕円曲線名

秘密鍵の生成に利用する楕円曲線名を指定します。次の楕円曲線暗号のうちのどれか一つを指定してください。

secp384r1

secp521r1

prime256v1

P-256

P-384

P-521

-out　鍵ファイル

Webサーバの秘密鍵を出力するファイルを指定します。

(c)　使用例

楕円暗号を利用した秘密鍵httpsdkey.pemを作成します。Webサーバで秘密鍵を利用する場合は，httpsdkey.pemをPKCS#8形式に変換してください。

Windowsの場合

openssl.bat ecparam -genkey -noout -rand file1 -name P-256 -out httpsdkey.pem

file1：任意のファイル

UNIXの場合

openssl.sh ecparam -genkey -noout -rand file1:file2:file3:file4:file5 -name P-256 -out httpsdkey.pem

file1，file2，file3，file4，file5：任意のファイル

5.2.3　Webサーバの秘密鍵の形式変換（openssl.bat pkcs8コマンドまたはopenssl.sh pkcs8コマンド）（楕円曲線暗号使用時）

openssl.bat pkcs8コマンドまたはopenssl.sh pkcs8コマンドを使用して，Webサーバの秘密鍵の形式を変換します。

(1)　形式

Windowsの場合

openssl.bat pkcs8 -topk8 -in 入力ファイル -out 出力ファイル -nocrypt

UNIXの場合

openssl.sh pkcs8 -topk8 -in 入力ファイル -out 出力ファイル -nocrypt

(2)　オペランド

-in 入力ファイル

変換前の秘密鍵ファイルを指定します。

-out 出力ファイル

変換後の秘密鍵ファイルを指定します。

-nocrypt

変換後の秘密鍵を暗号化しません。

(3)　使用例

PKCS#1形式のWebサーバの秘密鍵httpsdkey.pemを，PKCS#8形式のWebサーバの秘密鍵 httpsdkey2.pem に変換します。

Windowsの場合

openssl.bat pkcs8 -topk8 -in httpsdkey.pem -out httpsdkey2.pem -nocrypt

UNIXの場合

openssl.sh pkcs8 -topk8 -in httpsdkey.pem -out httpsdkey2.pem -nocrypt

5.2.4　証明書発行要求（CSR）の作成（openssl.bat reqコマンドまたはopenssl.sh reqコマンド）

openssl.bat reqコマンドまたはopenssl.sh reqコマンドを使用して，証明書発行要求（CSR）を作成します。ここで作成したCSRファイルをCAに提出して，署名済みの証明書を発行してもらいます。CSRは，PKCS#10に準拠した形式で作成されます。

(1)　形式

Windowsの場合

openssl.bat req -new 〔-sha1｜-sha224｜-sha256｜-sha384｜-sha512〕 -key 鍵ファイル -out CSRファイル

UNIXの場合

openssl.sh req -new 〔-sha1｜-sha224｜-sha256｜-sha384｜-sha512〕 -key 鍵ファイル -out CSRファイル

(2)　オペランド

〔-sha1｜-sha224｜-sha256｜-sha384｜-sha512〕

CSR作成時に使用する署名アルゴリズムを指定します。

　　-sha1：sha1WithRSAEncryptionを使用します。

　　-sha224：sha224WithRSAEncryptionを使用します。

　　-sha256：sha256WithRSAEncryptionを使用します。

　　-sha384：sha384WithRSAEncryptionを使用します。

　　-sha512：sha512WithRSAEncryptionを使用します。

-key 鍵ファイル

Webサーバの秘密鍵のファイルを指定します。

-out CSRファイル

作成したCSRを出力するファイルを指定します。

(3)　使用例

証明書発行要求（CSR）httpsd.csrを作成します。

Windowsの場合

openssl.bat req -new -sha1 -key httpsdkey.pem -out httpsd.csr

UNIXの場合

openssl.sh req -new -sha1 -key httpsdkey.pem -out httpsd.csr

httpsdkey.pem：鍵ファイル

httpsd.csr：CSRファイル

5.2.5　証明書発行要求（CSR）の内容表示（openssl.bat reqコマンドまたはopenssl.sh reqコマンド）

証明書発行要求（CSR）の内容を表示します。

(1)　形式

Windowsの場合

openssl.bat req -in CSRファイル -text

UNIXの場合

openssl.sh req -in CSRファイル -text

(2)　オペランド

-in CSRファイル

表示するCSRファイルを指定します。

(3)　使用例

Windowsの場合

openssl.bat req -in httpsd.csr -text

UNIXの場合

openssl.sh req -in httpsd.csr -text

httpsd.csr：表示するCSRファイル

5.2.6　証明書の内容表示（openssl.bat x509コマンドまたはopenssl.sh x509コマンド）

証明書ファイルの内容を表示します。

"-----BEGIN CERTIFICATE-----"から，"-----END CERTIFICATE----"の証明書ファイルの内容を表示します。

(1)　形式

Windowsの場合

openssl.bat x509 -in 証明書ファイル -text

UNIXの場合

openssl.sh x509 -in 証明書ファイル -text

(2)　オペランド

-in 証明書ファイル

表示する証明書ファイルを指定します。

(3)　使用例

Windowsの場合

openssl.bat x509 -in httpsd.pem -text

UNIXの場合

openssl.sh x509 -in httpsd.pem -text

httpsd.pem：表示する証明書ファイル

5.2.7　証明書の形式変換（openssl.bat x509コマンドまたはopenssl.sh x509コマンド）

証明書の形式を変換します。必要に応じて使用します。

(1)　形式

Windowsの場合

openssl.bat x509 -inform 入力形式 -outform 出力形式 -in 入力ファイル -out 出力ファイル

UNIXの場合

openssl.sh x509 -inform 入力形式 -outform 出力形式 -in 入力ファイル -out 出力ファイル

(2)　オペランド

-inform 入力形式

入力形式：｛DER｜PEM｝

-outform 出力形式

出力形式：｛DER｜PEM｝

-in 入力ファイル

変換前の証明書ファイルを指定します。

-out 出力ファイル

変換後の証明書ファイルを指定します。

5.2.8　ハッシュリンクの作成（UNIX版）（openssl.sh x509コマンド）

証明書の妥当性チェックのために，証明書を発行したCAの証明書をSSLCACertificateFileディレクティブまたはSSLCACertificatePathディレクティブで指定します。SSLCACertificatePathディレクティブには，証明書発行元のCAの証明書をポイントするハッシュ値を使用したシンボリックリンク（ハッシュリンク）を格納したディレクトリを指定します。ハッシュ値はopenssl.sh x509コマンドで作成します。

SSLCACertificatePathディレクティブを指定すると，Webサーバでの証明書の検索はハッシュ値を用いて効率良く実行できます。したがって，CAの証明書が多い場合は，SSLCACertificateFileディレクティブよりもSSLCACertificatePathディレクティブを推奨します。なお，ハッシュ値は一つの証明書に一つである必要があるので，ハッシュリンク作成時には，複数の証明書が混在したファイルは指定できません。

SSLCACertificatePathディレクティブで指定するハッシュリンクディレクトリ内のシンボリックリンク生成時には，ハッシュ値に.0を付ける必要があります。また，SSLCACertificatePathディレクティブで指定するディレクトリは，User，Groupディレクティブで指定したユーザでアクセスできるように，ディレクトリに読み込み権限，実行権限を設定してください。

(1)　形式

openssl.sh x509 -noout -hash -in CAの証明書ファイル

(2)　オペランド

-in CAの証明書ファイル

ハッシュリンク値を作成するCAの証明書ファイルを指定します。

(3)　使用例

ハッシュリンクのディレクトリおよびCAの証明書が次に示すディレクトリ，ファイルの場合の例を示します。

/opt/hitachi/httpsd/conf/ssl/cacerts：ハッシュリンクディレクトリ

/opt/hitachi/httpsd/conf/ssl/cacert/cacert.pem：CAの証明書

cd /opt/hitachi/httpsd/conf/ssl/cacerts
ln -s /opt/hitachi/httpsd/conf/ssl/cacert/cacert.pem `
openssl.sh x509 -noout -hash  -in /opt/hitachi/httpsd/conf/ssl/cacert/cacert.pem`.0

これによって，/opt/hitachi/httpsd/conf/ssl/cacert/cacert.pemについてのハッシュリンク xxxxxxxx.0が作成されます。

5.2.9　openssl.batコマンドおよびopenssl.shコマンドの使用例

openssl.batコマンドおよびopenssl.shコマンドの使用例を示します。なお，この例で使用しているCommon Nameなどは架空のものです。

(1)　秘密鍵の作成（openssl.batコマンドまたはopenssl.shコマンド）

(a)　RSA暗号を利用する場合

RSA暗号の秘密鍵を生成する場合のコマンドの使用例を次に示します。

使用例（Windowsの場合）

# openssl.bat genrsa -rand file -out httpsdkey.pem 1024
Generating RSA private key, 1024 bit long modulus
...............++++++
..............................++++++
e is 65537 (0x10001)
#

注

11-00-10以降，11-10-10以降，11-20-10以降では，メッセージ（Generating…）は出力されません。

使用例（UNIXの場合）

# openssl.sh genrsa -rand file -out httpsdkey.pem 1024
Generating RSA private key, 1024 bit long modulus
...............++++++
..............................++++++
e is 65537 (0x10001)
#

注

11-00-10以降，11-10-10以降，11-20-10以降では，メッセージ（Generating…）は出力されません。

RSA暗号の秘密鍵の内容

RSA暗号の秘密鍵の内容を次に示します。

-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQCwFMAIeJw8jhLyV3wog/0cjs2KQCRCumwgRSCAaDuKGgjlCsY9
/7z4evgK91sKvSVBcNFP/CemK7e8GyorwMT1CbJR7HD6D+LJ7ksr9zxl7vrUohCu
C/EW2ut0ZSVe9X4chfQc4RLvmkcmiMZuUKa5zP2kiOL9Ug5u3VksS/hWGwIDAQAB
AoGBAJysCeY/svyqia86Ko4+StPDOJ2/zsPU7mqUN4Qpunh6C9oIiTYXPER33gab
61UV0XV19bhOq9TOZ3CnVxGRN206PnXWA8E2M1g+yFnHSTmrF/noXYYL88L57ZKP
+eE0H5otxJC2E5wdDTlNJEtfv2PxLkNQe0czgFkzeVJX/hqZAkEA33UiTURMdi5r
iEL8l741dQQ0mXO7Iek+U4B9rkZXxobxL6+G/Txsv+5/NI3ULjt/NGn6yIqCgwJM
37igriqejwJBAMm5V5ZRLSsN0upq0cO0rNQ79T+XwypUNALjFEL/NgsbplL1emjW
y7DJwjd9Wmu0MHlserDJ9NrFXHsYDJQjlbUCQBVyVpJ35abKGcQAOeIOfW73slyw
ANvmWPcGtAlP8wi41tkuzZPsgruBFnBi1GSDjVfofAtXT+NnCx3FyJYuvP0CQQC9
egARS1J33FY+pfM+NlkYSPFFuFEzU0A/bfg8LegfautBhR5jl05gUkLBSFdET04w
33om0KvTSgph/ObjxsD5AkAiA0i0DpwL477ffxs96K7uA9T6VEwrQGg1N5X6Elm9
mPrrOtvGP+Qbzl2ujsr8V6qPIbRabzR28MBFNK+O7iPd
-----END RSA PRIVATE KEY-----

注

11-00-10以降，11-10-10以降，11-20-10以降では，「RSA PRIVATE KEY」部分が「PRIVATE KEY」となります。

(b)　楕円曲線暗号を利用する場合

楕円曲線暗号の秘密鍵を生成する場合のコマンドの使用例を次に示します。

使用例（Windowsの場合）

# openssl.bat ecparam -genkey -noout -rand file -name P-256 -out httpsdkey-tmp.pem
#

使用例（UNIXの場合）

# openssl.sh ecparam -genkey -noout -rand file -name P-256 -out httpsdkey-tmp.pem
#

生成された秘密鍵をPKCS #8形式に変換する場合のコマンドの使用例を次に示します。

使用例（Windowsの場合）

# openssl.bat pkcs8 -topk8 -in httpsdkey-tmp.pem -out httpsdkey-ecc.pem -nocrypt
#

使用例（UNIXの場合）

# openssl.sh pkcs8 -topk8 -in httpsdkey-tmp.pem -out httpsdkey-ecc.pem -nocrypt
#

楕円曲線暗号の秘密鍵の内容

楕円曲線暗号の秘密鍵の内容を次に示します。

-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg5s6WeJmSoxeX+rw3
5cYub8aXBI4YdczVkpW10kbTtdShRANCAAQXh6wOloXxP2NZ2/wqvL5PZUEyJB1o
ZZc3zWVE9BTkx6sC46euFBrZ0ha5A+P9WwcdsC4IjaY09mf+rTeAmpgG
-----END PRIVATE KEY-----

(2)　証明書発行要求（CSR）の作成（openssl.bat reqコマンドまたはopenssl.sh reqコマンド）

証明書発行要求（CSR）を作成する場合のコマンドの使用例を次に示します。ここで作成したCSRファイルをCAに提出して，署名済みの証明書を発行してもらいます。

設定する項目および内容は，CSRを提出するCAの指示に従ってください。

使用例（Windowsの場合）

# openssl.bat req -new -sha1 -key httpsdkey.pem -out httpsd.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:JP
State or Province Name (full name) [Some-State]:Kanagawa
Locality Name (eg, city) []:Yokohama-shi
Organization Name (eg, company) [Internet Widgits Pty Ltd]:HITACHI
Organizational Unit Name (eg, section) []:WebSite
Common Name (e.g. server FQDN or YOUR name) []:www.hws.hitachi.co.jp
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
#

使用例（UNIXの場合）

# openssl.sh req -new -sha1 -key httpsdkey.pem -out httpsd.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:JP
State or Province Name (full name) [Some-State]:Kanagawa
Locality Name (eg, city) []:Yokohama-shi
Organization Name (eg, company) [Internet Widgits Pty Ltd]:HITACHI
Organizational Unit Name (eg, section) []:WebSite
Common Name (e.g. server FQDN or YOUR name) []:www.hws.hitachi.co.jp
Email Address []:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
#

CSRの形式

CSRの形式を次に示します。

-----BEGIN CERTIFICATE REQUEST-----
MIIBuzCCASQCAQAwezEeMBwGA1UEAxMVd3d3Lmh3cy5oaXRhY2hpLmNvLmpwMRAw
DgYDVQQLEwdXZWJTaXRlMRAwDgYDVQQKEwdISVRBQ0hJMRUwEwYDVQQHEwxZb2tv
aGFtYS1zaGkxETAPBgNVBAgTCEthbmFnYXdhMQswCQYDVQQGEwJKUDCBnzANBgkq
hkiG9w0BAQEFAAOBjQAwgYkCgYEArZZyYumQcY8h4AppAz447H9R+Srzrt08eSzr
yZT8HYrDXz9I8XH6bMMahO4M6u2YI9iVzepQU1uI0f8bCwkFageBWwVQmDwcyJYf
1kY5X+2OgFEYV8CTu7I+A70VlYHobpM/FlBkzUVWD9/fTob0ALYNF9eTbFAL0c6U
sJBZfSsCAwEAAaAAMA0GCSqGSIb3DQEBBQUAA4GBAEiq+yGSVblaOuljyrAei9r3
n5mXtE5KXzQRz0cy6N5BaEV0l9KOtUaTCallsZmQdZ/6dZRSaE27xf/2UF3UxlCC
0+qrG10iQgDe5huSsqBnGGghJB2OPVUJh5S7YC6Ub6HRdOzq7H+D0qvsBC2C0dA/
cCkp8UsRzIjlDW8SVBZO
-----END CERTIFICATE REQUEST-----

6　ディレクティブ

この章では，httpsd.confファイルおよびアクセスコントロールファイルに定義するディレクティブについて説明します。

6.1　ディレクティブ一覧

6.1.1　ディレクティブ一覧

HTTP Serverを起動するために，最低限設定が必要なディレクティブは次のとおりです。

最低限設定が必要なディレクティブ

User（UNIX版）

Group（UNIX版）

ServerName

SSLを利用する場合にさらに最低限必要なディレクティブ

SSLEngine On

SSLCertificateFile

SSLCertificateKeyFile

コンフィグファイルに指定できるディレクティブの一覧を次の表に示します。なお，次の表およびディレクティブの説明では，次の記号を使用しています。

[図データ]：UNIX版だけに有効なディレクティブ

[図データ]：Windows版だけに有効なディレクティブ

表6‒1　ディレクティブ一覧

設定内容

ディレクティブ

複数指定

httpsd.confファイル内のブロックの定義

<Directory>

○

<DirectoryMatch>

○

<Files>

○

<FilesMatch>

○

<IfModule>

○

<Limit>

○

<Location>

○

<LocationMatch>

○

<VirtualHost>

○

サーバの基本的な定義

ServerName

×

Port

×

User　[図データ]

×

Group　[図データ]

×

ServerAdmin

×

ServerRoot

×

ServerSignature

×

Listen

○

BindAddress

×

LoadModule

○

LoadFile

○

Include

○

ExtendedStatus

×

ServerTokens

×

CoreDumpDirectory　[図データ]

×

FileETag

○

コンテンツを管理するための定義

UserDir

○

DocumentRoot

×

ErrorDocument

○

Webブラウザからのリクエストについての定義（Alias）

Alias

○

AliasMatch

○

Redirect

○

RedirectMatch

○

Webブラウザへのレスポンスについての定義

HWSNotModifiedResponseHeaders

○

MIMEタイプについての定義

TypesConfig

×

AddCharset

○

AddDefaultCharset

×

AddType

○

ForceType

×

HWSErrorDocumentMETACharset　[図データ]

×

コンテントネゴシエーションについての定義

LanguagePriority

○

AddEncoding

○

AddLanguage

○

DefaultLanguage

×

CacheNegotiatedDocs

×

MultiviewsMatch

×

ハンドラについての定義

AddHandler

○

SetHandler

×

Webサーバの性能についての定義

ServerLimit　[図データ]

×

StartServers　[図データ]

×

MinSpareServers　[図データ]

×

MaxSpareServers　[図データ]

×

MinSpareThreads　[図データ]

×

MaxSpareThreads　[図データ]

×

MaxClients　[図データ]

×

MaxRequestsPerChild　[図データ]

×

Timeout

×

ListenBacklog

×

ThreadsPerChild　[図データ]

×

ThreadsPerChild　[図データ]

×

HWSMaxQueueSize　[図データ]

×

HWSKeepStartServers　[図データ]

×

RequestReadTimeout

×

SendBufferSize

×

ThreadLimit　[図データ]

×

ThreadLimit　[図データ]

×

KeepAliveの定義

KeepAlive

×

MaxKeepAliveRequests

×

KeepAliveTimeout

×

リクエストを制限する定義

LimitRequestBody

×

LimitRequestFields

×

LimitRequestFieldsize

×

LimitRequestLine

×

CGI，環境変数の定義

ScriptAlias

○

ScriptAliasMatch

○

UseCanonicalName

×

BrowserMatch

○

BrowserMatchNoCase

○

PassEnv

○

SetEnv

○

UnsetEnv

○

SetEnvIf

○

SetEnvIfNoCase

○

Action

○

Script

○

ScriptInterpreterSource　[図データ]

×

HWSSetEnvIfIPv6

○

ディレクトリインデクスの表示内容の定義

DirectoryIndex

×

FancyIndexing

×

AddIconByEncoding

○

AddIconByType

○

AddIcon

○

DefaultIcon

×

ReadmeName

×

HeaderName

×

IndexIgnore

○

IndexOrderDefault

×

AddAltByEncoding

○

AddAltByType

○

AddAlt

○

AddDescription

○

IndexOptions

○

Webサーバへのアクセスを制御する定義

AccessFileName

×

AllowEncodedSlashes

×

AllowOverride

×

AuthName

×

AuthType

×

AuthGroupFile

×

AuthUserFile

×

AuthAuthoritative

×

Require

○

Options

×

Order

×

Allow from

○

Deny from

○

Satisfy

×

TraceEnable

×

IdentityCheck　[図データ]

×

SSLによる暗号化および認証の定義

SSLRequireSSL

×

SSLEngine

×

SSLCertificateFile

×※2

SSLCertificateKeyFile

×※2

SSLCACertificatePath　[図データ]

×

SSLCACertificateFile

×

SSLVerifyClient

×

SSLVerifyDepth

×

SSLCipherSuite

×※1

SSLOptions

○

SSLBanCipher

○

SSLProtocol

×

SSLCARevocationFile

×

SSLCARevocationCheck

×

Webサーバを運用形態に合わせて複数ホストに見せる定義

ServerAlias

○

ServerPath

×

イメージマップファイルについての定義

ImapDefault

×

ImapBase

×

ImapMenu

×

HWSImapMenuCharset

×

採取するログの定義

HostnameLookups

×

ErrorLog

×

LogLevel

×

LogFormat

○

HWSWebSocketLog

×

CustomLog

○

TransferLog

○

PidFile

×

ScriptLog

×

ScriptLogBuffer

×

ScriptLogLength

×

HWSLogSSLVerbose

×

HWSLogTimeVerbose

×

HWSRequestLog

×

HWSRequestLogType

×

HWSSuppressModuleTrace

○

HWSErrorLogClientAddr

×

採取するトレースの定義

HWSTraceIdFile

×

HWSTraceLogFile

×

HWSPrfId

×

リバースプロキシについての定義

ProxyPass

○

ProxyPassReverse

○

ProxyVia

×

ProxyErrorOverride

×

ProxyPreserveHost

×

HWSProxyPassReverseCookie

○

Proxy100Continue

×

流量制限機能についての定義

QOSCookieDomain

×

QOSCookieExpires

×

QOSCookieName

○

QOSCookieSecure

×

QOSCookieServers

×

QOSRedirect

○

QOSRejectionServers

×

QOSResponse

×

ヘッダカスタマイズ機能についての定義

Header

○

RequestHeader

○

HTTP/2プロトコル通信機能についての定義

H2Direct

×

H2MaxWorkerIdleSeconds

×

H2MaxWorkers

×

H2MinWorkers

×

H2Padding

×

H2SerializeHeaders

×

H2StreamMaxMemSize

×

H2Upgrade

×

H2WindowSize

×

HWSH2SendGoaway

×

Protocols

○

有効期限設定機能についての定義

ExpiresActive

×

ExpiresByType

○

ExpiresDefault

×

計画停止についての定義

HWSGracefulStopLog

×

HWSGracefulStopTimeout

×

（凡例）

○：指定できる。

×：指定できない。

注

特に記述がないかぎり，ファイル名はディレクトリ名を含めた形式（パス情報付き）で記述できます。

注※1

TLSv1.3用のSSLCipherSuiteとTLSv1.2以前用のSSLCipherSuiteは，それぞれ一つずつ指定できます。

注※2

RSA暗号用のSSLCertificateFileと楕円曲線暗号用のSSLCertificateFileは，それぞれ一つずつ指定できます。

RSA暗号用のSSLCertificateKeyFileと楕円曲線暗号用のSSLCertificateKeyFileは，それぞれ一つずつ指定できます。

6.1.2　ディレクティブの記述規則

(1)　正規表現

ディレクティブの指定に使用できる正規表現を次に示します。

表6‒2　正規表現

記号

機能

使用例

使用例の意味

.

任意の1文字。

a...c

aのあとに任意の3文字とcが続く。abcdcは適合する。

*

直前の1文字の0個以上の繰り返し。

ab*cd*

ac，abbbbc，abbbbcdは適合する。

+

直前の1文字の1個以上の繰り返し。

ab*c+

abbbcは適合する。abbbは適合しない。

?

直前の1文字があるかないか。

abbbc?

abbbc，abbbは適合する。

|

選択肢の区切り。

a|bc|d

a，bcまたはd。

¥

直後の特殊文字（. ^$*+?|¥[](){}）の1文字。ただし，¥を表す場合は¥¥¥。

¥.

.と適合する。

¥¥¥

1文字の¥と適合する。

^

行の先頭に適合する。

^ab

abcdeは適合する。

$

行の末尾に適合する。

abc$

aaabcは適合する。

{m}

直前の正規表現のm個の繰り返し。

a{5}

aaaaaが適合する。

{m,}

直前の正規表現のm個以上の繰り返し。

a{3,}

aaa，aaaaは適合する。aaは適合しない。

{m,n}

直前の正規表現のm個以上n個以下の繰り返し。

a{3,5}

aaa，aaaa，aaaaaが適合する。aa，aaaaaaは適合しない。

[文字列]

文字列にある任意の1文字※。

[abc]*または[a-c]*

aaa，bbb，ccc，cba，aabは適合する。

[^文字列]

文字列にない任意の1文字。

[^0-9]

数字以外の1字が適合する。

(文字列)

文字列をグループ化する。

(ab)+

abababが適合する。ababbは適合しない。

aa(xx|yy)bb

aaxxbb，aayybbが適合する。

注※

次の3文字は，[文字列]内で特殊な意味を持ちます。

^：[の次に指定して，文字列に含まれないものを示すために用います。

]：文字列の最後を示すために用います。

-：範囲を指定するために用います。

また，これら特殊文字の前の¥は省略されます。

[文字列]内で特殊な意味を持つ文字を通常の文字として指定するには，次のようにします。なお，^ ] - ¥ 以外の特殊文字は，通常の文字として扱われます。

^ ：文字列の先頭以外で指定します。（例）[ab^yz]

]：文字列の先頭に指定します。（例）[]abxy]

-：最後に指定します。（例）[abxy-]

¥：¥¥¥と指定します。（例）[¥¥¥abxy]

(2)　ディレクティブに指定するパス情報

ディレクトリ名，ファイル名またはパス名を指定するディレクティブの場合，ディレクティブの種類によって，指定できるパス情報が異なります。

パスの種類には，次のものがあります。各ディレクティブのパス情報は，各ディレクティブで説明します。

絶対パスしか指定できない（Windows版の場合，ドライブ名を付けた指定も絶対パスに含まれる）。

ServerRootディレクティブの指定値からの相対パスで指定できる（ただし，ServerRootディレクティブの指定が先に必要）。

また，パス情報にネットワーク上のディレクトリやファイルを指定することはできません。ネットワークを使用したファイルシステム上のディレクトリやファイルを指定することもできません。

(3)　コメント行

コンフィグファイル中，行の最初に#を付けると，コメント行になります。ただし，ディレクティブを指定したあとに#から始まる文字列を記述しても，#以降をコメントとして扱いません。コメント行を指定する場合の記述例を次に示します。

正しい例

#Deny from all

#行はコメント行として扱われます。

誤った例

Deny from all    #comment

#commentはディレクティブ指定値として扱われます。コメントとしては扱われません。

(4)　IPv6アドレスを指定するときの注意

ディレクティブにIPv6アドレスを記述する場合は，「[IPv6アドレス]」のようにIPv6アドレスを[　]で囲んで指定してください。また，ディレクティブにIPv6アドレスとポート番号を併記する場合は，「[IPv6アドレス]:ポート番号」のようにIPv6アドレスを[　]で囲み，「:」の後ろにポート番号を指定します。

ただし，次のディレクティブにIPv6アドレスを記述する場合は，IPv6アドレスを[　]で囲まないで指定してください。

Allow fromディレクティブ

Deny fromディレクティブ

HWSSetEnvIfIPv6ディレクティブ

IPv6アドレスを指定する場合は，グローバルユニキャストアドレスを指定してください。

(5)　リダイレクタの定義について

リダイレクタ定義（JkMountキーなど）は，リダイレクタ定義ファイル（mod_jk.conf）に設定してください。

ワーカ定義（worker.ワーカ名.hostなど）は，ワーカ定義ファイル（workers.properties）に設定してください。

6.1.3　ディレクティブの説明形式

この項では，「6.2　ディレクティブの詳細」で記載する項目について，注意が必要な事項を説明します。

(1)　ディレクティブ名

ディレクティブ名を記載しています。また，各ディレクティブの指定形式を次の記号で説明しています。

記号

意味

〔　〕

〔　〕内の項目を省略できます。

（例）A〔,B〕〔,C〕のとき，次の4通りの指定ができます。

A

A,B

A,B,C

A,C

｛　｝

｛　｝内のどれか一つを選んで指定します。

（例）A｛,B｜,C｝のとき，次の2通りの指定ができます。

A,B

A,C

｜

選択肢の区切りを表しています。

＿（アンダーライン）

項目の指定を省略したときに，システムが仮定する値を表しています。なお，この値は推奨値を示すものではありません。

…

この記号の直前に位置する項目を繰り返し指定できます。

〜

この記号の直前に位置する項目をこの記号以降の文法規則に従って，記述することを示します。

《　》

項目の指定を省略したときに，システムが仮定する値を表しています。なお，この値は推奨値を示すものではありません。

((　))

指定できる値の範囲を表しています。

(2)　「記述できる場所」について

ディレクティブによっては，記述できる場所が制限されているものがあります。「6.2　ディレクティブの詳細」では，各ディレクティブの記述できる場所を次のような形式で記述します。

記述できる場所

説明

httpsd.conf

VirtualHostブロック，Directoryブロック以外のhttpsd.confファイル

<VirtualHost>

httpsd.confファイルのVirtualHostブロック

<Directory>

httpsd.confファイルのDirectoryブロック，Locationブロック，Filesブロック

.htaccess

AccessFileNameディレクティブで指定したアクセスコントロールファイル

<Location>

httpsd.confファイルのLocationブロック

また，ディレクティブは次に示す順に参照されます。

VirtualHostブロック，Directoryブロック以外のhttpsd.confファイル

httpsd.confファイルのVirtualHostブロック

httpsd.confファイルのDirectoryブロック

アクセスコントロールファイル

httpsd.confファイルのFilesブロック

httpsd.confファイルのLocationブロック

DirectoryブロックのAllowOverrideディレクティブの定義（上書き許可レベル）によって，アクセスコントロールファイルで定義しているディレクティブを有効または無効にできます。

(3)　「上書き許可」について

AllowOverrideディレクティブで上書きを許可する場合の許可レベルを定義します。各ディレクティブの上書き許可レベルは，各ディレクティブで説明します。許可レベルは複数あります。詳細は，AllowOverrideディレクティブを参照してください。なお，各ディレクティブの説明で.htaccessが指定でき，かつ上書き許可レベルの記述がない場合には，許可レベルはAllになります。

6.2　ディレクティブの詳細

6.2.1　<で始まるディレクティブ

ブロック定義のディレクティブを参照順に示します。

<Directory>ディレクティブ，<DirectoryMatch>ディレクティブ，アクセスコントロールファイル

<Files>ディレクティブ，<FilesMatch>ディレクティブ

<Location>ディレクティブ

(1)　<Directory　ディレクトリ名>・・・</Directory>

(a)　内容

特定のディレクトリに対してディレクティブを定義する場合に指定します。ディレクトリ名にディレクトリ名を指定し，そのディレクトリとサブディレクトリだけに有効なディレクティブを定義するブロックを指定できます。

ディレクトリ名は，絶対パスで指定してください。

(b)　記述できる場所

httpsd.conf，<VirtualHost>

(c)　指定例

<Directory />                                         …1.
     Options None                                     …2.
     AllowOverride None                               …3.
</Directory>                                          …4.

<Directory "<Application Serverのインストールディレクトリ>/httpsd/htdocs">  …5.
     Options Indexes                                  …6.
     AllowOverride None                               …7.
     Order allow,deny                                 …8.
     Allow from all                                   …9.
</Directory>                                          …10.

ルートディレクトリの定義

機能はすべて無効

すべての上書き禁止

定義終わり

<Application Serverのインストールディレクトリ>/httpsd/htdocsディレクトリの定義

ディレクトリインデクス表示可

すべての上書き禁止

Allowディレクティブの指定をDenyディレクティブの指定より先に評価

すべてのホストからのアクセスを許可

定義終わり

(2)　<DirectoryMatch　正規表現>・・・</DirectoryMatch>

(a)　内容

正規表現で記述した条件を満たすディレクトリに対してディレクティブを定義する場合に指定します。ディレクトリ名を正規表現で指定し，そのディレクトリとサブディレクトリだけに有効なディレクティブを定義するブロックを指定できます。

正規表現のディレクトリ名は，絶対パスで指定してください。

(b)　記述できる場所

httpsd.conf，<VirtualHost>

(3)　<Files　ファイル名>・・・</Files>

(a)　内容

特定のファイルに対してディレクティブを定義する場合に指定します。ファイル名にファイル名を指定し，そのファイルだけに有効なディレクティブを定義するブロックを指定できます。

(b)　記述できる場所

httpsd.conf，<VirtualHost>，<Directory>，.htaccess

(4)　<FilesMatch　正規表現>・・・</FilesMatch>

(a)　内容

正規表現で記述した条件を満たすファイルに対してディレクティブを定義する場合に指定します。ファイル名を正規表現で指定し，そのファイルだけに有効なディレクティブを定義するブロックを指定できます。

(b)　記述できる場所

httpsd.conf，<VirtualHost>，<Directory>，.htaccess

(5)　<IfModule　〔!〕モジュール名>・・・</IfModule>

(a)　内容

指定したモジュールが組み込まれているとき，ブロック内で指定したディレクティブが有効になります。モジュール名の前に!を付けた場合は，指定したモジュールが組み込まれていないとき，ブロック内で指定したディレクティブが有効になります。ブロック内で指定可能なディレクティブに制限はありません。

(b)　記述できる場所

httpsd.conf，<VirtualHost>，<Directory>，.htaccess

(6)　<Limit　メソッド名　〔メソッド名　…〕>・・・</Limit>

(a)　内容

特定のHTTPプロトコルメソッドだけに有効な，アクセス制御のディレクティブを定義する場合に指定します。メソッド名は複数指定できます。

指定できるメソッド名：GET，POST，PUT，DELETE，CONNECT，OPTIONS

（HEADはGETに含まれています）

ブロック内に指定できるディレクティブ：

Allow from

Deny from

AuthName

AuthType

AuthUserFile

AuthGroupFile

Order

Require

Satisfy

(b)　記述できる場所

httpsd.conf，<VirtualHost>，<Directory>，.htaccess

(c)　指定例

<Directory />
  <Limit PUT DELETE>                    …1.
    Order deny,allow                    …2.
    Deny from all                       …3.
    Allow from .your_domain.com         …4.
  </Limit>                              …5.
</Directory>

PUTおよびDELETEメソッドに対する定義

Denyディレクティブの指定を，Allowディレクティブの指定よりも先に評価

すべてのホストからのPUTおよびDELETEメソッドによるアクセスは不可

.your_domain.comからのPUTおよびDELETEメソッドによるアクセスを許可

定義終わり

(7)　<Location　URL>・・・</Location>

(a)　内容

特定のURLで示す場所へのリクエストについて，ディレクティブを定義する場合に指定します。ただし，URLに，?以降（問い合わせ文字列）は指定できません。

(b)　記述できる場所

httpsd.conf，<VirtualHost>

(c)　指定例

  <Location /server-status>             …1.
       SetHandler server-status         …2.
       Order deny,allow                 …3.
       Deny from all                    …4.
       Allow from .your_domain.com      …5.
  </Location>                           …6.

URL /server-statusの定義

このディレクトリのリクエストはserver-statusハンドラに関連づける

Denyディレクティブの指定をAllowディレクティブの指定よりも先に評価

すべてのホストからのアクセスは不可

.your_domain.comからのアクセスを許可

定義終わり

(8)　<LocationMatch　正規表現>・・・</LocationMatch>

(a)　内容

正規表現で記述した条件を満たすURLへのリクエストについてディレクティブを定義する場合に指定します。ただし，URLに，?以降（問い合わせ文字列）は指定できません。

(b)　記述できる場所

httpsd.conf，<VirtualHost>

(9)　<VirtualHost　｛ホスト名｜IPアドレス〔:ポート番号〕｝　〔｛ホスト名｜IPアドレス〔:ポート番号〕｝　…〕>・・・</VirtualHost>

(a)　内容

ホスト名またはIPアドレス〔:ポート番号〕で示すホストへのリクエストについてディレクティブを定義する場合に指定します。

なお，IPv6アドレスに対応したホスト名も指定できます。IPアドレスにIPv6アドレスを指定する場合は，IPv6アドレスを[　]で囲んでください。

IPアドレスには，すべてのIPアドレスにマッチする*が指定できます。

サーバ名に基づくバーチャルホストの場合には，IPアドレスを明示的に指定してください。

(b)　記述できる場所

httpsd.conf

(c)　指定例

<VirtualHost 172.17.40.30:80>
    :
</VirtualHost>
<VirtualHost [2001::123:4567:89ab:cdef]:80>
    :
</VirtualHost>

6.2.2　Aで始まるディレクティブ

(1)　AccessFileName　ファイル名　〔ファイル名　…〕

〜《.htaccess》

(a)　内容

アクセス制御のディレクティブを定義しているファイル（アクセスコントロールファイル）のファイル名を定義します。AllowOverrideディレクティブで許可されていれば，コンテンツリクエスト時に毎回このファイルを参照しアクセス制限がチェックされます。

(b)　記述できる場所

httpsd.conf，<VirtualHost>

(c)　指定例

AccessFileName .htaccess

アクセスコントロールファイルのファイル名は，.htaccess

(2)　AllowEncodedSlashes　｛On｜Off｝

(a)　内容

符号化されたパス文字が存在するURLの使用を許可するかどうかを設定します。許可しない場合は，クライアントにステータスコード404 Not Foundを応答します。符号化されたパス文字は，Windows版の場合は%2Fと%5C，UNIX版の場合は%2Fを指します。%2Fは/（スラッシュ），%5Cは¥（バックスラッシュ）に該当します。

On：符号化されたパス文字を許可します。

Off：符号化されたパス文字を許可しません。

(b)　記述できる場所

httpsd.conf，<VirtualHost>

(c)　指定例

AllowEncodedSlashes On

(3)　Action　｛MIMEタイプ｜ハンドラ｝　CGIスクリプト名

(a)　内容

MIMEタイプまたはハンドラで指定したコンテンツがWebブラウザからリクエストされたとき，実行させるスクリプトをCGIスクリプト名で指定します。CGIスクリプト名は，URLで指定します。このディレクティブを複数指定する場合，同じMIMEタイプに異なるCGIスクリプトは指定できません。

(b)　記述できる場所

httpsd.conf，<VirtualHost>，<Directory>，.htaccess

(c)　上書き許可

FileInfoレベル

(d)　指定例

Action image/gif /cgi-bin/images.cgi

(4)　AddAlt　"文字列"　拡張子　〔拡張子　…〕

(a)　内容

ディレクトリインデクス表示時に，拡張子に指定したファイルと関連づけて文字列を表示する場合に指定します。一つの文字列に対して複数の拡張子が指定できます。テキストモードのWebブラウザのようにアイコン表示ができない環境で，ファイルの属性を表示する場合などに利用できます。

拡張子に指定できるものを次に示します。

ファイル拡張子

ワイルドカード表記のファイル拡張子またはファイル名

ファイル名

このディレクティブを複数指定する場合，同じ拡張子に異なる文字列は指定できません。

(b)　記述できる場所

httpsd.conf，<VirtualHost>，<Directory>，.htaccess

(c)　上書き許可

Indexesレベル

(d)　指定例

AddAlt "HTML" htm html

拡張子がhtmまたはhtmlのファイルの場合，文字列"HTML"を表示します。

(5)　AddAltByEncoding　"文字列"　MIMEエンコーディング　〔MIMEエンコーディング　…〕

(a)　内容

ディレクトリインデクス表示時に，アイコンが表示できない環境で，MIMEエンコーディング（x-compressなど）と関連づけて文字列を表示する場合に指定します。一つの文字列に対して複数のMIMEエンコーディングが指定できます。このディレクティブを複数指定する場合，同じMIMEタイプに異なる文字列は指定できません。

(b)　記述できる場所

httpsd.conf，<VirtualHost>，<Directory>，.htaccess

(c)　上書き許可

Indexesレベル

(d)　指定例

AddAltByEncoding "gzip" x-gzip

(6)　AddAltByType　"文字列"　MIMEタイプ　〔MIMEタイプ　…〕

(a)　内容

ディレクトリインデクス表示時に，アイコンが表示できない環境で，MIMEタイプ（text/htmlなど）と関連づけて文字列を表示する場合に指定します。一つの文字列に対して複数のMIMEタイプが指定できます。このディレクティブを複数指定する場合，同じMIMEタイプに異なる文字列は指定できません。

(b)　記述できる場所

httpsd.conf，<VirtualHost>，<Directory>，.htaccess

(c)　上書き許可

Indexesレベル

(d)　指定例

AddAltByType "plain text" text/plain

(7)　AddCharset　文字セット　拡張子　〔拡張子　…〕

(a)　内容

ファイル拡張子に対する文字セットを指定します。文字セットはContent-Typeヘッダにcharset=の値として設定されます。クライアントに対して文字セットを明示する場合に使用します。このディレクティブを複数指定する場合，同じ拡張子に異なる文字列は指定できません。指定する拡張子は，AddTypeディレクティブまたはTypesConfigディレクティブで指定したファイルで，MIMEタイプの関連づけが必要です。

(b)　記述できる場所

httpsd.conf，<VirtualHost>，<directory>，.htaccess

(c)　上書き許可

FileInfoレベル

(d)　指定例

AddCharset EUC-JP .euc
AddCharset ISO-2022-JP .jis
AddCharset SHIFT_JIS .sjis

(8)　AddDefaultCharset　〔On｜Off｜文字セット〕

(a)　内容

ファイル拡張子に対する文字セットのデフォルト値を指定します。AddCharsetディレクティブの設定に対するデフォルト値となります。Content-Typeがtext/plain，text/htmlの場合のデフォルトとして設定されます。

On：デフォルト文字セットとしてISO-8859-1を設定します。

Off：文字セットを設定しません。

文字セット：指定した文字セットをデフォルト文字セットとします。

(b)　記述できる場所

httpsd.conf，<VirtualHost>，<directory>，.htaccess

(c)　上書き許可

FileInfoレベル

(d)　指定例

AddDefaultCharset ISO-2022-JP

(9)　AddDescription　"文字列"　ファイル名　〔ファイル名　…〕

(a)　内容

ディレクトリインデクス整形表示時に，ファイル名で指定したファイル拡張子，ワイルドカード表記ファイル名またはパス情報なしの完全なファイル名に対して，説明文として文字列を表示する場合に指定します。なお，ファイル名にスラッシュで終わる文字列を指定した場合，*が付けられワイルドカード指定と同様に見なされます。

ファイル名に指定できるものを次に示します。

ファイル拡張子

ワイルドカード表記のファイル名

ファイル名

このディレクティブを複数指定する場合，同じファイル名に異なる文字列は指定できません。

(b)　記述できる場所

httpsd.conf，<VirtualHost>，<Directory>，.htaccess

(c)　上書き許可

Indexesレベル

(d)　指定例

AddDescription "The planet Mars" /web/pics/mars.gif

(10)　AddEncoding　圧縮形式　拡張子

(a)　内容

Webサーバ内の圧縮データをWebブラウザに表示させるときに必要な拡張子と圧縮形式の関連づけを指定します。Webブラウザに圧縮ファイルの展開の情報としてContent-EncodingヘッダをWebサーバから送信する場合に設定します。このヘッダを利用した運用は，Webブラウザ側の実装に依存します。このディレクティブを複数指定する場合，同じ拡張子に異なる圧縮形式は指定できません。

(b)　記述できる場所

httpsd.conf，<VirtualHost>，<Directory>，.htaccess

(c)　上書き許可

FileInfoレベル

(d)　指定例

AddEncoding x-compress Z    拡張子がZのファイルの圧縮形式はx-compress
AddEncoding x-gzip gz       拡張子がgzのファイルの圧縮形式はx-gzip

(11)　AddHandler　ハンドラ名　拡張子　〔拡張子　…〕

(a)　内容

ハンドラで処理するファイル拡張子を対応付ける場合に定義します。

指定できるハンドラ名を次に示します。このディレクティブを複数指定する場合，同じ拡張子に異なるハンドラ名は指定できません。

cgi-script：CGIスクリプトの実行

imap-file：イメージマップ処理

server-status：ステータスの表示

(b)　記述できる場所

httpsd.conf，<VirtualHost>，<Directory>，.htaccess

(c)　上書き許可

FileInfoレベル

(d)　指定例

AddHandler cgi-script .cgi              拡張子.cgiはcgi-scriptハンドラ
AddHandler imap-file map                拡張子mapはimap-fileハンドラ

(12)　AddIcon ｛(文字列，URL)｜URL｝　拡張子　〔拡張子　…〕

(a)　内容

拡張子などにディレクトリインデクスのアイコンを対応付けて表示する場合に指定します。文字列には画像表示ができないWebブラウザの場合に表示する文字を指定します。URLにアイコンの画像ファイルのURLを指定します。自ホスト内の画像ファイルを指定する場合，URLの「http：//IPアドレス」は省略できます。なお，URLの「http：//IPアドレス」を省略しないでIPv6アドレスを指定する場合は，IPv6アドレスを[　]で囲んでください。

拡張子として指定できるものを次に示します。

ファイル拡張子

ワイルドカード表記のファイル拡張子またはファイル名

ファイル名

拡張子として^^DIRECTORY^^を記述すると，ディレクトリに対するアイコンを設定できます。また，^^BLANKICON^^と指定すると，ディレクトリインデクスを表示した場合の，表示内容のヘッダのインデントを合わせるためのアイコンを設定できます。

このディレクティブを複数指定する場合，同じ拡張子に異なる文字列やURLは指定できません。

(b)　記述できる場所

httpsd.conf，<VirtualHost>，<Directory>，.htaccess

(c)　上書き許可

Indexesレベル

(d)　指定例

AddIcon /icons/tar.gif .tar

拡張子が.tarの場合のアイコン定義

AddIcon /icons/layout.gif .html .shtml .htm .pdf

拡張子が.html，.shtml，.htm，.pdfの場合のアイコン定義

AddIcon /icons/text.gif .txt

拡張子が.txtの場合のアイコン定義

AddIcon /icons/back.gif ..

親ディレクトリのアイコン定義

AddIcon /icons/hand.right.gif README

READMEファイルのアイコン定義

AddIcon /icons/folder.gif ^^DIRECTORY^^

ディレクトリの場合のアイコン定義

AddIcon /icons/blank.gif ^^BLANKICON^^

ディレクトリインデクスのヘッダのインデントアイコン定義

AddIcon http://[2001::123:4567:89ab:cdef]/icons/text.gif .txt

IPv6アドレスを指定する場合のアイコン定義

(13)　AddIconByEncoding　｛(文字列，URL)｜URL｝　MIMEエンコーディング　〔MIMEエンコーディング　…〕

(a)　内容

ディレクトリインデクスの整形表示時のアイコンをMIMEエンコーディングと対応付けて表示する場合に指定します。文字列には画像表示ができないWebブラウザの場合に表示する文字を指定します。URLにアイコンの画像ファイルのURLを指定します。自ホスト内の画像ファイルを指定する場合，URLの「http：//IPアドレス」は省略できます。なお，URLの「http：//IPアドレス」を省略しないでIPv6アドレスを指定する場合は，IPv6アドレスを[　]で囲んでください。

このディレクティブを複数指定する場合，同じMIMEタイプに異なる文字列やURLは指定できません。

(b)　記述できる場所

httpsd.conf，<VirtualHost>，<Directory>，.htaccess

(c)　上書き許可

Indexesレベル

(d)　指定例

AddIconByEncoding (CMP，/icons/compressed.gif) x-compress x-gzip

MIMEエンコーディングx-compressおよびx-gzipの場合のアイコン定義

(14)　AddIconByType　｛(文字列，URL)｜URL｝　MIMEタイプ　〔MIMEタイプ　…〕

(a)　内容

ディレクトリインデクスの整形表示時のアイコンをMIMEタイプと対応付けて表示する場合に指定します。画像表示ができないWebブラウザの場合に表示する文字は文字列で指定できます。また，URLで表示するアイコンの画像ファイル名の場所を指定できます。なお，URLの「http：//IPアドレス」を省略しないでIPv6アドレスを指定する場合は，IPv6アドレスを[　]で囲んでください。

このディレクティブを複数指定する場合，同じMIMEタイプに異なるファイル名は指定できません。

(b)　記述できる場所

httpsd.conf，<VirtualHost>，<Directory>，.htaccess

(c)　上書き許可

Indexesレベル

(d)　指定例

AddIconByType (TXT，/icons/text.gif) text/*

MIMEタイプ　text/*の場合のアイコン定義

AddIconByType (IMG，/icons/image2.gif) image/*

MIMEタイプ　image/*の場合のアイコン定義

AddIconByType (SND，/icons/sound2.gif) audio/*

MIMEタイプ　audio/*の場合のアイコン定義

AddIconByType (VID，/icons/movie.gif) video/*

MIMEタイプ　video/*の場合のアイコン定義

(15)　AddLanguage　言語コード　拡張子

(a)　内容

ドキュメントで使用する言語を指定します。言語コードはContent-Languageレスポンスヘッダに設定されます。このディレクティブを指定すると，Webブラウザの言語設定で言語コードの優先順位（Accept-Languageヘッダ）がリクエストに設定されている場合，Webサーバから送信するコンテンツを選択するコンテントネゴシエーションができます。言語コードはWebブラウザが送信するヘッダ情報に依存します。基本的には，ISO639に定義されている言語コードに従って指定します。なお，コンテントネゴシエーションを有効にするためには，OptionsディレクティブでMultiViewsオプションを設定しなければなりません。このディレクティブを複数指定する場合，同じ拡張子に異なる言語コードは指定できません。

(b)　記述できる場所

httpsd.conf，<VirtualHost>，<Directory>，.htaccess

(c)　上書き許可

FileInfoレベル

(d)　指定例

AddLanguage ja .ja                 日本語
AddLanguage en .en                 英語
AddLanguage fr .fr                 フランス語
AddLanguage de .de                 ドイツ語
AddLanguage da .da                 デンマーク語
AddLanguage el .el                 ギリシャ語
AddLanguage it .it                 イタリア語

(16)　AddType　MIMEタイプ　拡張子　〔拡張子　…〕

(a)　内容

TypesConfigディレクティブで指定したファイルに未定義のコンテンツの拡張子とMIMEタイプを関連づけたい場合に指定します。このディレクティブを複数指定する場合，同じ拡張子に異なるMIMEタイプは指定できません。

(b)　記述できる場所

httpsd.conf，<VirtualHost>，<Directory>，.htaccess

(c)　上書き許可

FileInfoレベル

(d)　指定例

AddType text/html .shtml

MIMEタイプtext/htmlと拡張子.shtmlを関連づけます。

(17)　Alias　URL　ディレクトリ名

(a)　内容

Webブラウザからリクエストされた特定のURLを別名に置き換える場合に指定します。ただし，URLには，?以降（問い合わせ文字列）を指定できません。URLで指定されたディレクトリを，ディレクトリ名で指定したディレクトリに置き換えて，Webブラウザに表示します。

次のディレクティブ指定値と重複するURLは指定できません。

AliasMatchの正規表現

ProxyPassのパス名

Redirectの旧パス

RedirectMatchの正規表現

ScriptAliasのURL

ScriptAliasMatchの正規表現

リダイレクタ定義ファイルのJkMountのURLパターン

例えば，次のような指定はできません。

  Alias /aaa/bbb/ C:/alias/
  ProxyPass /aaa/ http://aaa.example.com/

ディレクトリ名は，絶対パスで指定してください。

(b)　記述できる場所

httpsd.conf，<VirtualHost>

(c)　指定例

Alias /icons/ "<Application Serverのインストールディレクトリ>/httpsd/icons/"

/icons/を<Application Serverのインストールディレクトリ>/httpsd/icons/に置き換えます。

(18)　AliasMatch　正規表現　新パス

(a)　内容

WebブラウザからリクエストされたURLを別名に置き換える場合に指定します。ただし，URLには，?以降（問い合わせ文字列）を指定できません。

正規表現で記述した条件を満たすURLがWebブラウザからリクエストされた場合，指定した新パスのコンテンツをWebブラウザに表示します。正規表現で括弧（）を使用してグループ化している場合，そのi番目のグループの表現にマッチした文字列を，新パスで $iを使用して参照できます。iには1から9までの数字を指定します。

次のディレクティブ指定値と重複するURLは指定できません。

Aliasの正規表現

ProxyPassのパス名

Redirectの旧パス

RedirectMatchの正規表現

ScriptAliasのURL

ScriptAliasMatchの正規表現

リダイレクタ定義ファイルのJkMountのURLパターン

例えば，次のような指定はできません。

  AliasMatch ^/aaa/bbb/(.*) C:/alias/$1
  ProxyPass /aaa/ http://aaa.example.com/

新パスは，絶対パスで指定してください。また，新パスの文字として，'$'または'&'を含める場合は，その文字の前に'¥'を付加してください。なお，$iを指定する際には，'$'の前に'¥'を付加する必要はありません。

(b)　記述できる場所

httpsd.conf，<VirtualHost>

(c)　指定例

AliasMatch ^/html/(.*) "C:/htdocs/html/$1"

"/html/"で始まるリクエストのとき，/html/部分をC:/htdocs/html/に置き換えます。例えば，/html/index.htmlへのアクセスの場合，C:/htdocs/html/index.htmlに置き換えます。

(19)　Allow from　｛ホスト｜all｜env=環境変数｝　〔｛ホスト｜env=環境変数｝　…〕

(a)　内容

Webサーバへアクセスできるクライアントを制限する場合に指定します。ホストにはアクセスを許可するホストのドメイン名，IPアドレス，サブネット，ネットマスクを指定できます。すべてのホストからのアクセスを許可する場合はallを指定します。

また，ホストには，IPv6アドレスに関するドメイン名，アドレスおよびプリフィックス長も指定できます。IPv6アドレスを指定する場合は，IPv6アドレスを[　]で囲まないでください。プリフィックス長は，「IPv6アドレス/プリフィックス長」の形式で指定します。プリフィックス長は10進数で指定してください。

env=環境変数を指定すると，サーバへのアクセスを環境変数で制御できます。BrowserMatch，BrowserMatchNoCase，SetEnvIf，SetEnvIfNoCaseディレクティブと併せて使用すれば，HTTPリクエストヘッダフィールドに基づいてアクセスを制限できます。

Allowディレクティブ（アクセス許可）とDenyディレクティブ（アクセス制限）は，Orderディレクティブで評価の順序を設定できます。

ホスト

意味

ドメイン名

ドメイン名で指定したホストからのアクセスを許可する。

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レベル

(d)　指定例

（例1）

SetEnvIf User-Agent Mozilla.* access_ok
<Directory /docroot>
    Order deny,allow
    Deny from all
    Allow from env=access_ok
</Directory>

この場合，User-Agentの文字列がMozillaを含むブラウザからのリクエストだけがアクセスを許可されて，ほかのアクセスは拒否されます。

（例2）

ホストにIPv6アドレスを指定する場合は，次のように指定します。

allow from 2001::123:4567:89ab:cdef

また，プリフィックス長を指定するとき，次の指定はどれも同じ意味となります。

allow from 2001:0:0:89ab::/64
allow from 2001:0:0:89AB::/64
allow from 2001::89ab:0:0:0:0/64
allow from 2001:0000:0000:89ab:0000:0000:0000:0000/64

(20)　AllowOverride　指示子　〔指示子　…〕

〜《None》

(a)　内容

AccessFileNameディレクティブで指定したファイルでアクセス情報定義の上書きを許可するかどうかを設定します。各指示子によって制御できるディレクティブは，各ディレクティブの上書き許可の記述を参照してください。

指示子

内容

AuthConfig

AuthGroupFile，AuthName，AuthType，AuthUserFile，Requireディレクティブなど

サーバへのアクセス制御関連のディレクティブの上書きを許可

FileInfo

AddType，AddEncoding，AddLanguageディレクティブなど

コンテンツ管理，MIMEタイプのディレクティブの上書きを許可

Indexes

FancyIndexing，AddIcon，AddDescriptionディレクティブなど

ディレクトリインデクス関連のディレクティブの上書きを許可

Limit

Allow from，Deny from，Orderディレクティブ

ホスト名またはIPアドレスを用いたアクセス制御の上書きを許可

Options

Optionsディレクトリの使用を許可

All

すべての上書きを許可する

None

すべての上書きを禁止する

(b)　記述できる場所

<Directory>

Locationブロック，Filesブロックに指定した場合，AllowOverrideディレクティブの指定は有効になりません。

(21)　AuthAuthoritative　｛On｜Off｝

(a)　内容

ユーザ認証をする場合の制御方法を指定します。

On：AuthUserFile，AuthGroupFile，Requireディレクティブの設定によるユーザ認証をします。ユーザ未登録またはパスワード不整合の場合は401エラーステータスをWebブラウザに表示します。

Off：AuthUserFile，AuthGroupFile，Requireディレクティブの設定によるユーザ認証をします。そのとき，パスワード不整合の場合は401エラーステータスをWebブラウザに表示します。さらに，ユーザ未登録の場合には他製品のモジュール（機能）でユーザ認証をします。

(b)　記述できる場所

<Directory>，.htaccess

(c)　上書き許可

AuthConfigレベル

(22)　AuthGroupFile　ファイル名

(a)　内容

グループでユーザ認証をする場合，認証するグループのリストを格納しているファイル名を指定します。ファイル名には，絶対パスまたはServerRootディレクティブの指定値からの相対パスが指定できます。

グループファイルはテキストエディタを使用して次に示すようなフォーマットで作成してください。

グループ名：ユーザ名〔 ユーザ名　…〕

任意のグループ名に，ユーザ認証のためのパスワードファイルに登録しているユーザ名を定義します。1行につき1グループで指定します。グループファイルには複数グループを定義できます。同じグループ名の行を複数指定した場合には，同じグループ名に登録されているすべてのユーザ名を含んだ一つのグループが定義されます。

(b)　記述できる場所

<Directory>，.htaccess

(c)　上書き許可

AuthConfigレベル

(23)　AuthName　realm名

(a)　内容

ユーザ認証する場合のrealm名（Webブラウザのユーザ認証画面に表示される）を指定します。このディレクティブを指定する場合はAuthType，Require，AuthUserFile（またはAuthGroupFile）ディレクティブを必ず指定しなければなりません。ただし，ディレクトリサービスを利用したユーザ認証を行う場合は，AuthUserFile（またはAuthGroupFile）ディレクティブの指定は必要ありません。

(b)　記述できる場所

<Directory>，.htaccess

(c)　上書き許可

AuthConfigレベル

(24)　AuthType　認証タイプ名

(a)　内容

ユーザ認証する場合の認証制御のタイプを指定します。認証タイプ名として"Basic"が指定できます。このディレクティブを指定する場合はAuthName，Require，AuthUserFile（またはAuthGroupFile）ディレクティブを必ず指定しなければなりません。ただし，ディレクトリサービスを利用したユーザ認証を行う場合は，AuthUserFile（またはAuthGroupFile）ディレクティブの指定は必要ありません。

Basic：Base64コード変換をします。

(b)　記述できる場所

<Directory>，.htaccess

(c)　上書き許可

AuthConfigレベル

(25)　AuthUserFile　ファイル名

(a)　内容

ユーザ名でユーザ認証をする場合，認証するユーザ名とパスワードのリストを格納しているファイル名を指定します。

ファイル名には，絶対パスまたはServerRootディレクティブの指定値からの相対パスが指定できます。

(b)　記述できる場所

<Directory>，.htaccess

(c)　上書き許可

AuthConfigレベル

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=!環境変数：指定した環境変数が設定されていない場合に，ログを採取します。

表6‒3　フォーマット一覧

フォーマット

意味

%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

レスポンス完了時の接続ステータス。

　　＋：レスポンス送信後も接続を維持する。

　　−：レスポンス送信後に接続を切断する。

　　Ｘ：レスポンス完了前に接続を切断する。

%>s

最終ステータス。

注

フォーマットで示す{　}は選択を意味するものではありません。{　}内の太字はログを採取する変数名を，細字は文字列そのままを記述します。

注※1

フォーマットに%Aまたは%aを指定した場合，IPv6アドレスも出力できます。

注※2

フォーマットに%hまたは%Vを指定した場合，IPv6アドレスに対応したホスト名またはIPv6アドレスも出力できます。

注※3

ルートアプリケーション情報とクライアントアプリケーション情報は，クライアントからAP情報が設定されたリクエストを受信した場合，およびリバースプロキシを使用してリクエストを転送する場合に出力します（リダイレクタを使用した場合は出力しません）。

表6‒4　SSL関連のログフォーマット一覧

フォーマット

意味

%{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"

6.2.4　E，F，G，H，Iで始まるディレクティブ

(1)　ErrorDocument　エラーステータス番号　｛テキスト｜ローカルURL｜フルURL｝

(a)　内容

エラーが発生したときに，Webブラウザへ表示するメッセージをカスタマイズする場合に指定します。

テキスト：文字列を"で囲み指定します。

ローカルURL：先頭に/を記述して，自サイト内のコンテンツを指定します。

フルURL：http://またはhttps://で始まるURLを記述し，他サイトのコンテンツを指定します。

このディレクティブに指定できるエラーステータス番号と，テキスト，ローカルURL，フルURLの指定可否について，次に示します。

エラーステータス番号（意味）

テキスト

ローカルURL

フルURL

400 (Bad Request)

○

△

△

401 (Authorization Required)

○

○

×

402 (Payment Required)

○

○

○

403 (Forbidden)

○

○

○

404 (Not Found)

○

○

○

405 (Method Not Allowed)

○

○

○

406 (Not Acceptable)

○

○

○

407 (Proxy Authentication Required)

○

○

○

408 (Request Time-out)

△

△

△

409 (Conflict)

○

○

○

410 (Gone)

○

○

○

411 (Length Required)

○

△

△

412 (Precondition Failed)

○

○

○

413 (Request Entity Too Large)

○

○

○

414 (Request-URI Too Large)

○

△

△

415 (Unsupported Media Type)

○

○

○

416 (Requested Range Not Satisfiable)

○

○

○

417 (Expectation Failed)

○

△

△

422 (Unprocessable Entity)

○

○

○

423 (Locked)

○

○

○

424 (Failed Dependency)

○

○

○

500 (Internal Server Error)

○

○

○

501 (Method Not Implemented)

○

○

○

502 (Bad Gateway)

○

○

△

503 (Service Temporarily Unavailable)

○※

○※

○※

504 (Gateway Timeout)

○

○

○

505 (HTTP Version Not Supported)

○

○

○

506 (Variant Also Negotiates)

○

○

○

507 (Insufficient Storage)

○

○

○

510 (Not Extended)

○

○

○

（凡例）

○：指定できる。

△：リバースプロキシ機能またはリダイレクタを使用する場合，バックエンドサーバまたはJ2EEサーバからのエラーメッセージをカスタマイズするときに指定できる。

×：指定できない。

注※

流量制限機能が返すメッセージをカスタマイズする場合は，QOSResponseディレクティブまたはQOSRedirectディレクティブを使用してください。

このディレクティブ指定時には，次の点に留意してください。

このディレクティブを複数指定する場合，同じエラー番号に異なる指定はできません。

CGIプログラム内で設定されたエラーステータスに対しては，メッセージをカスタマイズできません。

ローカルURL，フルURLの指定先でエラーとなる場合は，カスタマイズできません。

ローカルURLの指定先でコンテントネゴシエーションが発生する場合は，エラーとなりカスタマイズできないことがあります。

LoadModuleディレクティブによって動的に接続したモジュール内で設定されたエラーステータスに対しても，そのモジュールの実装方法によってメッセージをカスタマイズできない場合があります。

フルURLの指定時には，ステータスコード302 FoundおよびLocationヘッダに新パスを設定した応答を返します。通常，ステータスコード302を受けたWebブラウザは，Locationヘッダに指定されたアドレスに対して自動的にリダイレクトします。

フルURLの指定時には，IPv6アドレスまたはIPv6アドレスに対応したホスト名も指定できます。IPv6アドレスを指定する場合は，IPv6アドレスを[　]で囲んでください。

リバースプロキシ機能を使用する場合，ProxyErrorOverride Onを指定する必要があります。

(b)　記述できる場所

httpsd.conf，<VirtualHost>，<Directory>，.htaccess

(c)　上書き許可

FileInfoレベル

(d)　指定例

ErrorDocument 500 "Server Error."
ErrorDocument 404 /missing.html
ErrorDocument 403 http://some.other_server.com/subscription_info.html
ErrorDocument 404 http://[2001::123:4567:89ab:cdef]/missing.html

(2)　ErrorLog　｛ファイル名｜パイプ｝

〜《logs/error_log》 (UNIX版)

〜《logs/error.log》 (Windows版)

(a)　内容

エラーログを出力するファイル名を指定します。出力するログの内容は，LogLevelディレクティブで選択できます。

ファイル名には，絶対パスまたはServerRootディレクティブの指定値からの相対パスが指定できます。

ファイル名：エラーログを格納するファイル名を指定します。ServerRootディレクティブ指定値からの相対パスで指定できます。

パイプ：標準入力からエラーログ情報を受け取るプログラムを"|プログラム名"の形式で指定します。Windows版での注意事項は，CustomLogディレクティブを参照してください。

(b)　記述できる場所

httpsd.conf，<VirtualHost>

(c)　指定例

ErrorLog logs/error.log

(3)　ExtendedStatus　｛On｜Off｝

(a)　内容

server-statusハンドラによるステータス表示形式で，それぞれのリクエストの拡張ステータス情報を表示するかどうかを指定します。

On：拡張ステータス情報を表示します。この場合，クライアントのIPアドレスがIPv6アドレスでも表示します。ただし，最大表示数は31バイトです。

Off：拡張ステータス情報を表示しません。

(b)　記述できる場所

httpsd.conf

(4)　ExpiresActive　｛On｜Off｝

(a)　内容

レスポンスにExpiresヘッダおよびCache-Controlヘッダを追加するかどうかを指定します。

On：ExpiresヘッダおよびCache-Controlヘッダを追加します。

Off：ExpiresヘッダおよびCache-Controlヘッダを追加しません。

(b)　注意事項

有効期限設定機能を使用するためにはmod_expiresモジュールの組み込みが必要です。有効期限設定機能の詳細は，「4.11　有効期限設定機能」を参照してください。

ExpiresDefaultディレクティブまたはExpiresByTypeディレクティブを指定していない場合は，ExpiresActiveディレクティブにOnが指定されていても，レスポンスにExpiresヘッダおよびCache-Controlヘッダは追加されません。

(c)　記述できる場所

httpsd.conf，<VirtualHost>，<Directory>，.htaccess

(d)　上書き許可

Indexesレベル

(5)　ExpiresByType　MIMEタイプ　｛A｜M｝時間

〜((0−2147483647))（単位：秒）

(a)　内容

レスポンスにExpiresヘッダおよびCache-Controlヘッダを追加する場合に，指定するMIMEタイプのドキュメントに対する有効期限を指定します。このディレクティブはExpiresActiveディレクティブでOnを指定している場合に有効になります。ExpiresDefaultディレクティブで設定されたデフォルトの有効期限は，この設定によってMIMEタイプ別に上書きされます。

基準時刻をAまたはMで指定し，基準時刻から有効期限までの時間を秒単位で指定します。AまたはMと，時間との間に空白は入りません。

A：クライアントがアクセスした時刻を基準時刻とします。

M：ファイルを最後に修正した時刻を基準時刻とします。

(b)　注意事項

有効期限設定機能を使用するためにはmod_expiresモジュールの組み込みが必要です。有効期限設定機能の詳細は，「4.11　有効期限設定機能」を参照してください。

(c)　記述できる場所

httpsd.conf，<VirtualHost>，<Directory>，.htaccess

(d)　上書き許可

Indexesレベル

(e)　指定例

ExpiresByType text/html A604800

(6)　ExpiresDefault　｛A｜M｝時間

〜((0−2147483647))（単位：秒）

(a)　内容

レスポンスにExpiresヘッダおよびCache-Controlヘッダを追加する場合に，デフォルトの有効期限を指定します。このディレクティブはExpiresActiveディレクティブでOnを指定している場合に有効になります。この設定はExpiresByTypeディレクティブによってMIMEタイプごとに上書きされます。

基準時刻をAまたはMで指定し，基準時刻から有効期限までの時間を秒単位で指定します。AまたはMと，時間との間に空白は入りません。

A：クライアントがアクセスした時刻を基準時刻とします。

M：ファイルを最後に修正した時刻を基準時刻とします。

(b)　注意事項

有効期限設定機能を使用するためにはmod_expiresモジュールの組み込みが必要です。有効期限設定機能の詳細は，「4.11　有効期限設定機能」を参照してください。

(c)　記述できる場所

httpsd.conf，<VirtualHost>，<Directory>，.htaccess

(d)　上書き許可

Indexesレベル

(e)　指定例

ExpiresDefault A604800

(7)　FancyIndexing　｛On｜Off｝

(a)　内容

ディレクトリインデクスを表示する場合に，整形表示（ファンシーインデクス）をするかどうかを指定します。

On：整形表示をします。

Off：整形表示をしません。

(b)　記述できる場所

httpsd.conf，<VirtualHost>，<Directory>，.htaccess

(c)　上書き許可

Indexesレベル

(d)　指定例

FancyIndexing On

整形表示機能を使用します。

(8)　FileETag　〔｛+｜-｝〕オプション　〔〔｛+｜-｝〕オプション …〕

〜《MTime Size》

(a)　内容

ETagレスポンスヘッダフィールドを作成するために使用されるファイル属性値を指定します。このディレクティブが指定されていない場合，ETagレスポンスヘッダフィールドにはファイルに割り振られた一意なID，最終更新時刻およびバイト数が設定されます。

オプションに＋−を指定しない場合は，オプションで指定した属性値が使用されます。

オプションに＋−を指定する場合は，FileETagディレクティブによって設定された属性値を変更できます。

＋：設定されている属性値にオプションで指定した属性値が追加されます。

−：設定されている属性値からオプションで指定した属性値が削除されます。

指定できるオプションの一覧を次に示します。

オプション

意味

Inode

ファイルに割り振られた一意なIDが含まれます。

Mtime

ファイルの最終更新時刻が含まれます。

Size

ファイルのバイト数が含まれます。

All

Inode，Mtime，Sizeのオプションがすべて有効になります。

None

Etagヘッダが付きません。

(b)　注意事項

FileETagディレクティブのInodeオプションを有効にした場合，負荷分散をしているWebサーバ環境などで，同一のコンテンツを要求するごとに，異なるIDがEtagヘッダに含まれることがあります。このため，同一コンテンツでありながらそのEtagヘッダの内容が異なり，ブラウザやプロキシでのキャッシングにとって不都合となることがあります。この場合，FileETagディレクティブによって，Inodeオプションを無効にするように指定することで回避できます。

＋−を使用しないでこのディレクティブを複数指定すると，最後に指定したディレクティブだけが有効になります。

−を付加した属性値だけを指定した場合は，Allオプションを指定した場合と同じ動作になります。

AllオプションとNoneオプションには，＋−を指定できません。

オプションに'-Inode -Mtime -Size'と指定した場合は，このディレクティブを指定していない場合と同じ状態になります。ETagレスポンスヘッダフィールドにはファイルのinode番号，最終更新時刻およびバイト数が設定されます。

(c)　記述できる場所

httpsd.conf，<VirtualHost>，<Directory>，.htaccess

(d)　上書き許可

FileInfoレベル

(e)　指定例

（例1）

FileETag Inode Mtime Size
FileETag -Inode

この指定では，ファイルの最終更新時刻およびバイト数が属性値として使用されます。

（例2）

FileETag Inode Mtime
FileETag Size

この指定では，ファイルのバイト数が属性値として使用されます。

（例3）

FileETag All
FileETag -Inode -Mtime -Size

この指定では，ファイルの一意なID，最終更新時刻およびバイト数が属性値として使用されます。

(9)　ForceType　MIMEタイプ

(a)　内容

<Directory>ブロックまたはアクセスコントロールファイルに定義し，特定のディレクトリ下のすべてのコンテンツに対して使用するMIMEタイプを指定します。noneを指定すると，それまでのForceTypeディレクティブの指定が無効になります。

(b)　記述できる場所

<Directory>，.htaccess

(c)　上書き許可

FileInfoレベル

(10)　Group　グループ名　[図データ]

〜《#-1》

(a)　内容

サーバプロセスが動作するときのグループ名を指定します。

(b)　記述できる場所

httpsd.conf

(c)　指定例

Group nogroup                     グループ名nogroupを定義

(11)　H2Direct　｛On｜Off｝

《h2はoff，h2cはon》

(a)　内容

HTTP/2ダイレクトモードを有効にするかどうかを指定します。HTTP/2プロトコルの通信を有効にしたいバーチャルホストの<VirtualHost>ブロック内で指定する必要があります。

HTTP/2ダイレクトモードとは，接続でサーバが受信した最初のバイトがHTTP/2プリアンブルと一致する場合に，HTTP/2プロトコルに切り替えます。これはh2cの場合に有効です。

h2cをサポートするサーバについて帯域外の知識を持っているクライアントの場合，HTTP/2ダイレクトモードを有効にすることで，クライアントはHTTP/1.1アップグレードを実行する必要がなくなり，パフォーマンスが向上し，リクエストボディに対するアップグレード制限が回避されます。

On：HTTP/2ダイレクトモードを有効にします。

Off：HTTP/2ダイレクトモードを無効にします。

(b)　注意事項

Protocolsディレクティブでh2またはh2cが有効になっていない場合，HTTP/2プリアンブルをチェックしません。この場合，H2Directディレクティブの設定は意味がありません。

デフォルトではh2はoff，h2cはonであり，h2とh2cで設定が異なります。H2Directディレクティブを設定した場合，h2とh2cの両方で同じ指定値が設定されます。

HTTP/2プロトコル通信機能を使用するためにはmod_http2モジュールの組み込みが必要です。HTTP/2プロトコル通信については，「4.17　HTTP/2プロトコル通信機能」を参照してください。

(c)　記述できる場所

httpsd.conf，<VirtualHost>

(12)　H2MaxWorkerIdleSeconds　時間

〜((1−2147483647))《600》（単位：秒）

(a)　内容

HTTP/2プロトコル処理専用のワーカスレッドを終了させるまでの最大秒数を指定します。H2MinWorkersディレクティブ指定値を超えているワーカスレッドだけに適用されます。

(b)　注意事項

HTTP/2プロトコル通信機能を使用するためにはmod_http2モジュールの組み込みが必要です。HTTP/2プロトコル通信については，「4.17　HTTP/2プロトコル通信機能」を参照してください。

(c)　記述できる場所

httpsd.conf

(13)　H2MaxWorkers　スレッド数

〜((1−150000))　[図データ]

〜((1−10000))　[図データ]

《H2MinWorkersディレクティブ指定値×3/2》

(a)　内容

サーバプロセスごとに生成するHTTP/2プロトコル処理に使用するワーカスレッドの最大数を指定します。

(b)　注意事項

HTTP/2プロトコル通信機能を使用するためにはmod_http2モジュールの組み込みが必要です。HTTP/2プロトコル通信については，「4.17　HTTP/2プロトコル通信機能」を参照してください。

(c)　記述できる場所

httpsd.conf

(14)　H2MinWorkers　スレッド数

〜((1−15000))　[図データ]

〜((1−1000))　[図データ]

《ThreadsPerChildディレクティブ指定値》

(a)　内容

サーバプロセスごとに生成するHTTP/2プロトコル処理に使用するワーカスレッドの最小数を指定します。

(b)　注意事項

HTTP/2プロトコル通信機能を使用するためにはmod_http2モジュールの組み込みが必要です。HTTP/2プロトコル通信については，「4.17　HTTP/2プロトコル通信機能」を参照してください。

(c)　記述できる場所

httpsd.conf

(15)　H2Padding　数

〜((0−8))《0》

(a)　内容

デフォルトの0では，パディングバイトはペイロードフレーム（HEADERS，DATA，PUSH_PROMISEなど）に追加されません。

このディレクティブで1〜8の数値を設定すると，各フレームに[0, 2^指定値−1]の範囲の乱数が追加されます。

パディングするバイト数が多いほど，メッセージ長がわかりにくくなりますが，トラフィックも増えます。

(b)　注意事項

HTTP/2プロトコル通信機能を使用するためにはmod_http2モジュールの組み込みが必要です。HTTP/2プロトコル通信については，「4.17　HTTP/2プロトコル通信機能」を参照してください。

(c)　記述できる場所

httpsd.conf，<VirtualHost>

(16)　H2SerializeHeaders　｛On｜Off｝

(a)　内容

HTTP/2リクエストをHTTP/1.1でシリアル化して処理するかどうかを指定します。HTTP/1.1でシリアル化することでパフォーマンスは低下しますが，下位互換性が高まります。ただし，このディレクティブの機能は今後無効となるため，Onを指定することは推奨しません。

On：HTTP/2リクエストをHTTP/1.1でシリアル化して処理します。

Off：HTTP/2リクエストをHTTP/1.1でシリアル化しません。

(b)　注意事項

HTTP/2プロトコル通信機能を使用するためにはmod_http2モジュールの組み込みが必要です。HTTP/2プロトコル通信については，「4.17　HTTP/2プロトコル通信機能」を参照してください。

(c)　記述できる場所

httpsd.conf，<VirtualHost>

(17)　H2StreamMaxMemSize　最大メモリサイズ

〜((1024−2147483647))《32768》

(a)　内容

ストリームのメモリにバッファリングされる送信データの最大サイズを指定します。ストリーム処理は，制限に達するとフリーズして，バッファに入れられたデータがクライアントに送信された場合に続行されます。

(b)　注意事項

HTTP/2プロトコル通信機能を使用するためにはmod_http2モジュールの組み込みが必要です。HTTP/2プロトコル通信については，「4.17　HTTP/2プロトコル通信機能」を参照してください。

(c)　記述できる場所

httpsd.conf，<VirtualHost>

(18)　H2Upgrade　｛On｜Off｝

《h2はoff，h2cはon》

(a)　内容

HTTP/1.1からHTTP/2へのアップグレードを有効にするかどうかを指定します。

On：HTTP/1.1からHTTP/2へのアップグレードを有効にします。

Off：HTTP/1.1からHTTP/2へのアップグレードを無効にします。

プロトコルを切り替えるこの方法はHTTP/1.1で定義されており，クライアントがUpgradeヘッダを使用して，別のプロトコルを使用する意思があることを通知します。これは，HTTP/1.1接続の任意のリクエストで発生する可能性があります。

このディレクティブでのHTTP/2へのアップグレードは，Protocolsディレクティブでh2またはh2cが有効になっている場合にだけ効果があります。

(b)　注意事項

リクエストボディを含むPOSTとPUTは，HTTP/2へのアップグレードができません。この場合にアップグレードが必要なときは，H2Directディレクティブを設定してください。

デフォルトはh2はoff，h2cはonであり，h2とh2cで設定が異なります。H2Upgradeディレクティブを設定した場合，h2とh2cの両方で同じ指定値が設定されます。

HTTP/2プロトコル通信機能を使用するためにはmod_http2モジュールの組み込みが必要です。HTTP/2プロトコル通信については，「4.17　HTTP/2プロトコル通信機能」を参照してください。

(c)　記述できる場所

httpsd.conf，<VirtualHost>，<Directory>，.htaccess

(19)　H2WindowSize　サイズ

〜((65535−2147483647))《65535》

(a)　内容

クライアントからサーバへのフロー制御に使用されるウィンドウサイズをバイト単位で指定します。クライアントは，サーバが通知した使用可能なサイズの制限に到達するとストリームでの送信を停止します。

(b)　注意事項

HTTP/2プロトコル通信機能を使用するためにはmod_http2モジュールの組み込みが必要です。HTTP/2プロトコル通信については，「4.17　HTTP/2プロトコル通信機能」を参照してください。

(c)　記述できる場所

httpsd.conf，<VirtualHost>

(20)　Header　〔always〕｛｛set｜append｜add｝ヘッダ　ヘッダ値｜edit ヘッダ　正規表現 置換文字列｜unset　ヘッダ｝〔env=〔!〕環境変数〕

(a)　内容

レスポンスヘッダをカスタマイズする場合に指定します。リバースプロキシとして使用する場合，バックエンドのWebサーバが返すステータスコードの値にかかわらず，レスポンスヘッダをカスタマイズします。

always：alwaysを指定した場合，エラーのステータスコード応答時にも有効になります。alwaysを指定していない場合，200番台のステータスコード応答時に有効になります。ただし，alwaysを指定し，リバースプロキシとして使用する場合，バックエンドサーバが返したレスポンスヘッダをカスタマイズしません。

set：ヘッダを設定します。ヘッダがある場合は，指定したヘッダ値に書き換えます。

append：存在するヘッダにヘッダ値を追加します。存在するヘッダ値との間は，コンマで区切られます。ヘッダがない場合は，ヘッダを設定します。

add：ヘッダがあっても，別の行にヘッダを設定します。同じヘッダを複数行設定する場合に使用します。

edit：指定したヘッダがある場合，ヘッダ値の正規表現に合致した部分を置換文字列に置き換えます。正規表現で括弧（）を使用してグループ化している場合，そのi番目のグループの表現にマッチした文字列を，置換文字列で$iを使用して参照できます。iには1から9までの数字を指定します。

unset：指定したヘッダがある場合，そのヘッダをすべて削除します。

env=環境変数：指定した環境変数が設定されている場合に，Headerディレクティブで指定した内容を実行します。

env=!環境変数：指定した環境変数が設定されていない場合に，Headerディレクティブで指定した内容を実行します。

ヘッダ値に空白がある場合は，"（引用符）で囲む必要があります。ヘッダ値は文字だけから成る文字列，フォーマット指示子を含む文字列または両方から成る文字列を指定できます。フォーマット指示子を次に示します。

フォーマット

意味

%t

リクエストを受け取った時刻を，1970年1月1日0時0分0秒(GMT：Greenwich Mean Time)から経過した時間で表示する。単位はマイクロ秒。先頭には"t="が付けられる。

%D

リクエスト処理に掛かった時間を表示する。単位はマイクロ秒。先頭には"D="が付けられる。

%{env_name}e

環境変数env_nameの値。

(b)　注意事項

ヘッダカスタマイズ機能を使用するためにはmod_headersモジュールの組み込みが必要です。ヘッダカスタマイズ機能については，「4.10　ヘッダカスタマイズ機能」を参照してください。

CGIスクリプトからのレスポンスヘッダをカスタマイズする場合は，alwaysを指定してください。

(c)　記述できる場所

httpsd.conf，<VirtualHost>，<Directory>，.htaccess

(d)　上書き許可

FileInfoレベル

(e)　指定例

Header set Cache-Control no-cache

(21)　HeaderName　ファイル名

(a)　内容

ディレクトリインデクス表示時のヘッダに付けるコメントを記述したファイルのファイル名（パス情報なし）を指定します。HTMLまたはプレーンテキストで記述できます。ただし，AddTypeディレクティブまたはTypesConfigディレクティブで指定したファイルで，MIMEタイプが正しく定義されている必要があります。プレーンテキストでコメントを作成した場合，ディレクトリインデクス表示のHTMLには<PRE>タグが追加されます。

(b)　記述できる場所

httpsd.conf，<VirtualHost>，<Directory>，.htaccess

(c)　上書き許可

Indexesレベル

(d)　指定例

HeaderName HEADER.html

各ディレクトリ下のHEADER.htmlの内容をヘッダに付けます。

(22)　HostnameLookups　｛On｜Off｜double｝

(a)　内容

CGIのREMOTE_HOST環境変数のIPアドレスおよびログファイルに出力するクライアントのIPアドレスをホスト名に変換するために，ホスト名のルックアップの逆引きをするかどうかを指定します。なお，逆引きを使用する場合，レスポンスが遅くなります。

On：IPアドレスをホスト名に変換します。

Off：IPアドレスをホスト名に変換しません。

double：IPアドレスをホスト名に変換します。その後，再変換し，IPアドレスが正しいかどうかを確認します。

このディレクティブは，IPv6アドレスにも対応しています。

(b)　記述できる場所

httpsd.conf，<VirtualHost>，<Directory>

(c)　指定例

HostnameLookups Off

IPアドレスをホスト名に変換しません。

(23)　HWSErrorDocumentMETACharset ｛On｜Off｜文字セット｝　[図データ]

(a)　内容

エラーが発生したときにWebブラウザへ表示するメッセージ（以降，エラードキュメントと呼びます）についての文字セットを設定します。文字セットは，エラードキュメント中にMETAタグでcharset=の値として設定されます。ErrorDocument ディレクティブで，カスタマイズされたエラードキュメントは，このディレクティブのMETAタグによる文字セットの設定対象とはなりません。

On：文字セットISO-8859-1を設定します。

Off：文字セットを設定しません。

文字セット：指定した文字セットを設定します。

(b)　記述できる場所

httpsd.conf

(c)　指定例

HWSErrorDocumentMETACharset ISO-2022-JP

(24)　HWSErrorLogClientAddr X-Forwarded-For

(a)　内容

バックエンドサーバで，エラーログに出力するメッセージテキストの"[client クライアントアドレス]"を"[X-Forwarded-For X-Forwarded-Forヘッダ値]"に変更するよう設定します。

負荷分散装置やプロキシサーバを介してバックエンドサーバがリクエストを受信すると，バックエンドサーバがエラーログに出力する「クライアントIPアドレス」がリクエストを送信したクライアントのIPアドレスではなく，負荷分散装置やプロキシサーバのIPアドレスになる場合があります。ただし，負荷分散装置やプロキシサーバの中には接続元のクライアントIPアドレスをX-Forwarded-Forヘッダに付加する場合があるため，出力内容をX-Forwarded-For X-Forwarded-Forヘッダの値へ変更することで，接続元のクライアントIPアドレスが出力されるようにします。

X-Forwarded-For：エラーログに出力する"[client クライアントアドレス]"を"[X-Forwarded-For X-Forwarded-Forヘッダ値]"に変更します。

(b)　注意事項

X-Forwarded-Forヘッダを受信する前にエラーが発生した場合や，一部のメッセージでは変更できません。

(c)　記述できる場所

httpsd.conf

(25)　HWSGracefulStopLog ｛On｜Off｝

(a)　内容

計画停止時に，強制停止待ち時間を経過したあとに強制停止させたリクエスト情報を，エラーログファイルに出力するかどうかを指定します。

On：強制停止させたリクエスト情報をエラーログファイルに出力します。

Off：強制停止させたリクエスト情報をエラーログファイルに出力しません。

(b)　注意事項

計画停止時に強制停止させたHTTP/2通信のリクエスト情報は，エラーログファイルに出力できません。

(c)　記述できる場所

httpsd.conf

(d)　指定例

HWSGracefulStopLog On

(26)　HWSGracefulStopTimeout　強制停止時間

〜((0−3600))《300》（単位：秒）

(a)　内容

計画停止時に，実行中のリクエストを直ちに終了するまでの強制停止待ち時間を秒単位で指定します。なお，0を指定すると，強制停止待ち時間の上限は設定されません。

(b)　記述できる場所

httpsd.conf

(c)　指定例

HWSGracefulStopTimeout 600

(27)　HWSH2SendGoaway　リクエスト処理数

〜((0-10000))《10000》

(a)　内容

コネクションでの，HTTP/2通信の新たなリクエストの受付を終了させる，リクエスト処理完了数を指定します。リクエスト処理完了数がディレクティブ指定値に到達した場合，クライアントにGOAWAYフレームを送信します。GOAWAYフレームを送信までに受け付けたリクエストは処理を中断せずに実行します。

HTTP/2通信を有効とする設定でメモリ使用量が多い傾向にある場合は，このディレクティブに小さな値を指定すると軽減されることがあります。

なお，0を指定すると，リクエスト処理完了数によるクライアントへのGOAWAYフレーム送信はしません。

(b)　注意事項

HTTP/2プロトコル通信機能を使用するためにはmod_http2モジュールの組み込みが必要です。HTTP/2プロトコル通信については，「4.17　HTTP/2プロトコル通信機能」を参照してください。

(c)　記述できる場所

httpsd.conf

(28)　HWSImapMenuCharset　文字セット

〜《ISO-8859-1》

(a)　内容

次の場合のメニュー表示に対する文字セットを指定します。

イメージマップファイルの指定値にmapを指定した場合

イメージマップ画像の座標(0,0)をマウスでポイントした場合

座標指定のない形でイメージマップファイルがリクエストされた場合

文字セットは，レスポンスのContent-Typeヘッダでcharset=の値として設定されます。

(b)　記述できる場所

httpsd.conf，<VirtualHost>，<Directory>，.htaccess

(c)　上書き許可

Indexesレベル

(d)　指定例

HWSImapMenuCharset SHIFT_JIS

(29)　HWSKeepStartServers ｛On｜Off｝　[図データ]

(a)　内容

サーバプロセスの稼働数をStartServersディレクティブに指定した数だけ維持するかどうかを指定します。

On：StartServersディレクティブに指定した数だけ，稼働しているサーバプロセスが維持されます。サーバプロセス数がStartServersディレクティブ指定値より小さくなった場合，新しいプロセスが生成されます。

prefork MPM

この機能は，プロセス数に関する各ディレクティブの指定値が，次の関係にある場合に有効です。

　MinSpareServers < StartServers≦MaxClients

　　かつ

　MinSpareServers < MaxSpareServers≦MaxClients

StartServersディレクティブ設定値が，MinSpareServersディレクティブ設定値より小さい場合は，MinSpareServersディレクティブの値でサーバプロセス数が維持されます。

worker MPM

この機能は，プロセス数およびスレッド数に関する各ディレクティブの指定値が，次の関係にある場合に有効です。

　MinSpareThreads < StartServers × ThreadsPerChild ≦ MaxClients

　　かつ

　MinSpareThreads < MaxSpareThreads ≦ MaxClients

StartServersディレクティブ × ThreadsPerChildディレクティブの値が，MinSpareThreadsディレクティブ設定値より小さい場合は，MinSpareThreadsディレクティブ設定値に従ってサーバプロセス数が維持されます。

Off：StartServersディレクティブに指定した数の稼働しているサーバプロセスは維持されません。

(b)　記述できる場所

httpsd.conf

(30)　HWSLogSSLVerbose {On｜Off}

(a)　内容

クライアントとサーバ間のSSLハンドシェイク処理中に，ログに出力されるエラーのうちinfoレベルおよびerrorレベルのエラーについて，詳細情報を表示するかどうかを指定します。SSLを有効にする場合には，このディレクティブをOnに設定することを推奨します。

On：詳細情報を表示します。

Off：詳細情報を表示しません。

(b)　記述できる場所

httpsd.conf

(31)　HWSLogTimeVerbose ｛On｜Off｝

(a)　内容

エラーログ※とリクエストログの時刻，アクセスログのアクセス時刻，リクエスト処理に掛かった時間(%T)，およびリクエスト処理を開始した時刻(%t)をミリ秒まで表示するかどうかを指定します。なお，起動および再起動中に出力されるメッセージでは，このディレクティブでOnを指定してもミリ秒まで表示されない場合があります。

注※　ErrorLogディレクティブで指定するエラーログが対象になります。ScriptLogディレクティブで指定するCGIスクリプトのエラーログは対象になりません。

On：時刻および時間をミリ秒まで表示します。

Off：時刻および時間を秒まで表示します。

(b)　記述できる場所

httpsd.conf

(32)　HWSMaxQueueSize　リクエストキューサイズ　[図データ]

〜((0−2147483647))《8192》

(a)　内容

クライアントからのリクエストについての最大の待ちリクエスト数を指定します。0を指定した場合は，無制限となります。このディレクティブで指定したリクエストキューサイズを超えたクライアントからのリクエストは，サーバ側で切断されます。

(b)　記述できる場所

httpsd.conf

(33)　HWSNotModifiedResponseHeaders　ヘッダ名〔ヘッダ名 …〕

(a)　内容

ステータスコード304 Not Modifiedをクライアントへ送信する際に付加するレスポンスヘッダを指定します。

なお，次のヘッダについては，このディレクティブに指定がなくてもレスポンスに付加します。ただし，必ず付加するのではなく，外部モジュールまたはサーバ内部などで設定された場合にだけ付加します。

Date

Server

Connection

Keep-Alive

ETag

Content-Location

Expires

Cache-Control

Vary

Warning

WWW-Authenticate

Proxy-Authenticate

(b)　記述できる場所

httpsd.conf

(c)　指定例

HWSNotModifiedResponseHeaders Set-Cookie Set-Cookie2

(d)　注意事項

HTTP/2通信の場合，このディレクティブは機能しません。

(34)　HWSPrfId　文字列

《PRF_ID》

(a)　内容

PRFデーモン起動時にPRF識別子に指定した文字列を指定します。

リダイレクタのモジュールをLoadModuleで組み込んだ場合，このディレクティブの指定は無効になります。

(b)　記述できる場所

httpsd.conf

(35)　HWSProxyPassReverseCookie　パス名

(a)　内容

リバースプロキシを使用する場合，リバースプロキシはバックエンドサーバから受信したSet-Cookieヘッダを変換します。これは，WebブラウザがSet-Cookieヘッダを受信したあとに，リバースプロキシを経由するバックエンドサーバへのリクエストに対して，クッキーを送信させるために必要になります。

パス名：ProxyPassディレクティブと同じパス名を指定します。*および正規表現は使用できません。

(b)　注意事項

リバースプロキシを使用するためにはmod_proxyモジュールおよびmod_proxy_httpモジュールの組み込みが必要です。リバースプロキシの詳細は，「4.7　リバースプロキシの設定」を参照してください。

(c)　記述できる場所

httpsd.conf，<VirtualHost>

(36)　HWSRequestLog　｛ファイル名｜パイプ｝

(a)　内容

リクエストログを出力するファイル名を指定します。リクエストログとは，モジュールトレース，リクエストトレース，I/Oフィルタトレースおよびプロキシトレースの総称です。出力するリクエストログの種別は，HWSRequestLogTypeディレクティブで選択できます。

ファイル名：リクエストログを出力するファイル名を指定します。ファイル名には，絶対パスまたはServerRootディレクティブの指定値からの相対パスを指定できます。

パイプ：標準入力からリクエストログ情報を受け取るプログラムを「 |プログラム名」の形式で指定します。Windows版での注意事項は，CustomLogディレクティブを参照してください。

(b)　注意事項

このディレクティブを省略した場合のモジュールトレース出力先は，ErrorLogディレクティブで指定したファイルになります。モジュールトレースの採取レベルは，LogLevelディレクティブで指定してください。モジュールトレースの詳細は，「4.2.6　モジュールトレースの採取」を参照してください。

リクエストトレース，I/Oフィルタトレースおよびプロキシトレースの出力先を，ErrorLogディレクティブで指定したファイルにすることはできません。

(c)　記述できる場所

httpsd.conf

(37)　HWSRequestLogType　トレース種別　〔トレース種別　…〕

〜《module-info request proxy》

(a)　内容

HWSRequestLogディレクティブで設定するリクエストログに出力するトレース種別を指定します。トレース種別を次に示します。

トレース種別

内容

module-debug

内部モジュールに対するモジュールトレースおよびmodule-info相当のトレースを出力します。出力量が多いため，デバッグ目的以外では指定しないでください。

module-info

外部モジュールとCGIプログラム実行時のモジュールトレースを出力します。

request

リクエスト処理開始時およびリクエスト処理完了時にトレースを出力します。また，HTTP/1.1通信のKeepAlive接続の場合は，次のリクエストライン受信完了時にもトレースを出力します。これらのトレースをリクエストトレースと呼びます。

filter

モジュールが実装している入出力フィルタ関数の実行契機を示すI/Oフィルタトレースを出力します。出力量が多いため，デバッグ目的以外では指定しないでください。

proxy

リバースプロキシ機能使用時にリバースプロキシに関するトレースを出力します。

none

リクエストログを採取しません。

(b)　注意事項

指定したトレース種別にnoneが含まれている場合，リクエストログを一切採取しません。

(c)　記述できる場所

httpsd.conf

(38)　HWSSetEnvIfIPv6　リクエスト値　IPv6アドレス　環境変数〔=値〕〔環境変数〔=値〕…〕

(a)　内容

クライアントまたはサーバのIPv6アドレスを基に環境変数を定義します。リクエスト値がIPv6アドレスで表した条件を満たす場合，指定した環境変数を設定します。設定する値のデフォルト値は1です。環境変数の前に「!」が付いたときは，その環境変数の設定を解除します。

リクエスト値として，次に示す値を指定できます。

リクエスト値

意味

Remote_Addr

クライアントのIPv6アドレス

Server_Addr

リクエストを受信したサーバのIPv6アドレス

IPv6アドレスは，[　]で囲まないで指定してください。なお，IPv6アドレスの後ろに，10進数でプリフィックス長も指定できます。プリフィックス長は，「IPv6アドレス/プリフィックス長」の形式で指定します。

(b)　記述できる場所

httpsd.conf，<VirtualHost>，<Directory>，.htaccess

(c)　上書き許可

FileInfoレベル

(d)　指定例

HWSSetEnvIfIPv6 Remote_Addr 2001:0:0:1230::/64 IPV6_CLIENT

クライアントのIPv6アドレスが2001:0:0:1230から始まる場合，環境変数IPV6_CLIENTを設定します。

(39)　HWSSuppressModuleTrace　モジュールファイル名　〔all｜hook｜handler〕

(a)　内容

モジュールトレースの出力を抑止するモジュールファイル名および抑止する関数種別を指定します。

all：指定したモジュールが出力するモジュールトレースをすべて抑止します。

hook：指定したモジュールが出力するモジュールトレースのうち，handler関数以外のモジュールトレースを抑止します。関数の種別については，「4.2.6　モジュールトレースの採取」の表4-4を参照してください。

handler：指定したモジュールが出力するモジュールトレースのうち，handler関数のモジュールトレースを抑止します。関数の種別については，「4.2.6　モジュールトレースの採取」の表4-4を参照してください。

モジュールファイル名には，エラーログまたはリクエストログに出力されるモジュールファイル名称を指定します。次の例のモジュールトレースを抑止する場合は，モジュールファイル名に"mod_example.c"を指定します。

（例）

[Mon Dec 18 14:57:14 2006] [info] hws : module --> (mod_example.c[12])(1896)
[Mon Dec 18 14:57:14 2006] [info] hws : module <-- (mod_example.c[12])(1896)(-1)

HTTP Serverが標準提供している外部モジュールとモジュールファイル名の対応を次に示します。

表6‒5　HTTP Serverが標準提供している外部モジュールとモジュールファイル名の対応

モジュール名

モジュールファイル名

mod_expires.so

mod_expires.c

mod_headers.so

mod_headers.c

mod_hws_qos.so

mod_hws_qos.c

mod_proxy.so

mod_proxy.c

mod_proxy_http.so

モジュールトレースは出力されません。

HTTP Serverが標準提供している外部モジュール以外を使用する場合は，そのモジュールのトレースが出力される可能性があります。また，LogLevelディレクティブにdebugを設定またはHWSRequestLogTypeディレクティブにmodule-debugを設定している場合は，内部モジュールに対するトレースも出力されます。

なお，このディレクティブは，複数指定できます。同じモジュールファイル名を指定した場合は，あとに指定したものが有効となります。

(b)　注意事項

CGIプログラム実行時のモジュールトレースは抑止できません。

(c)　記述できる場所

httpsd.conf

(d)　指定例

（例1）

HWSSuppressModuleTrace mod_proxy.c all

この指定では，プロキシモジュール内のすべての関数に対するモジュールトレースを抑止します。

（例2）

HWSSuppressModuleTrace mod_proxy.c hook

この指定では，プロキシモジュール内のhandler以外の関数に対するモジュールトレースを抑止します。

(40)　HWSTraceIdFile　ファイル名

〜《logs/hws.trcid》

(a)　内容

トレース採取のための共有メモリIDを格納するファイル名を指定します。ファイル名には，絶対パスまたはServerRootディレクティブの指定値からの相対パスが指定できます。

このファイルは複数のWebサーバでは共有できません。同一ServerRootディレクティブ指定で複数のWebサーバを起動する場合は，このディレクティブで異なるファイル名を指定する必要があります。

(b)　記述できる場所

httpsd.conf

(41)　HWSTraceLogFile　ファイル名

〜《logs/hws.trclog》

(a)　内容

サーバプロセスが異常終了した場合に共有メモリに採取されたトレースを出力するファイル名を指定します。ファイル名には，絶対パスまたはServerRootディレクティブの指定値からの相対パスが指定できます。

このファイルは複数のWebサーバでは共有できません。同一ServerRootディレクティブ指定で複数のWebサーバを起動する場合は，このディレクティブで異なるファイル名を指定する必要があります。

トレースは複数のファイルにラップアラウンドして出力します。

UNIX版では，最大5ファイル出力します。出力するファイルは「指定したファイル名.nn」のファイル名となります。nnは01から05までです。HTTP Serverの起動時には，「指定したファイル名.01」がカレントの出力ファイル名となります。カレントの出力ファイル名が「指定したファイル名.nn」であった場合にトレースをファイルに出力すると，次のカレントのファイル名は「指定したファイル名.nn+1」になります。なお，「指定したファイル名.nn」が.05の場合には，次のカレントのファイル名は「指定したファイル名.01」になります。

Windows版では，最大2ファイル出力します。出力するファイルは「指定したファイル名.01」または「指定したファイル名.02」のファイル名になります。HTTP Serverの起動時には，「指定したファイル名.01」がカレントの出力ファイル名となります。カレントの出力ファイル名が「指定したファイル名.01」のときにトレースをファイルに出力すると，次のカレントのファイル名は「指定したファイル名.02」になります。なお，カレントの出力ファイル名が「指定したファイル名.02」のときにトレースをファイルに出力すると，次のカレントのファイル名は「指定したファイル名.01」になります。

(b)　記述できる場所

httpsd.conf

(42)　HWSWebSocketLog　｛ファイル名｜パイプ｝

(a)　内容

WebSocket通信に関するログを出力するファイル名を指定します。

ファイル名：WebSocket通信に関するログを出力するファイル名を指定します。ファイル名には，絶対パスまたはServerRootディレクティブの指定値からの相対パスを指定できます。

パイプ：標準入力からWebSocket通信に関するログ情報を受け取るプログラムを「 |プログラム名」の形式で指定します。

(b)　注意事項

WebSocketプロキシ機能を使用するためには，mod_proxyモジュール，mod_proxy_httpモジュール，およびmod_proxy_wstunnelモジュールの組み込みが必要です。

UNIX版の場合

LoadModule proxy_module libexec/mod_proxy.so

LoadModule proxy_http_module libexec/mod_proxy_http.so

LoadModule proxy_wstunnel_module libexec/mod_proxy_wstunnel.so

Windows版の場合

LoadModule proxy_module modules/mod_proxy.so

LoadModule proxy_http_module modules/mod_proxy_http.so

LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so

(c)　記述できる場所

httpsd.conf

(43)　IdentityCheck　｛On｜Off｝　[図データ]

(a)　内容

クライアントホストのidentdデーモンを使用してクライアントの確認をするかどうかを指定します。 identについては，RFC1413を参照してください。

ただし，クライアントホストがIPv6アドレスの場合は，Onを指定してもidentdデーモンを使用してクライアントの確認をしません。また，ログフォーマットに%lを指定している場合，CGI環境変数 REMOTE_IDENTには「unknown」を出力します。

On：identdデーモンを使用してクライアントの確認をします。

Off：identdデーモンを使用してクライアントの確認をしません。

(b)　記述できる場所

httpsd.conf，<VirtualHost>，<Directory>

(44)　ImapBase　｛map｜referer｜URL｝

(a)　内容

イメージマップファイルのbase行のデフォルトを指定します。

map：マップファイルの場所

referer：ドキュメントの場所（イメージマップを表示したHTMLファイルの場所）

URL：指定したURL

URLには，IPv6アドレスまたはIPv6アドレスに対応したホスト名も指定できます。

(b)　記述できる場所

httpsd.conf，<VirtualHost>，<Directory>，.htaccess

(c)　上書き許可

Indexesレベル

(45)　ImapDefault　｛error｜nocontent｜map｜referer｜URL｝

(a)　内容

イメージマップファイルのdefault行のデフォルトを指定します。

error：標準のエラーメッセージを表示します（ステータスコード500 Server Errorを応答します）。

nocontent：リクエストを無視します（ステータスコード204 No Contentを応答します）。

map：マップファイル中のURLをメニュー表示します。

referer：ステータスコード302 Foundを応答します。

URL：指定したURLのコンテンツを表示します。

URLには，IPv6アドレスまたはIPv6アドレスに対応したホスト名も指定できます。

(b)　記述できる場所

httpsd.conf，<VirtualHost>，<Directory>，.htaccess

(c)　上書き許可

Indexesレベル

(46)　ImapMenu　｛none｜formatted｜semiformatted｜unformatted｝

(a)　内容

イメージマップファイルの指定値にmapを与えた場合またはイメージマップ画像の(0,0)座標をマウスでポイントした場合のメニュー表示を指定します。座標指定のない形でイメージマップファイルがリクエストされた場合の動作もこの設定に従います。

none：メニューは生成しません。このときの動作は，マップファイル中のdefault行の指定に従います。

formatted：ヘッダおよびリンク一覧を表示します。マップファイル中のコメントは無視されます。

semiformatted：リンク一覧を表示します。マップファイル中のコメントも表示します。

unformatted：マップファイル中にHTMLを記述することで，メニューの形式を自由に設定できます。

(b)　記述できる場所

httpsd.conf，<VirtualHost>，<Directory>，.htaccess

(c)　上書き許可

Indexesレベル

(47)　Include　ファイル名

(a)　内容

ファイル名で指定したファイルをコンフィグファイルとして利用できるようにします。

ファイル名には，絶対パスまたはServerRootディレクティブの指定値からの相対パスが指定できます。このディレクティブを複数指定する場合，マージされた内容が使用されます。ファイル内に同じディレクティブがある場合，後ろに指定した方で上書きされます。

(b)　記述できる場所

httpsd.conf

(48)　IndexIgnore　ファイル名　〔ファイル名　…〕

(a)　内容

ディレクトリインデクス表示時に，Webブラウザに表示させないファイル名を指定します。正規表現でも指定できます。

(b)　記述できる場所

httpsd.conf，<VirtualHost>，<Directory>，.htaccess

(c)　上書き許可

Indexesレベル

(d)　指定例

IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t

(49)　IndexOptions　〔｛+｜-｝〕オプション　〔〔｛+｜-｝〕オプション　…〕

(a)　内容

ディレクトリインデクスの整形表示機能のオプション設定をします。オプションの前に+を指定するかまたは+-を省略するとそのオプションが有効になります。デフォルトではすべてのオプションが無効です。指定できるオプションの一覧を次に示します。

表6‒6　オプション一覧

オプション

意味

Charset=文字セット

〜《ISO-8859-1》　[図データ]

〜《UTF-8》　[図データ]

インデクス表示するページの文字セットを指定します。HeaderNameディレクティブまたはReadmeNameディレクティブで指定したファイルで使用している文字セットが，デフォルトの文字セット（UNIX版：ISO-8859-1，Windows版：UTF-8）と異なる場合は，このオプションでHeaderNameディレクティブまたはReadmeNameディレクティブで指定したファイルと同じ文字セットを指定してください。このオプションでは，=文字セットを省略できません。また，-Charset指定時も+Charset指定時と同様の動作をします。

DescriptionWidth〔=｛文字数|*｝〕

《23，30，42または49》

ファイル説明文エリアの幅を文字数(1文字＝１バイト)で指定します。*を指定した場合はAddDescriptionディレクティブで指定したファイル説明文の最大長に合わせて表示します。このオプションを省略した場合のファイル説明文エリアの幅は，23バイト(ただし，SuppressSize指定時＋7，SuppressLastModified指定時＋19)です。

-DescriptionWidth指定時は=｛文字数|*｝を省略できます。この場合の表示幅は23バイトです。

FancyIndexing

ディレクトリインデクスの整形表示機能を有効にします。

FoldersFirst

ファイルよりディレクトリを先にインデクス表示する場合に指定します。ただし，FancyIndexingが有効な場合だけです。

IconsAreLinks

ディレクトリインデクス整形表示時のアイコンをファイルに対するアンカーにします。

IconHeight〔=ピクセル数〕((>0))《22》

ディレクトリインデクス整形表示時のアイコンの高さをピクセル数で指定します。IconWidthオプションと一緒に指定します。インデクスを表示するHTMLのIMGタグのHEIGHT属性になります。

IconWidth〔=ピクセル数〕((>0))《20》

ディレクトリインデクス整形表示時のアイコンの幅をピクセルで指定します。IconHeightオプションと一緒に指定します。インデクスを表示するHTMLのIMGタグのWIDTH属性になります。

IgnoreCase

ディレクトリインデクス整形表示時に，ファイル名およびディレクトリ名の大文字と小文字の区別をしないで並べ替えます。

NameWidth〔=｛文字数｜*｝〕《23》

ファイル名およびディレクトリ名エリアの幅を文字数（1文字＝1バイト）で指定します。*を指定した場合はファイル名およびディレクトリ名の最大長に合わせて表示します。

=｛文字数｜*｝を省略する場合は必ず-NameWidthと指定してください。

ScanHTMLTitles

AddDescriptionディレクティブの指定がない場合に，HTMLファイル中の<TITLE>タグを検索し，説明文として表示します。

SuppressColumnSorting

ファイル名，ディレクトリ名，最終更新日時，ファイルサイズおよびファイルの説明文の各カラムでインデクスを並べ替える機能を抑止します。

SuppressDescription

ファイルの説明文を表示しません。

SuppressHTMLPreamble

HeaderNameディレクティブが指定されている場合，HeaderNameディレクティブで指定されたファイルの内容と，自動生成されるHTMLヘッダ部（<HTML>や<TITLE>など）が共に出力されます。このオプションは，HeaderNameディレクティブで指定されたファイルがHTMLで記述されている場合，自動生成されるHTMLヘッダ部の出力を抑制します。

SuppressLastModified

最終更新日時を表示させません。

SuppressSize

ファイルサイズを表示させません。

TrackModified

ディレクトリ表示のためのレスポンスのHTTPレスポンスヘッダに，Last-Modified値とEtag値を設定します。このオプションを指定すると，クライアントはHEADリクエストでディレクトリはファイル構成の変更を確認できるため，クライアントのキャッシュ機能を有効に活用できます。このオプションはオペレーティングシステムとファイルシステムがstat()をサポートしている場合だけ有効です。

(b)　注意事項

このディレクティブを複数指定する場合，同じファイル名に異なる文字列は指定できません。

IconHeight，IconWidth，NameWidthで=値を指定する場合，-の指定はできません。

設定されたオプションは，httpsd.conf，<VirtualHost>，<Directory>，.htaccessの順で，また，上位ディレクトリから下位ディレクトリへ継承します。継承したオプションを最終的にマージして，インデクス整形表示形式を決定します。

httpsd.confで+-を付けてオプションを指定しても無効になります。ただし，httpsd.conf，<VirtualHost>，<Directory>，.htaccessの順で，また，下位ディレクトリに継承されます。継承されたオプション指定はマージ処理で有効になります。参照順位が下位の指定場所でオプションの指定がある場合または次に示すディレクティブのどれかの指定がある場合，マージ処理が実行されます。

AddAlt

AddAltByEncoding

AddAltByType

AddDescription

AddIcon

AddIconByEncoding

AddIconByType

DefaultIcon

HeaderName

ReadmeName

（例）

httpsd.confファイルにIndexOptions +FancyIndexing +IconsAreLinksを指定した場合，下位の指定場所でインデクス関係のディレクティブ指定がなければFancyIndexing，IconsAreLinksは無効になります。

httpsd.confファイルにIndexOptions +FancyIndexing +IconsAreLinks，かつ下位ディレクトリのアクセスコントロールファイルに，AddDescription "テキストファイル" *.txtを指定した場合，FancyIndexing，IconsAreLinksは有効になります。

+-指定のないCharset，IconHeight，IconWidth，NameWidthディレクティブを指定すると，その指定場所内でそのオプションが指定されている位置より前に指定されている+-付のオプション（Charset，IconHeight，IconWidth，NameWidthを除いて）は無効になります。

（例）

IndexOptions FancyIndexing -IconsAreLinks IconHeight IconWidth

この場合，FancyIndexing，IconHeight，IconWidthディレクティブが有効になります。IconsAreLinksの-指定は継承されません。

指定場所間で同じディレクトリのインデクスを対象にオプション指定した場合のマージ処理は，参照順位がより後方の指定場所で+-のないオプションを指定すると，先に指定したオプションは無効になります。ただし，IconHeight，IconWidth，NameWidthは無効になりません。

（例1）

httpsd.confファイルの指定

IndexOptions +FancyIndexing +IconsAreLinks

アクセスコントロールファイルの指定

IndexOptions FancyIndexing SuppressLastModified

これらを指定した場合，IconsAreLinksは無効になります。FancyIndexing，SuppressLastModifiedは有効になります。

（例2）

httpsd.confファイルの指定

IndexOptions SuppressColumnSorting +FancyIndexing +IconsAreLinks

アクセスコントロールファイルの指定

IndexOptions FancyIndexing SuppressLastModified

これらを指定した場合，SuppressColumnSorting，IconsAreLinksは無効になります。また，FancyIndexing，SuppressLastModifiedは有効になります。

指定場所間で，同じディレクトリのインデクスを対象にオプション指定した場合のマージ処理は，同じオプションに対して+と-の両方を指定すると-指定が有効になります。

（例）

httpsd.confファイルの指定

IndexOptions +FancyIndexing -IconsAreLinks

アクセスコントロールファイルの指定

IndexOptions +IconsAreLinks

これらを指定した場合，IconsAreLinksは無効になります。

同じ指定場所で+-を指定しないオプションを指定すると，Charset，IconHeight，IconWidth，NameWidthディレクティブ以外の+-で指定したオプションは無効になります。

（例1）

httpsd.confファイルの指定

IndexOptions +IconsAreLinks FancyIndexing +SuppressLastModified

この場合，IconsAreLinksは無効になります。

（例2）

<VirtualHost>ブロック，<Directory>ブロックまたはアクセスコントロールファイルの指定

IndexOptions +IconsAreLinks FancyIndexing +SuppressLastModified

この場合，IconsAreLinks，SuppressLastModifiedは無効になります。

(c)　記述できる場所

httpsd.conf，<VirtualHost>，<Directory>，.htaccess

(d)　上書き許可

Indexesレベル

(50)　IndexOrderDefault　｛Ascending｜Descending｝　｛Name｜Date｜Size｜Description｝

(a)　内容

ディレクトリインデクス表示での，ファイルの並び順のデフォルトを指定します。

Ascending：昇順

Descending：降順

Name：ファイル名で並べます。

Date：ファイル更新日付で並べます。

Size：ファイルサイズで並べます。

Description：AddDescriptionディレクティブで指定した説明文で並べます。

(b)　記述できる場所

httpsd.conf，<VirtualHost>，<Directory>，.htaccess

(c)　上書き許可

Indexesレベル

6.2.5　K，Lで始まるディレクティブ

(1)　KeepAlive　｛On｜Off｝

(a)　内容

KeepAlive接続を有効にするかどうかを指定します。実際にKeepAliveが実行されるのはクライアント側もKeepAliveに対応している場合だけです。KeepAliveはサーバプロセスとクライアントとのコネクションが持続されるので，連続したリクエストのレスポンスが良くなります。反面，サーバプロセスが特定のクライアント専用になるので，Webサーバ全体としてサービス能力が低下することもあります。KeepAliveTimeout，MaxKeepAliveRequestsディレクティブを使用して調整する必要があります。なお，この指定は，リバースプロキシ機能使用時のバックエンドサーバとの接続には影響しません。

On：持続型接続（KeepAlive）を有効にします。

Off：持続型接続（KeepAlive）を無効にします。

(b)　注意事項

HTTP/2通信の場合，KeepAliveディレクティブにOffを指定しても，コネクションが持続します。

コネクションが持続する時間は，KeepAliveTimeoutディレクティブ値に従います。

(c)　記述できる場所

httpsd.conf

(d)　指定例

KeepAlive On

(2)　KeepAliveTimeout　時間

〜((0−65535))《5》（単位：秒）

(a)　内容

KeepAlive接続時の要求待ち時間を秒単位で指定します。この時間以上経過しても，クライアントから次のリクエストが来ない場合，コネクションを切断します。KeepAliveはサーバプロセスが特定のクライアントに占有されます。あるWebページから次のWebページへ移る場合に必要とする標準的な時間以上は，タイムアウトにしてコネクションを切断し，サーバプロセスをほかのリクエストの処理に当てるようにします。時間に0を指定した場合は，KeepAlive接続が無効になります。なお，この指定は，リバースプロキシ機能使用時のバックエンドサーバとの接続には影響しません。

(b)　記述できる場所

httpsd.conf

(c)　指定例

KeepAliveTimeout 15

KeepAlive接続時の要求待ち時間は15秒

(3)　LanguagePriority　言語コード　〔言語コード　…〕

(a)　内容

使用言語を優先順位の高い順に指定します。コンテントネゴシエーションで，Webブラウザからのリクエストに言語コードの優先順位（Accept-Languageヘッダ）が含まれていない場合に，ここで指定した優先順位が使用されます。ここで指定する言語コードなどについては，AddLanguageディレクティブを参照してください。

(b)　記述できる場所

httpsd.conf，<VirtualHost>，<Directory>，.htaccess

(c)　上書き許可

FileInfoレベル

(d)　指定例

LanguagePriority ja en fr de

優先順位は日本語，英語，フランス語，ドイツ語の順

(4)　LimitRequestBody　リクエストボディサイズ

〜((0−2147483647))《0》（単位：バイト）

(a)　内容

HTTP通信によって，Webブラウザが送信してくるリクエストをサーバが受信する場合のオブジェクトボディ（デ ータ）のサイズの上限を指定します。Webブラウザから<FORM METHOD=POST ACTION=...>によるリクエストを送る場合などにオブジェクトボディが用いられます。上限値を設定しない場合は，0を指定してください。

リクエストデータ内のリクエストボディサイズが上限値を超えた場合，クライアントにステータスコード413を返します。

(b)　記述できる場所

httpsd.conf，<VirtualHost>，<Directory>，.htaccess

(5)　LimitRequestFields　ヘッダ数

〜((0−32767))《100》

(a)　内容

HTTP通信によって，Webブラウザが送信してくるリクエストをサーバが受信する場合のHTTPヘッダ数の上限を指定します。リクエストのHTTPヘッダ数は，Webブラウザやリクエストを中継するプロキシなどの仕様で変わります。上限値を設定しない場合は，0を指定してください。

このディレクティブ指定値を，バーチャルホストに対するリクエストにも適用するためには，<VirtualHost>ブロックよりも前に指定する必要があります。

リクエストデータ内のHTTPヘッダ数が上限値を越えた場合，クライアントにステータスコード400を返します。

(b)　注意事項

HTTP/2通信の場合，リクエストに含まれる:method，:scheme，:authority，:pathの疑似ヘッダを除いたヘッダ数と比較します。また，同じヘッダが複数ある場合は一つのヘッダとして計算します。

(c)　記述できる場所

httpsd.conf

(6)　LimitRequestFieldsize　ヘッダサイズ

〜((0−8190))《8190》（単位：バイト）

(a)　内容

HTTP通信によって，Webブラウザが送信してくるリクエストをサーバが受信する場合，一つのHTTPヘッダの，サイズの上限を指定します。リクエストヘッダのサイズはWebブラウザやリクエストを中継するプロキシなどの仕様で変わります。

このディレクティブ指定値を，バーチャルホストに対するリクエストにも適用するためには，<VirtualHost>ブロックよりも前に指定する必要があります。

リクエストデータ内の一つのHTTPヘッダのサイズが上限値を越えた場合，クライアントにステータスコード400を返します。

(b)　注意事項

HTTP/2通信の場合，同じヘッダが存在すると，ヘッダ値の間に“, ”を挿入して一つにマージされます（ただし，Cookieヘッダフィールドの場合は“; ”を挿入）。マージされた場合はマージ後のサイズと比較します。

(c)　記述できる場所

httpsd.conf

(7)　LimitRequestLine　リクエストライン長

〜((0−2147483647))《8190》（単位：バイト）

(a)　内容

HTTP通信によって，Webブラウザが送信してくるリクエストをサーバが受信する場合のリクエストライン（メソッド，問い合わせ文字列などを含むURI，HTTPバージョン）の長さの上限を指定します。Webブラウザから<FORM METHOD=GET ACTION...>によるリクエストを送る場合などに問い合わせ文字列としてリクエストラインが用いられます。なお，リクエストラインとしてWebブラウザから何バイト送れるかは，Webブラウザやリクエストを中継するプロキシなどの仕様で変わります。

このディレクティブ指定値を，バーチャルホストに対するリクエストにも適用するためには，<VirtualHost>ブロックよりも前に指定する必要があります。

リクエストデータ内のリクエストライン長が上限値を越えた場合，クライアントにステータスコード414を返すか，またはHTTP/2通信を終了します。

(b)　注意事項

リクエストライン長に大きな値を指定した場合，リクエスト処理中に大量のメモリ領域を使用するおそれがあるため，このディレクティブに必要以上に大きな値を指定しないでください。

HTTP/2通信の場合，:method, :scheme, :authority, :pathの疑似ヘッダフィールドの値の長さと比較します。:method, :authorityの疑似ヘッダフィールドの値の長さが上限値を超えた場合は，HTTP/2通信を終了します。

(c)　記述できる場所

httpsd.conf

(8)　Listen　〔IPアドレス:〕ポート番号

(a)　内容

リクエストを受け付けるIPアドレスおよびポート番号を指定します。Portディレクティブと異なり，複数指定できます。Listenディレクティブを指定すると，PortディレクティブおよびBindAddressディレクティブの指定は無視されます。

IPアドレスにはIPv6アドレスも指定できます。IPv6アドレスを指定する場合は，IPv6アドレスを[　]で囲んでください。ただし，IPアドレスを省略してポート番号だけを指定した場合は，IPv4アドレスを使用したリクエストだけを受け付けます。このため，IPv6アドレスを使用する場合は，必ずListenディレクティブにIPv6アドレスを指定してください。

ListenディレクティブのIPアドレスを変更してサーバを再起動する場合，サーバをいったん停止後，起動してください。コマンドなどで再起動を選択すると，サーバの起動に失敗する場合があります。

(b)　記述できる場所

httpsd.conf

(c)　指定例

Listen 80
Listen [2001::123:4567:89ab:cdef]:8080
Listen [::]:80

(9)　ListenBacklog　バックログ数

〜((1−2147483647))《511》

(a)　内容

クライアントからの接続要求の最大の待ち行列数を指定します。この指定値はシステムコールlisten( )のバックログ数として設定されます。ただし，指定値の制限値や，実際の待ち行列数の最大値についてはOSによって異なるため，詳細は各OSのlisten( )についてのマニュアルや，各OSのTCP/IP実装の詳細を説明しているドキュメントを参照してください。

(b)　記述できる場所

httpsd.conf

(10)　LoadFile　ファイル名　〔ファイル名　…〕

(a)　内容

DSOによって組み込むモジュールが参照するコードがあるオブジェクトファイルまたはライブラリを指定します。ファイル名には，絶対パスまたはServerRootディレクティブの指定値からの相対パスが指定できます。

LoadModuleディレクティブでこのファイルを参照するモジュールを指定する場合，それらがhttpsd.confで使用される前に，このディレクティブを指定する必要があります。

(b)　記述できる場所

httpsd.conf

(11)　LoadModule　module構造体名　ライブラリファイル名

(a)　内容

Webサーバに動的に組み込むモジュールを指定します。ライブラリファイル名には，絶対パスまたはServerRootディレクティブの指定値からの相対パスが指定できます。

UNIX版の場合，prefork MPMモジュールまたはworker MPMモジュールのどちらか一つを組み込む必要があります。どちらの指定もない場合はprefork MPMモジュールを組み込みます。

(b)　記述できる場所

httpsd.conf

(c)　指定例

prefork MPMモジュールを組み込む場合

LoadModule mpm_prefork_module libexec/mod_mpm_prefork.so

worker MPMモジュールを組み込む場合

LoadModule mpm_worker_module libexec/mod_mpm_worker.so

(12)　LogFormat　"フォーマット"　〔ラベル名〕

〜<<"%h %l %u %t ¥"%r¥" %>s %b">>

(a)　内容

ログのフォーマットにラベル名を定義します。ここで定義したラベル名をCustomLogディレクティブで指定できます。指定できるフォーマットはCustomLogディレクティブを参照してください。なお，フォーマットに%Aまたは%aを指定した場合，IPv6アドレスも出力できます。また，フォーマットに%hまたは%Vを指定した場合，IPv6アドレスに対応したホスト名またはIPv6アドレスも出力できます。

ラベル名を付けない場合は，このディレクティブを複数指定できません。

(b)　記述できる場所

httpsd.conf，<VirtualHost>

(c)　指定例

LogFormat "%h %l %u %t ¥"%r¥" %>s %b ¥"%{Referer}i¥" ¥"%{User-Agent}i¥"" combined
LogFormat "%h %l %u %t ¥"%r¥" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent

(13)　LogLevel　｛debug｜info｜notice｜warn｜error｜crit｜alert｜emerg｝

(a)　内容

エラーログに出力するエラーのレベルを指定します。指定したレベルの上位レベルのログを出力します。ただし，noticeレベルのログはこの指定に関係なく出力されます。また，HTTP Server起動時など，レベル指定の解析終了前に出力されるメッセージは，この指定に関係なく出力される場合があります。

次にエラーレベルを上位順に示します。

レベル

意味

emerg

緊急メッセージ

alert

即時処理要求メッセージ

crit

致命的な状態のメッセージ

error

一般的エラーメッセージ

warn

警告レベルメッセージ

notice

標準的だが重要なメッセージ

info

インフォメーションメッセージ，外部モジュールとCGIプログラム実行時のモジュールトレース※

debug

デバッグレベルメッセージ，内部モジュールトレースおよびinfo相当のモジュールトレース※

注※　モジュールトレースは，エラーログではなくリクエストログに出力するよう設定できます。詳細は，「4.2.2(6)　各トレースの出力先」および「4.2.6　モジュールトレースの採取」を参照してください。

(b)　記述できる場所

httpsd.conf，<VirtualHost>

(c)　指定例

LogLevel info

6.2.6　M，N，O，P，Q，Rで始まるディレクティブ

(1)　MaxClients　接続数　[図データ]

prefork MPM

〜((1−1024)) 《1024》

worker MPM

〜((ThreadsPerChild - (ServerLimit × ThreadsPerChild)))《400》

(a)　内容

同時に接続できるクライアントの最大数（TCP/IPのコネクション最大数）を指定します。

HTTP Serverを起動すると，StartServersディレクティブで指定した数のプロセスが起動されリクエストを待ちます。

prefork MPM

多くのリクエストが同時に発生した場合，複数のプロセスでリクエストを処理することになります。リクエスト待ちの残りプロセス数がMinSpareServersディレクティブで指定した数より少なくなると，徐々に新規プロセスを生成します。このとき，プロセス数がこのディレクティブで指定した数になるまでプロセスが生成されます。その後，リクエストの処理が終了しリクエスト待ちプロセスが増加すると，MaxSpareServersディレクティブで指定した数までプロセスを終了させます。

worker MPM

多くのリクエストが同時に発生した場合，複数のスレッドでリクエストを処理することになります。リクエスト待ちの残りスレッド数がMinSpareThreadsディレクティブで指定した数より少なくなると，新しいプロセスを生成します。このとき，スレッド数がこのディレクティブで指定した数になるまでプロセスが生成されます。その後，リクエストの処理が終了しリクエスト待ちスレッドが増加すると，MaxSpareThreadsディレクティブで指定した数以下になるまでプロセスを終了させます。

MaxClientsディレクティブの値は，ThreadsPerChildディレクティブの値から，ServerLimitディレクティブの値×ThreadsPerChildディレクティブの値の範囲です。MaxClientsディレクティブの指定値を増加させるために，サーバプロセス数の上限値を変更する場合にはServerLimitディレクティブ指定値を変更します。

(b)　記述できる場所

httpsd.conf

(c)　指定例

MaxClients 150

(2)　MaxKeepAliveRequests　接続数

〜((0−2147483647))《100》

(a)　内容

KeepAlive連続接続回数の上限を指定します。上限値を設定しない場合は0を指定します。KeepAliveはサーバプロセスが特定のクライアントに占有されるので，ほかのクライアントにもサービスの機会を与えるために上限を設けます。

(b)　注意事項

HTTP/2通信の場合，連続接続回数に上限はありません。

(c)　記述できる場所

httpsd.conf

(d)　指定例

MaxKeepAliveRequests 100

(3)　MaxRequestsPerChild　リクエスト処理回数　[図データ]

〜((0−2147483647))《0》

(a)　内容

サーバプロセスのリクエスト処理回数を指定します。サーバプロセスは指定されたリクエスト処理回数だけ動作し，終了します。 ユーザが作成したアプリケーションなどによるメモリリークによる障害を未然に防ぐ効果があります。なお，0を指定すると，サーバプロセスのリクエスト処理回数の上限は設定されません。サーバプロセスは終了することなく，リクエストを待ち，処理します。

(b)　記述できる場所

httpsd.conf

(c)　指定例

MaxRequestsPerChild 10000

(4)　MaxSpareServers　プロセス数　[図データ]

〜((1−1024))《10》

(a)　内容

リクエスト待ち状態で稼働させておくサーバプロセスの最大数を指定します。プロセス数に関連するほかのディレクティブについては，「4.1　HTTP Serverの処理とディレクティブとの関係」を参照してください。

MinSpareServers以下の値を設定した場合，MinSpareServers指定値+1の値が仮定されます。

このディレクティブは，prefork MPMを使用する場合に指定できます。

(b)　記述できる場所

httpsd.conf

(c)　指定例

MaxSpareServers 10

(5)　MaxSpareThreads　スレッド数　[図データ]

〜(((MinSpareThreads+ThreadsPerChild)−MaxClients))《250》

(a)　内容

リクエスト待ち状態で稼働させておくサーバスレッドの最大数を指定します。リクエスト待ち状態のサーバスレッド数がこの指定値より多くなった場合，リクエスト待ち状態のサーバスレッド数がこの指定値以下になるまでサーバプロセスを終了させます。

MaxSpareThreadsディレクティブの値は，MinSpareThreadsディレクティブの値 + ThreadsPerChildディレクティブの値 から，MaxClientsディレクティブの値の範囲です。MinSpareThreadsディレクティブの値 + ThreadsPerChildディレクティブの値より小さい値を指定した場合は，MinSpareThreadsディレクティブの値 + ThreadsPerChildディレクティブの値が仮定されます。

このディレクティブは，worker MPMを使用する場合に指定できます。

(b)　記述できる場所

httpsd.conf

(c)　指定例

MaxSpareThreads 75

(6)　MinSpareServers　プロセス数　[図データ]

〜((1−1024))《5》

(a)　内容

リクエスト待ち状態で稼働しているサーバプロセスの最小数を指定します。サーバプロセス数がこの指定値より少なくなったら，新しいプロセスを生成します。プロセス数に関連するほかのディレクティブについては，「4.1　HTTP Serverの処理とディレクティブとの関係」を参照してください。

このディレクティブは，prefork MPMを使用する場合に指定できます。

(b)　記述できる場所

httpsd.conf

(c)　指定例

MinSpareServers 5

(7)　MinSpareThreads　スレッド数　[図データ]

〜((1 - MaxClients))《75》

(a)　内容

リクエスト待ち状態で稼働しているサーバスレッドの最小数を指定します。リクエスト待ち状態のサーバスレッド数がこの指定値より少なくなった場合，新しいサーバプロセスを生成します。

このディレクティブは，worker MPMを使用する場合に指定できます。

(b)　記述できる場所

httpsd.conf

(c)　指定例

MinSpareThreads 25

(8)　MultiviewsMatch　｛NegotiatedOnly｜Handlers｝

(a)　内容

コンテントネゴシエーションの対象となる拡張子の種類を指定します。

NegotiatedOnly：拡張子が文字セット，圧縮形式，言語コード，MIMEタイプと関連づけられたものだけをコンテントネゴシエーションの対象にします。

Handlers：NegotiatedOnlyを指定した場合の対象に加え，ハンドラと関連づけられた拡張子についてもコンテントネゴシエーションの対象にします。

(b)　記述できる場所

httpsd.conf，<VirtualHost>，<Directory>，.htaccess

(c)　上書き許可

FileInfoレベル

(d)　指定例

MultiviewsMatch Handlers

(9)　Options　｛+｜-｝オプション　〔｛+｜-｝オプション　…〕

〜《None》

(a)　内容

ユーザが利用できる機能を制限する場合に指定します。

+：オプションで指定した機能の利用を許可します。

-：オプションで指定した機能の利用を禁止します。

オプション

機能

All

MultiViews，SymLinksIfOwnerMatchを除くすべてのオプションが有効です。

ExecCGI

CGIスクリプトの実行を許可します。

FollowSymLinks

シンボリックリンクをたどります。Windows版では指定できません。

Indexes

URLにディレクトリが指定されたとき，DirectoryIndexディレクティブで指定したファイル（デフォルトはindex.html）がない場合，ディレクトリのインデクスを表示します。

MultiViews

Content-negotiated Multiviewsをサポートします。

None

すべてのオプションで指定できる機能を無効にします。

SymLinksIfOwnerMatch

ファイルまたはディレクトリの所有者がシンボリックリンクの所有者と同じ場合だけ，リンクをたどります。Windows版では指定できません。

注意事項

+-を使用しないでこのディレクティブを複数指定すると，最後に指定したディレクティブだけが有効になります。

（例1）

Options All
Options ExecCGI

このようにオプションに+-を指定しないディレクティブを2行指定した場合，ユーザはCGIスクリプトの実行機能だけが利用できます。ディレクトリインデクスなどの機能は利用できません。

（例2）

httpsd.confファイルの指定

Options All

アクセスコントロールファイルの指定

Options ExecCGI

httpsd.confファイルのあとにアクセスコントロールファイルが参照されるので，アクセスコントロールファイルがあるディレクトリではCGIスクリプトの実行機能だけが利用できます。

（例3）

Options Indexes ExecCGI

このように1行に+-を指定しないオプションを指定した場合は，指定した機能の両方を利用できます。

(b)　記述できる場所

httpsd.conf，<VirtualHost>，<Directory>，.htaccess

(c)　上書き許可

Optionsレベル

(10)　Order　指示子

〜《deny,allow》

(a)　内容

AllowディレクティブとDenyディレクティブの指定の評価の順序を指定します。指示子に指定できるものを次に示します。先に評価されたものは，あとに評価されるものに上書きされます。

指示子

意味

deny,allow

Denyディレクティブの指定を，Allowディレクティブの指定より先に評価

allow,deny

Allowディレクティブの指定を，Denyディレクティブの指定より先に評価

mutual-failure

Allowディレクティブに指定され，Denyディレクティブに指定されていないホストだけアクセスを許可

(b)　記述できる場所

<Directory>，.htaccess

(c)　上書き許可

Limitレベル

(11)　PassEnv　環境変数　〔環境変数　…〕

(a)　内容

CGIスクリプトに渡す任意の環境変数を指定できます。

(b)　記述できる場所

httpsd.conf，<VirtualHost>，<Directory>，.htaccess

(c)　上書き許可

FileInfoレベル

(d)　指定例

PassEnv TMP

(12)　PidFile　ファイル名

〜《logs/httpd.pid》

(a)　内容

制御プロセスIDを格納するファイル名を指定します。ファイル名には，絶対パスまたはServerRootディレクティブの指定値からの相対パスが指定できます。

(b)　注意事項

Windows版の場合，再起動時には，PidFileディレクティブ指定値の変更は反映されません。PidFileディレクティブ指定値を変更した場合は，いったんWebサーバを停止してから，再起動してください。

UNIX版の場合，再起動時には，PidFileディレクティブ指定値の変更は反映されません。PidFileディレクティブ指定値を変更した場合は，いったんWebサーバをkillコマンドで停止してから，起動してください。停止時にhttpsdctlコマンドは使用できません。

複数環境を生成する場合には，ファイルパスはほかの環境と競合しないように変更してください。

(c)　記述できる場所

httpsd.conf

(d)　指定例

PidFile logs/httpd.pid

(13)　Port　ポート番号

〜((1−65535))《80》

(a)　内容

IPv4アドレスを使用したWebブラウザからの要求を受け付けるサーバのポート番号を指定します。

Portディレクティブを指定しても，IPv6アドレスを使用したWebブラウザからの要求は受け付けません。IPv6アドレスを使用する場合は，Listenディレクティブで指定してください。その場合，IPv4アドレスと併用するときは，IPv4アドレスについてもListenディレクティブを指定してください。

(b)　記述できる場所

httpsd.conf

(c)　指定例

Port 80

(14)　Protocols　プロトコル名　〔プロトコル名 …〕

〜《http/1.1》

(a)　内容

サーバで使用可能なプロトコルのリストを指定します。複数のプロトコルが指定された場合には，先に指定されたプロトコルを優先します。サーバが認識できないプロトコルが指定された場合は無視します。<VirtualHost>で指定した場合，httpsd.confでの指定はマージしないで上書きします。

h2：TLS暗号を利用したHTTP/2プロトコルでの通信をする場合に指定します。

h2c：平文のHTTP/2プロトコルでの通信をする場合に指定します。

http/1.1：HTTP/1.1プロトコルでの通信をする場合に指定します。HTTP/1.0プロトコルも含まれます。

(b)　注意事項

http/1.1を含まないh2およびh2cの指定でもHTTP/2プロトコルが選択できなかった場合は，HTTP/1.1プロトコルが選択されます。

HTTP/2プロトコル通信機能を使用するためにはmod_http2モジュールの組み込みが必要です。HTTP/2プロトコル通信については，「4.17　HTTP/2プロトコル通信機能」を参照してください。

(c)　記述できる場所

httpsd.conf，<VirtualHost>

(d)　指定例

（例1）

Protocols h2 h2c

h2およびh2cプロトコルが使用できます。

（例2）

Protocols h2
Protocols h2c

h2およびh2cプロトコルが使用できます。

(15)　Proxy100Continue　｛On｜Off｝

(a)　内容

クライアントからExcept: 100-continueヘッダを含むリクエストを受けた場合の動作を設定します。

On：クライアントからExcept: 100-continueヘッダを含むリクエストを受けた場合，バックエンドサーバにリクエストを転送し，バックエンドサーバからのレスポンスを待つ動作となります。HTTP Server 11-20-09以前のバージョンでのデフォルト値です。

Off：クライアントからExcept: 100-continueヘッダを含むリクエストを受けた場合，リバースプロキシがクライアントに100 Continueのレスポンスを返し，クライアントからのリクエストボディを待つ動作となります。HTTP Server 11-20-10以降のバージョンでのデフォルト値です。

(b)　注意事項

バックエンドサーバにCosminexusのNIO HTTPサーバを使用する場合は，このディレクティブを必ずOffに設定してください。

(c)　記述できる場所

httpsd.conf

(16)　ProxyErrorOverride　｛On｜Off｝

(a)　内容

バックエンドサーバからのステータスコードが400番台または500番台の場合，レスポンスヘッダとレスポンスボディをオーバーライドします。その結果，リバースプロキシはバックエンドサーバからのレスポンスではなく，自身が生成したレスポンスをクライアントに返します。

On：バックエンドサーバからのステータスコードが400番台または500番台の場合，レスポンスヘッダとレスポンスボディをオーバーライドします。

Off：レスポンスヘッダとレスポンスボディをオーバーライドしません。

(b)　注意事項

リバースプロキシを使用するためにはmod_proxyモジュールおよびmod_proxy_httpモジュールの組み込みが必要です。リバースプロキシの詳細は，「4.7　リバースプロキシの設定」を参照してください。

HTTP/2通信ではレスポンスヘッダとレスポンスボディをオーバーライドしません。

(c)　記述できる場所

httpsd.conf，<VirtualHost>，<Location>

(d)　指定例

ProxyErrorOverride On

バックエンドサーバからのステータスコードが400番台または500番台の場合，リバースプロキシが生成したレスポンスをクライアントに返します。

(17)　ProxyPass　パス名　{URL｜!}　〔キー=値　〔キー=値　…〕〕

(a)　内容

リバースプロキシを使用する場合，Webブラウザからのリクエストとそれを転送するアドレスを指定します。

パス名：Webブラウザからリバースプロキシへのリクエストをスラッシュ（/）から始まるURLで指定します。

URL：転送先となるバックエンドサーバのURLを"http，ws://IPアドレスまたはホスト名〔:ポート番号〕/"を含む形で指定します。

URLには，IPv6アドレスまたはIPv6アドレスに対応したホスト名も指定できます。

パス名およびURLには，?以降（問い合わせ文字列），*および正規表現は使用できません。

http://から始まるURLを指定した場合は，バックエンドサーバとHTTP通信します。

h2c://から始まるURLを指定した場合は，バックエンドサーバと平文のHTTP/2プロトコルで通信します。

ws://から始まるURLを指定した場合は，クライアントとバックエンドサーバ間の通信をWebSocket通信にアップグレードします。ただし，クライアントおよびバックエンドサーバがWebSocketプロトコルに対応している必要があります。

!：指定したパス名に一致したリクエストを，リバースプロキシが扱うリクエストの対象から除外する場合に指定します。

キー：指定できるキーを次に示します。

キー

値

内容

timeout

1−65535（単位：秒）

次のバックエンドサーバとの送受信時の待ち時間を指定します。

バックエンドサーバへのリクエスト送信中にデータを送信できなくなった場合の待ち時間

バックエンドサーバへのリクエスト送信後からレスポンス受信までの待ち時間

バックエンドサーバからのレスポンス受信中にデータを受信しなくなった場合の待ち時間

キーが省略された場合のデフォルト値は，Timeout ディレクティブ指定値です。

connectiontimeout

1−65535（単位：秒）

バックエンドサーバとの接続時の待ち時間を指定します。

キーが省略された場合のデフォルト値は，timeoutキー値です。

URLにws://から始まるURLを指定した場合でもtimeoutキーを指定できますが，WebSocket通信へのアップグレード後ではバックエンドサーバとの送受信時の待ち時間としては機能しません。connectiontimeoutキーが省略された場合のデフォルト値としてだけ機能します。

次のディレクティブ指定値と重複するパス名は指定できません。

AliasのURL

AliasMatchの正規表現

Redirectの旧パス

RedirectMatchの正規表現

ScriptAliasのURL

ScriptAliasMatchの正規表現

リダイレクタ定義ファイルのJkMountのURLパターン

(b)　注意事項

リバースプロキシを使用するためには，次のモジュールの組み込みが必要です。

mod_proxyモジュール

UNIX版

LoadModule proxy_module libexec/mod_proxy.so

Windows版

LoadModule proxy_module modules/mod_proxy.so

さらに，転送先となるバックエンドサーバのURLの指定によって，それぞれ次のモジュールの組み込みが必要です。

URLがhttp://で始まる指定の場合

mod_proxy_http モジュール

UNIX版

LoadModule proxy_http_module libexec/mod_proxy_http.so

Windows版

LoadModule proxy_http_module modules/mod_proxy_http.so

URLがh2c://で始まる指定の場合

mod_proxy_http2 モジュール

UNIX版

LoadModule proxy_http2_module libexec/mod_proxy_http2.so

Windows版

LoadModule proxy_http2_module modules/mod_proxy_http2.so

URLがws://で始まる指定の場合

mod_proxy_wstunnelモジュール

UNIX版

LoadModule proxy_wstunnel_module libexec/mod_proxy_wstunnel.so

Windows版

LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so

!を指定する場合は，URLを指定するProxyPassディレクティブより先に指定してください。パス名およびURLには，?以降（問い合わせ文字列）を指定できません。

(c)　記述できる場所

httpsd.conf，<VirtualHost>

(d)　指定例

ProxyPass /abc/def/ !
ProxyPass /abc/ http://backend.example.com/

/abc/def/から始まるリクエストをリバースプロキシのリクエストとして扱いません。

(18)　ProxyPassReverse　パス名　URL

(a)　内容

リバースプロキシを使用する場合，バックエンドサーバからのリダイレクトレスポンスのLocationヘッダで示すURLを変更します。Webブラウザからのリダイレクトによるリクエストをリバースプロキシを通すリクエストにするためにLocationヘッダをこのディレクティブの指定値に変更します。

パス名：リダイレクトのリクエスト先であるリバースプロキシのパス名を，/（スラッシュ）から始まるURLで指定します。

URL：変更対象となるLocationヘッダ中のバックエンドサーバのURLを"http://ホスト名〔:ポート番号〕"を含む形で指定します。

URLには，IPv6アドレスまたはIPv6アドレスに対応したホスト名も指定できます。IPv6アドレスにはさまざまな表記方法がありますので，指定値に注意してください。IPv6アドレスの表記が指定値と一致しない場合，ディレクティブが有効になりません。IPv6アドレスを指定する場合は，バックエンドサーバからの応答のLocationヘッダ値に含まれるIPv6アドレスの表記を確認してください。パス名およびURLには，?以降（問い合わせ文字列），*および正規表現は使用できません。

(b)　注意事項

リバースプロキシを使用するためにはmod_proxyモジュールおよびmod_proxy_httpモジュールの組み込みが必要です。Locationヘッダの変更で使用されるホスト名やポート番号は，UseCanonicalNameディレクティブ指定値によって決定します。パス名およびURLには，?以降（問い合わせ文字列），*および正規表現は使用できません。リバースプロキシの詳細は，「4.7　リバースプロキシの設定」を参照してください。

(c)　記述できる場所

httpsd.conf，<VirtualHost>

(19)　ProxyPreserveHost　｛On｜Off｝

(a)　内容

リバースプロキシを使用する場合，クライアントから受信したHostヘッダの値をそのままバックエンドサーバに転送するかどうかを指定します。

On：クライアントから受信したHostヘッダの値をそのままバックエンドサーバに転送します。

Off：クライアントから受信したHostヘッダの値をProxyPassディレクティブの指定値に従って変更して，バックエンドサーバに転送します。

(b)　注意事項

リバースプロキシを使用するためにはmod_proxyモジュールおよびmod_proxy_httpモジュールの組み込みが必要です。リバースプロキシの詳細は，「4.7　リバースプロキシの設定」を参照してください。

(c)　記述できる場所

httpsd.conf，<VirtualHost>

(d)　指定例

ProxyPreserveHost On

クライアントから受信したHostヘッダの値をそのままバックエンドサーバに転送します。

(20)　ProxyVia　｛on｜off｜full｜block｝

(a)　内容

このディレクティブはプロキシでViaヘッダの使用を制御する場合に指定します。

on：Viaヘッダに自ホストの情報を追加します。すでにある情報は変更しません。

off：Viaヘッダに自ホストの情報を追加しません。すでにある情報は変更しません。

full：コメントとして自ホストのバージョンを付けた情報をViaヘッダに追加します。すでにある情報は変更しません。

block：Viaヘッダに自ホストの情報を追加しません。リクエスト中のViaヘッダは削除します。

(b)　注意事項

リバースプロキシを使用するためにはmod_proxyモジュールおよびmod_proxy_httpモジュールの組み込みが必要です。リバースプロキシの詳細は，「4.7　リバースプロキシの設定」を参照してください。

(c)　記述できる場所

httpsd.conf，<VirtualHost>

(21)　QOSCookieDomain　ドメイン名

(a)　内容

流量制限機能に使用するクッキーが有効とされるドメインを指定します。この値は，HWS作成モードで使用され，ユーザ作成モードでは使用されません。複数のホストを設定している場合，このディレクティブを設定することでドメイン部分の共通するホスト間でクッキーを使用できるようになります。ドメイン名には，少なくとも"."が二つ含まれていなければなりません。

なお，IPv6アドレスに対応したドメイン名も指定できます。

（例）

a.example.comとb.example.comの二つのホストを設定している場合，このディレクティブで .example.comと指定すると，二つのホストのどちらにアクセスしても優先度処理が行われます。

(b)　注意事項

流量制限機能を使用するためにはmod_hws_qosモジュールの組み込みが必要です。流量制限機能については，「4.9　流量制限機能」を参照してください。

(c)　記述できる場所

httpsd.conf，<VirtualHost>

(22)　QOSCookieExpires　値

〜((0−86400))《300》（単位：秒）

(a)　内容

流量制限機能に使用するクッキーの有効時間を秒単位で指定します。この値は，HWS作成モードで使用され，ユーザ作成モードでは使用されません。

(b)　注意事項

流量制限機能を使用するためにはmod_hws_qosモジュールの組み込みが必要です。流量制限機能については，「4.9　流量制限機能」を参照してください。

(c)　記述できる場所

httpsd.conf，<VirtualHost>，<Location>

(23)　QOSCookieName　クッキー名　〔｛hws｜user｝〕

〜《HWSCHK》

(a)　内容

流量制限機能に使用するクッキー名を指定します。クッキー名にセミコロン，コンマ，空白文字は使用できません。ホスト間およびURL間でそれぞれ異なるクッキーを利用したセション管理を行う場合は，別のクッキー名を指定する必要があります。

hws：HTTP Serverが作成するクッキーを用いて，セション管理を実施します。これをHWS作成モードと呼びます。

user：HTTP Server以外の外部モジュールなどで作成されたクッキーを用いて，セション管理を実施します。これをユーザ作成モードと呼びます。

(b)　注意事項

流量制限機能を使用するためにはmod_hws_qosモジュールの組み込みが必要です。流量制限機能については，「4.9　流量制限機能」を参照してください。

QOSCookieNameディレクティブを特定のブロックに指定した場合，上位に指定されているQOSCookieNameディレクティブは継承しません。

（例）

QOSCookieName Cookie1 hws

<Location /loc1>

　　QOSCookieName Cookie2 user

</Location>

この場合，"/loc1"から始まるリクエストでは，クッキー名Cookie2の指定が有効になります。"/loc1"以外から始まるリクエストでは，クッキー名Cookie1の指定が有効になります。

QOSCookieNameディレクティブを複数指定する場合は，クッキー名を重複させないでください。重複している場合は，起動エラーになります。

（例）

QOSCookieName Cookie1 hws

QOSCookieName Cookie1 user

この場合，クッキー名が重複しているため起動エラーになります。

HWS作成モードのQOSCookieNameディレクティブを複数指定した場合は，後ろに指定した方が有効になります。

(例)

QOSCookieName Cookie1 hws

QOSCookieName Cookie2 hws

この場合，クッキー名Cookie1の指定は無効になり，Cookie2の指定が有効になります。

(c)　記述できる場所

httpsd.conf，<VirtualHost>，<Location>

(24)　QOSCookieSecure｛on｜off｝

(a)　内容

クライアントに対し，SSLによるアクセス時だけにクッキーを送信させるよう設定します。この値は，HWS作成モードで使用され，ユーザ作成モードでは使用されません。クッキーの確認はSSLの暗号処理の終了後であることに注意してください。

on：SSLによるアクセス時だけ，クライアントにクッキーを送信させるよう設定します。

off：SSL以外によるアクセス時にも，クライアントにクッキーを送信させるよう設定します。

（例）

SSLが有効であるホストと無効であるホストを設定している場合，このディレクティブを設定すると，SSLが有効なホストへのアクセスだけクッキーが送信されます。

(b)　注意事項

流量制限機能を使用するためにはmod_hws_qosモジュールの組み込みが必要です。流量制限機能については，「4.9　流量制限機能」を参照してください。

(c)　記述できる場所

httpsd.conf，<VirtualHost>，<Location>

(25)　QOSCookieServers　値

UNIX版の場合

〜((0−MaxClientsディレクティブ指定値))《10》

Windows版の場合

〜((0−ThreadsPerChildディレクティブ指定値))《10》

(a)　内容

リクエスト待ち状態のサーバプロセス数が減少した場合に，クッキーを送信してきたリクエストだけを処理するときの，サーバプロセス数を指定します。

Windows版の場合は，サーバスレッド数を指定します。

(b)　注意事項

流量制限機能を使用するためにはmod_hws_qosモジュールの組み込みが必要です。流量制限機能については，「4.9　流量制限機能」を参照してください。

(c)　記述できる場所

httpsd.conf，<VirtualHost>，<Location>

(26)　QOSRedirect　旧パス　新パス

(a)　内容

流量制限機能によって処理が拒否された場合に，クライアントからのリクエストを指定されたパスにリダイレクトさせるときに指定します。新パスには，"プロトコル名://ホスト名〔:ポート番号〕"を含むURLのパスを指定します。また，新パスに指定するURLには，IPv6アドレスまたはIPv6アドレスに対応したホスト名も指定できます。

旧パスでリクエストを受けた場合，ステータスコード302とLocationヘッダに新パスを設定したレスポンスを返します。レスポンスをカスタマイズすることはできません。

旧パス，新パスの指定については，Redirectディレクティブを参照してください。

(b)　注意事項

流量制限機能を使用するためにはmod_hws_qosモジュールの組み込みが必要です。流量制限機能については，「4.9　流量制限機能」を参照してください。

(c)　記述できる場所

httpsd.conf，<VirtualHost>，<Location>

(27)　QOSRejectionServers　値

UNIX版の場合

〜((0−MaxClientsディレクティブ指定値))《1》

Windows版の場合

〜((0−ThreadsPerChildディレクティブ指定値))《1》

(a)　内容

リクエスト待ち状態のサーバプロセス数が減少し，受信したすべてのリクエストを拒否するようになるときの，サーバプロセス数を指定します。

Windows版の場合は，サーバスレッド数を指定します。

(b)　注意事項

流量制限機能を使用するためにはmod_hws_qosモジュールの組み込みが必要です。流量制限機能については，「4.9　流量制限機能」を参照してください。

(c)　記述できる場所

httpsd.conf，<VirtualHost>，<Location>

(28)　QOSResponse　｛file［MIMEタイプ］ファイル名｜message　テキスト｝

(a)　内容

流量制限機能によって処理が拒否された場合に，503ステータスコードとともに返送するコンテンツを指定します。コンテンツはサーバプロセス内にキャッシュされるため，変更する場合にはサーバの再起動が必要です。

file：指定したファイルを，指定したMIMEタイプで返送します。MIMEタイプを省略したときは"text/html"が設定されます。また，ファイル名には，絶対パスまたはServerRootディレクティブの指定値からの相対パスが指定できます。

message：指定したテキストを返送します。テキストは先頭に"を記述して文字列を指定します。MIMEタイプには"text/html"が設定されます。

(b)　注意事項

流量制限機能を使用するためにはmod_hws_qosモジュールの組み込みが必要です。流量制限機能については，「4.9　流量制限機能」を参照してください。

(c)　記述できる場所

httpsd.conf，<VirtualHost>，<Location>

(d)　指定例

QOSResponse file "text/html; charset=ISO-8859-1" htdocs/busy.html
QOSResponse message "Server busy.

(29)　ReadmeName　ファイル名

(a)　内容

ディレクトリインデクス表示時のReadmeとして付けるコメントを記述したファイルのファイル名（パス情報なし）を指定します。HTMLまたはプレーンテキストで記述できます。ただし，AddTypeディレクティブまたはTypesConfigディレクティブで指定したファイルで，MIMEタイプが正しく定義されている必要があります。プレーンテキストでコメントを作成した場合，ディレクトリインデクス表示のHTMLには<PRE>タグが追加されます。

(b)　記述できる場所

httpsd.conf，<VirtualHost>，<Directory>，.htaccess

(c)　上書き許可

Indexesレベル

(d)　指定例

ReadmeName README.html

ディレクトリ下のREADME.htmlファイルの内容を表示します。

(30)　Redirect　〔｛permanent｜temp｜seeother｜gone｜ステータスコード｝〕　旧パス　新パス

(a)　内容

旧パスに対するクライアントからのリクエストを，新パスに再リクエスト（リダイレクト）する場合に指定します。

旧パスには，スラッシュから始まるリクエストURLのパスを指定します。ただし，旧パスには，?以降（問い合わせ文字列）を指定できません。

次のディレクティブ指定値と重複する旧パスは指定できません。

AliasのURL

AliasMatchの正規表現

ProxyPassのパス名

RedirectMatchの正規表現

ScriptAliasのURL

ScriptAliasMatchの正規表現

リダイレクタ定義ファイルのJkMountのURLパターン

例えば，次のような指定はできません。

  Redirect temp /aaa/bbb/ http://aaa.example.com/
  ProxyPass /aaa/ http://aaa.example.com/

新パスには，"プロトコル名://ホスト名〔:ポート番号〕"を含むURLのパスを指定します。また，新パスに指定するURLには，IPv6アドレスまたはIPv6アドレスに対応したホスト名も指定できます。

旧パスでリクエストを受けた場合，指定したステータスコードとLocationヘッダに新パスを設定した応答を返します。通常，300番台のステータスコードを受けたWebブラウザは，自動的にLocationヘッダに指定されたアドレスに対してリダイレクトします。

Redirectディレクティブでは，特定のファイルへのリクエストを特定のファイルへリダイレクトするか，特定のディレクトリ下の，任意のパスへのリクエストを特定のディレクトリ下の，同名パスへリダイレクトする指定ができます。特定のディレクトリ下の，任意のパスへのリクエストを，特定のファイルへリダイレクトしたい場合はRedirectMatchディレクティブを使用してください。

permanent：ステータスコード301 Moved Permanentlyを応答します。

temp：ステータスコード302 Foundを応答します。

seeother：ステータスコード303 See Otherを応答します。

gone：ステータスコード410 Goneを応答します。新パスは指定できません。

ステータスコード：指定したステータスコードを応答します。指定できる値は，「付録A　ステータスコード」を参照してください。ただし，300番台以外を指定する場合，新パスは指定できません。

(b)　記述できる場所

httpsd.conf，<VirtualHost>，<Directory>，.htaccess

(c)　上書き許可

FileInfoレベル

(d)　指定例

Redirect temp /index.html http://ホスト名:ポート番号/default.html

/index.htmlに対するリクエストを，ステータスコード302で"http://ホスト名:ポート番号/default.html"にリダイレクトします。

(31)　RedirectMatch　〔｛permanent｜temp｜seeother｜gone｜ステータスコード｝〕　正規表現　新パス

(a)　内容

正規表現で記述した条件を満たすパスに対するクライアントからのリクエストを，新パスに再リクエスト（リダイレクト）する場合に指定します。

正規表現には，スラッシュから始まるリクエストURLの旧パスを正規表現で指定します。ただし，旧パスには，?以降（問い合わせ文字列）を指定できません。

次のディレクティブ指定値と重複する旧パスは指定できません。

AliasのURL

AliasMatchの正規表現

ProxyPassのパス名

Redirectの旧パス

ScriptAliasのURL

ScriptAliasMatchの正規表現

リダイレクタ定義ファイルのJkMountのURLパターン

例えば，次のような指定はできません。

  RedirectMatch ^/aaa/bbb/(.*) http://aaa.example.com/$1
  ProxyPass /aaa/ http://aaa.example.com/

新パスには，"プロトコル名://ホスト名〔:ポート番号〕/"を含むURLのパスを指定します。また，新パスに指定するURLには，IPv6アドレスまたはIPv6アドレスに対応したホスト名も指定できます。

正規表現で括弧（）を使用してグループ化している場合，そのi番目のグループの表現にマッチした文字列を，新パスで $iを使用して参照できます。iには1から9までの数字を指定します。正規表現で記述した条件を満たすパスへのリクエストを受信した場合に，指定したステータスコードと，新パスを設定したLocationヘッダを応答します。通常，300番台のステータスコードを受けたWebブラウザは，自動的にLocationヘッダに指定されたアドレスに対して再リクエスト（リダイレクト）します。

各ステータスコードの指定については，Redirectディレクティブを参照してください。

(b)　記述できる場所

httpsd.conf，<VirtualHost>，<Directory>，.htaccess

(c)　上書き許可

FileInfoレベル

(d)　指定例

（例1）

RedirectMatch ^/other/ http://www.example.com/

/other/で始まるすべてのリクエストを，ステータスコード302で "http://www.example.com/"にリダイレクトします。

（例2）

RedirectMatch permanent ^/old/(.*) http://www.example.com/new/$1

"/old/ファイル名"に対するリクエストを，ステータスコード301で "http://www.example.com/new/ファイル名"にリダイレクトします。

(32)　RequestHeader｛｛set｜append｜add｝ヘッダ　ヘッダ値｜unset　ヘッダ｝〔env=〔!〕環境変数〕

(a)　内容

クライアントから受信したヘッダ値をカスタマイズする場合に指定します。

set：ヘッダを設定します。ヘッダがある場合は，指定したヘッダ値に書き換えます。

append：存在するヘッダにヘッダ値を追加します。存在するヘッダ値との間は，コンマで区切られます。ヘッダがない場合は，ヘッダを設定します。

add：ヘッダがあっても，別の行にヘッダを設定します。同じヘッダを複数行設定する場合に使用します。

unset：指定したヘッダがある場合，そのヘッダをすべて削除します。

env=環境変数：指定した環境変数が設定されている場合に，RequestHeaderディレクティブで指定した内容を実行します。

env=!環境変数：指定した環境変数が設定されていない場合に，RequestHeaderディレクティブで指定した内容を実行します。

ヘッダ値に空白がある場合は，"（引用符）で囲む必要があります。ヘッダ値は文字だけから成る文字列，フォーマット指示子を含む文字列または両方から成る文字列を指定できます。フォーマット指示子を次に示します。

フォーマット指示子

意味

%t

リクエストを受け取った時刻を，1970年1月1日0時0分0秒(GMT：Greenwich Mean Time)から経過した時間で表示する。単位はマイクロ秒。先頭には"t="が付けられる。

%D

リクエスト処理に掛かった時間を表示する。単位はマイクロ秒。先頭には"D="が付けられる。

%{env_name}e

環境変数env_nameの値。

(b)　注意事項

ヘッダカスタマイズ機能を使用するためにはmod_headersモジュールの組み込みが必要です。ヘッダカスタマイズ機能については，「4.10　ヘッダカスタマイズ機能」を参照してください。

(c)　記述できる場所

httpsd.conf，<VirtualHost>，<Directory>，.htaccess

(d)　上書き許可

FileInfoレベル

(e)　指定例

RequestHeader set Host www.example.com

(33)　RequestReadTimeout　タイプ=時間　〔タイプ=時間〕

〜《header=20 body=20》

(a)　内容

リクエスト受信開始からリクエストヘッダ受信完了まで，およびリクエストボディの受信開始から完了までのタイムアウト時間を秒単位で指定します。タイムアウト時間には，0から2147483647までの値を指定します。データの送信が遅いリクエストに対して，サーバのリソースを長時間専有されることを避ける場合に有効です。なお，指定のないタイプについてはタイムアウトに20秒を設定して，タイムアウト時間に0を指定したタイプについてはタイムアウトを設定しません。

リクエストヘッダ受信時にタイムアウトを検知した場合，ステータスコード408を返します。

リクエストボディ受信時にタイムアウトを検知した場合，ステータスコード400を返します。

タイプには次に示すheaderとbodyが指定できます。

header：リクエスト受信開始からリクエストヘッダ受信完了までの経過時間を監視する場合に指定します。

body：リクエストボディの受信開始から受信完了までの経過時間を監視する場合に指定します。

(b)　注意事項

このディレクティブを使用するためには，mod_reqtimeoutモジュールの組み込みが必要です。

UNIX版の場合

LoadModule reqtimeout_module libexec/mod_reqtimeout.so

Windows版の場合

LoadModule reqtimeout_module modules/mod_reqtimeout.so

また，モジュールトレースの出力の抑止を同時に設定することを推奨します。

HWSSuppressModuleTrace mod_reqtimeout.c

(c)　記述できる場所

httpsd.conf，<VirtualHost>

(d)　指定例

（例1）

RequestReadTimeout header=10 body=30

リクエスト受信開始からリクエストヘッダ受信完了までのタイムアウト時間を10秒，リクエストボディの受信開始から完了までのタイムアウト時間を30秒に設定します。

（例2）

RequestReadTimeout body=0

リクエスト受信開始からリクエストヘッダ受信完了までのタイムアウト時間を20秒に設定します。リクエストボディの受信開始から完了までのタイムアウトは設定しません。

(34)　Require　｛user　ユーザ名　〔ユーザ名　…〕｜group　グループ名　〔グループ名　…〕｜valid-user｜file-owner｜file-group｝

(a)　内容

AuthNameディレクティブ，AuthTypeディレクティブ，AuthUserFileディレクティブ（またはAuthGroupFileディレクティブ）と一緒に指定し，アクセス制限を定義します。

user：AuthUserFileディレクティブで指定したパスワードファイルに登録されているユーザのうち，ユーザ名で指定したユーザだけアクセスできます。

group：AuthGroupFileディレクティブで指定したグループファイルに登録されているグループ名で指定したグループに属するユーザだけがアクセスできます。

valid-user：AuthUserFileディレクティブで指定したパスワードファイルに登録されているすべてのユーザがアクセスできます。

file-owner：AuthUserFileディレクティブで指定したパスワードファイルに登録されているユーザのうち，アクセス対象ファイルのシステムの所有ユーザと一致しているユーザだけがアクセスできます（Windows版では指定できません）。

file-group：AuthGroupFileディレクティブで指定したグループファイルに登録されているグループ名で指定したグループに属するユーザのうち，グループ名がアクセス対象ファイルのシステムの所有グループに一致しているユーザだけがアクセスできます（Windows版では指定できません）。

(b)　記述できる場所

<Directory>，.htaccess

(c)　上書き許可

AuthConfigレベル

6.2.7　Sで始まるディレクティブ

(1)　Satisfy　｛any｜all｝

(a)　内容

コンテンツへのアクセスが，ユーザ認証（AuthUserFile，Requireディレクティブなどを指定）とホスト名またはIPアドレス（Allow from，Deny fromディレクティブなどを指定）の両方によって制限されている場合にその関係を設定します。

any：そのどちらかの条件を満たしていれば，コンテンツへのアクセスを許可します。

all：そのどちらの条件も満たさなければ，コンテンツへのアクセスを禁止します。

(b)　記述できる場所

<Directory>，.htaccess

(2)　Script　メソッド　CGIスクリプト名

(a)　内容

指定されたメソッドによるリクエストがあった場合にCGIスクリプト名で示すスクリプトを実行します。

指定できるメソッド：GET，POST，PUT，DELETE

メソッドは大文字，小文字を区別します。

ただし，GETメソッドの場合，スクリプトは問い合わせ引数があるときだけ（例えば，/foo.html?bar）呼ばれます。

(b)　記述できる場所

httpsd.conf，<VirtualHost>，<Directory>

(c)　指定例

Script POST /cgi-bin/search

(3)　ScriptAlias　URL　ディレクトリ名

(a)　内容

WebブラウザからURLで指定されたCGIプログラム実行のリクエストに対して，実行するCGIプログラムのあるディレクトリ名を指定します。

次のディレクティブ指定値と重複するURLは指定できません。

AliasのURL

AliasMatchの正規表現

ProxyPassのパス名

Redirectの旧パス

RedirectMatchの正規表現

ScriptAliasMatchの正規表現

リダイレクタ定義ファイルのJkMountのURLパターン

例えば，次のような指定はできません。

  ScriptAlias /aaa/bbb/ C:/alias/
  ProxyPass /aaa/ http://aaa.example.com/

ディレクトリ名は，絶対パスで指定してください。

(b)　記述できる場所

httpsd.conf，<VirtualHost>

(c)　指定例

ScriptAlias /cgi-bin/ "<Application Serverのインストールディレクトリ>/httpsd/cgi-bin/"

(4)　ScriptAliasMatch　正規表現　新パス

(a)　内容

Webブラウザから指定されたCGIプログラム実行要求のURLが正規表現で記述した条件を満たす場合，指定した新パスのCGIプログラムを実行します。正規表現で括弧（）を使用してグループ化している場合，そのi番目のグループの表現にマッチした文字列を，新パスで $iを使用して参照できます。iには1から9までの数字を指定します。

新パスは，絶対パスで指定してください。また，新パスの文字として，'$'または'&'を含める場合は，その文字の前に'¥'を付加してください。なお，$iを指定する際には，'$'の前に'¥'を付加する必要はありません。

次のディレクティブ指定値と重複する正規表現は指定できません。

AliasのURL

AliasMatchの正規表現

ProxyPassのパス名

Redirectの旧パス

RedirectMatchの正規表現

ScriptAliasのURL

リダイレクタ定義ファイルのJkMountのURLパターン

例えば，次のような指定はできません。

  ScriptAliasMatch ^/aaa/bbb/(.*) C:/alias/$1
  ProxyPass /aaa/ http://aaa.example.com/

(b)　記述できる場所

httpsd.conf，<VirtualHost>

(c)　指定例

ScriptAliasMatch ^/cgi-bin/(.*) "<Application Serverのインストールディレクトリ>/httpsd/cgi-bin/$1"

(5)　ScriptInterpreterSource｛ registry｜script ｝　[図データ]

(a)　内容

CGIスクリプトの実行に使用されるインタプリタを定義します。

registry：レジストリが検索され，拡張子に関連づけられているプログラムがインタプリタとして使用されます。

script：スクリプト内の#!行で指定されたインタプリタが使用されます。

(b)　記述できる場所

httpsd.conf，<VirtualHost>，<Directory>，.htaccess

(c)　上書き許可

FileInfoレベル

(6)　ScriptLog　ファイル名

(a)　内容

CGIスクリプトのエラーログ出力先のファイルを指定します。ファイル名には，絶対パスまたはServerRootディレクティブの指定値からの相対パスが指定できます。

UNIXの場合，指定するファイルは，Userディレクティブで指定したユーザの権限で書き込みができるようになっている必要があります。

(b)　記述できる場所

httpsd.conf

(7)　ScriptLogBuffer　バッファ数

〜((0−2147483647))《1024》（単位：バイト）

(a)　内容

PUT，POSTメソッドによるリクエストのボディ部のログを採取する場合の最大値をバイト単位で指定します。ScriptLogディレクティブでエラーログ出力先のファイルを指定した場合だけ，この指定は有効になります。

このディレクティブでの指定値分の領域が，リクエスト処理中に確保されます。そのため，大きい値を指定すると，メモリ確保失敗となって，Webサーバが終了する場合があります。デフォルト値または必要最小限の値を指定することを推奨します。

(b)　記述できる場所

httpsd.conf

(8)　ScriptLogLength　ファイルサイズ

〜((0−2147483647))《10385760》（単位：バイト）

(a)　内容

CGIスクリプトのエラーログファイルの最大サイズをバイト単位で指定します。ScriptLogディレクティブでエラーログ出力先のファイルを指定した場合だけ指定が有効になります。

(b)　記述できる場所

httpsd.conf

(9)　SendBufferSize　送信バッファサイズ

〜((512−2147483647))《0》（単位：バイト）

(a)　内容

WebサーバのTCP送信バッファサイズをバイト数で指定します。0を指定した場合，OSのデフォルト値が使用されます。

高速のネットワーク環境では，OSのデフォルト値よりも大きな値を設定することで，レスポンス送信の性能が向上する場合があります。

(b)　記述できる場所

httpsd.conf

(c)　指定例

SendBufferSize 131072

(10)　ServerAdmin　E-Mailアドレス

(a)　内容

サーバ管理者のE-Mailアドレスを指定します。ServerSignatureディレクティブでE-Mailを指定する場合は，必ず指定してください。

(b)　記述できる場所

httpsd.conf，<VirtualHost>

(c)　指定例

ServerAdmin www-admin@server.example.com

(11)　ServerAlias　ホスト名　〔ホスト名　…〕

(a)　内容

サーバ名に基づくバーチャルホストで使用するホスト名（ServerName）の別名を指定します。IPv6アドレスに対応したホスト名も指定できます。

(b)　記述できる場所

<VirtualHost>

(12)　ServerLimit　プロセス数　[図データ]

〜((1-1000)))《16》

(a)　内容

MaxClientsディレクティブとThreadsPerChildディレクティブによって生成可能なサーバプロセス数を求めますが，そのサーバプロセス数を制限するために上限値を指定します。このディレクティブの指定値に従い，サーバ稼働情報を保持する共有メモリ領域を確保します。そのため，実際に動作するサーバプロセス以上の値を指定した場合，使用しない余分な共有メモリ領域を確保することになります。また，Webサーバが起動できないことや不安定になることがあるため，このディレクティブにはMaxClientsディレクティブの値をThreadsPerChildディレクティブの値で割った値と同じ値を指定することを推奨します。

このディレクティブは再起動で指定値を変更できません。指定値を変更する場合は，Webサーバを停止させたあとに起動させてください。

このディレクティブは，worker MPMを使用する場合に指定できます。

(b)　記述できる場所

httpsd.conf

(c)　指定例

ServerLimit 64

(13)　ServerName　サーバ名〔:ポート番号〕

(a)　内容

HTTP Serverのサーバ名およびポート番号を指定します。ポート番号を省略した場合は，Portディレクティブ指定値が設定されます。

サーバ名は，FQDN（完全修飾ドメイン名）またはIPアドレスで指定します。また，サーバ名には，IPv6アドレスまたはIPv6アドレスに対応したFQDNも指定できます。IPv6アドレスを指定し，かつポート番号を指定する場合は，IPv6アドレスを[　]で囲んでください。

UseCanonicalNameディレクティブ指定値に従い，イメージマップの利用または末尾を/（スラッシュ）で閉じないディレクトリ指定のリクエストなど，Webサーバでリダイレクトが指示された場合のリダイレクト先としてLocationヘッダに設定されクライアントに返信されるため，クライアントからアクセスできるサーバ名を指定しなければなりません。このディレクティブの指定は必須です。

(b)　記述できる場所

httpsd.conf，<VirtualHost>

(c)　指定例

ServerName www.example.com
ServerName 2001::123:4567:89ab:cdef
ServerName [2001::123:4567:89ab:cdef]
ServerName [2001::123:4567:89ab:cdef]:8080

(14)　ServerPath　パス名

(a)　内容

サーバ名に基づくバーチャルホストで，Hostヘッダの代わりにパス名を利用して各ホストに接続する場合に指定します。

(b)　記述できる場所

<VirtualHost>

(15)　ServerRoot　ディレクトリ名

〜《/opt/hitachi/httpsd》 (UNIX版)

〜《<Application Serverのインストールディレクトリ>¥httpsd》 (Windows版)

(a)　内容

HTTP Serverのルートディレクトリを絶対パスで指定します。ここに指定した絶対パスはほかのディレクティブから，相対パス指定時の基点になります。

(b)　記述できる場所

httpsd.conf

(c)　指定例

ServerRoot "C:/Program Files/Hitachi/Cosminexus/httpsd"

(16)　ServerSignature　｛On｜Off｜Email｝

(a)　内容

Webサーバが作成するエラーメッセージなどのコンテンツのフッタに署名するかどうかを指定します。

On：ServerTokensディレクティブに従った文字列（「Cosminexus HTTP Server」やバージョン番号など）およびUseCanonicalNameディレクティブ指定値に従ったサーバ名とポート番号を表示します。

Cosminexus HTTP Server 09-00 at www.example.com Port 80

Off：コンテンツのフッタに署名を表示しません。

Email：Onを指定した場合の表示に加えServerAdminディレクティブの指定値をmailtoタグで追加します。

なお，Onを指定した場合，ServerNameディレクティブに指定したIPv6アドレスまたはIPv6アドレスに対応したホスト名を表示できます。

(b)　記述できる場所

httpsd.conf，<VirtualHost>，<Directory>，.htaccess

(c)　指定例

ServerSignature On

(17)　ServerTokens　｛Minimal｜OS｜Full｜ProductOnly｝

(a)　内容

HTTPレスポンスヘッダのServerヘッダのフォーマットを設定します。それぞれの設定によるServerヘッダの値を次に示します。OS種別には，Unix，Win32またはWin64が設定されます。Serverヘッダの値がどのように利用されるかはクライアントの仕様によります。

Minimal：Cosminexus HTTP Server バージョン番号

OS：Cosminexus HTTP Server バージョン番号(OS種別)

Full：Cosminexus HTTP Server バージョン番号(OS種別) 付加PPで設定された情報

ProductOnly：Cosminexus HTTP Server

(b)　記述できる場所

httpsd.conf

(c)　指定例

ServerTokens Full

(18)　SetEnv　環境変数　値

(a)　内容

CGIスクリプトに任意の環境変数を渡す場合に設定する環境変数の値を指定します。このディレクティブを複数指定する場合，同じ環境変数に異なる値は指定できません。

(b)　記述できる場所

httpsd.conf，<VirtualHost>，<Directory>，.htaccess

(c)　上書き許可

FileInfoレベル

(d)　指定例

SetEnv MY_ENV myenv

(19)　SetEnvIf　リクエスト値　正規表現　環境変数〔=値〕　〔環境変数〔=値〕　…〕

(a)　内容

クライアントからのリクエストを基に環境変数を定義します。クライアントからのリクエスト値が正規表現で表した条件を満たす場合，指定した環境変数を設定します。設定する値のデフォルト値は1です。環境変数の前に!が付いたときは，その環境変数の設定を解除します。正規表現で括弧（）を使用してグループ化している場合，そのi番目のグループの表現にマッチした文字列を，値で$iを使用して参照できます。また，$0を使用することで正規表現にマッチした文字列全体を指定することが可能です。iには0から9までの数字を指定します。

リクエスト値としては，HTTPリクエストヘッダか次の表に示す値を指定できます。先に指定された環境変数をリクエスト値として指定することで環境変数の検査ができます。ただし，この場合の環境変数は，HTTPリクエストヘッダにも次の表に示す指定値にも一致していない必要があります。

リクエスト値

意味

Remote_Addr

クライアントのIPアドレス

Remote_Host

クライアントのホスト名（リクエストに設定されている場合だけ）

Request_Protocol

リクエストのプロトコル（HTTP/1.1　など）

Request_Method

リクエストのメソッド名（GET，POST，HEADなど）

Request_URI

リクエストのURI

Server_Addr

リクエストを受信したサーバのIPアドレス

このディレクティブを複数指定する場合，同じリクエスト値は複数指定できません。

なお，リクエスト値にRemote_Hostを指定した場合，正規表現にはIPv6アドレスに対応したホスト名も指定できます。また，IPv6を使用した接続に対しては，Remote_AddrとServer_Addrのリクエスト値は使用できません。Remote_AddrとServer_Addrを使用したい場合は，HWSSetEnvIfIPv6ディレクティブで設定してください。

(b)　記述できる場所

httpsd.conf，<VirtualHost>，<Directory>，.htaccess

(c)　上書き許可

FileInfoレベル

(d)　指定例

（例1）

SetEnvIf User-Agent "Mozilla.*" SETENVIF_USER_AGENT=Mozilla

（例2）

SetEnvIf Request_URI "¥.(gif|jpg)$" request_is_image

（例3）

IPv4を使用した接続のうち，特定のクライアントに対して環境変数を設定する場合は，次のように指定します。

Listen 123.123.123.123:80
Listen [2001::123:4567:89ab:cdef]:80
<VirtualHost 123.123.123.123:80>
        SetEnvIf Remote_Addr ^234¥.234¥.234¥.234$ IPV4_CLIENT
</VirtualHost>

（例4）

Originヘッダの値がhttp://またはhttps://から始まり，test1.comまたはtest2.comを含む場合，環境変数ORIGINに正規表現にマッチした文字列全体を設定します。Originヘッダの値がhttp://xxx.xxx.test1.comの場合，環境変数ORIGINにhttp://xxx.xxx.test1.comが設定されます。

SetEnvIf Origin "^https?://(.*.test1.com|.*.test2.com)" ORIGIN=$0

(20)　SetEnvIfNoCase　リクエスト値　正規表現　環境変数〔=値〕　〔環境変数〔=値〕　…〕

(a)　内容

クライアントからのリクエストを基に環境変数を定義します。クライアントからのリクエスト値が正規表現で表した条件を満たす場合，指定した環境変数を設定します。設定する値のデフォルト値は1です。環境変数の前に!が付いたときは，その環境変数の設定を解除します。

リクエスト値に指定できる値については，SetEnvIfディレクティブを参照してください。

ただし，このディレクティブでは，正規表現の大文字，小文字の区別をしません。また，このディレクティブを複数指定する場合，同じリクエスト値は複数指定できません。

なお，リクエスト値にRemote_Hostを指定した場合，正規表現にはIPv6アドレスに対応したホスト名も指定できます。また，IPv6を使用した接続に対しては，Remote_AddrとServer_Addrのリクエスト値は使用できません。Remote_AddrとServer_Addrを使用したい場合は，HWSSetEnvIfIPv6ディレクティブで設定してください。

(b)　記述できる場所

httpsd.conf，<VirtualHost>，<Directory>，.htaccess

(c)　上書き許可

FileInfoレベル

(21)　SetHandler　ハンドラ名

(a)　内容

指定した<Directory>またはアクセスコントロールファイルの範囲すべてのリクエストをハンドラ名で指定したハンドラに関連づける場合，指定します。ハンドラ名としてnoneを指定すると，それまでのSetHandlerディレクティブの設定が無効になります。

(b)　記述できる場所

<Directory>，.htaccess

(c)　上書き許可

FileInfoレベル

(22)　SSLBanCipher　暗号種別　〔暗号種別　…〕

(a)　内容

指定した暗号種別でのアクセスを拒否し，クライアントにステータスコード403 Forbidden を応答します。

指定できる暗号種別は，SSLCipherSuiteディレクティブを参照してください。

TLSv1.2以前とTLSv1.3プロトコルの暗号種別を同時に指定できます。

このディレクティブを指定しない場合は，暗号種別でのアクセス拒否をしません。

(b)　記述できる場所

<Directory>，.htaccess

(c)　上書き許可

AuthConfigレベル

(23)　SSLCACertificateFile　ファイル名

(a)　内容

SSL機能を使用しクライアント認証する場合，CA（認証局）の証明書（PEM形式）のファイル名を指定します。複数の証明書ファイルを連結させて，一つのファイルに複数の証明書が混在できます。

ファイル名は，絶対パスで指定してください。

(b)　記述できる場所

httpsd.conf，<VirtualHost>

(c)　指定例

SSLCACertificateFile "<Application Serverのインストールディレクトリ>/httpsd/conf/ssl/cacert/anycert.pem"

(24)　SSLCACertificatePath　ディレクトリ　[図データ]

(a)　内容

SSL機能を使用しクライアント認証する場合，CAの証明書（PEM形式）へのハッシュリンクを格納したディレクトリを指定します。ハッシュリンクの作成および運用方法については「5.2.8　ハッシュリンクの作成（UNIX版）（openssl.sh x509コマンド）」を参照してください。

ディレクトリ名は，絶対パスで指定してください。

(b)　記述できる場所

httpsd.conf，<VirtualHost>

(c)　指定例

SSLCACertificatePath /opt/hitachi/httpsd/conf/ssl/cacerts

(25)　SSLCARevocationCheck　｛none｜leaf｝

(a)　内容

証明書失効リスト（CRL）チェックをするかどうかを指定します。CRLのチェックをする場合は，SSLCARevocationFileディレクティブを指定する必要があります。

none：CRLのチェックをしません。

leaf：クライアント証明書について，CRLのチェックをします。

(b)　記述できる場所

httpsd.conf，<VirtualHost>

(26)　SSLCARevocationFile　ファイル名

(a)　内容

PEM形式のCRLを優先順に連結したファイルを絶対パスで指定します。これはクライアント認証時にCRLを適用したい場合に指定します。ただし，SSLCARevocationCheckにnoneを指定した場合は適用されません。

(b)　記述できる場所

httpsd.conf，<VirtualHost>

(c)　指定例

SSLCARevocationFile "<Application Serverのインストールディレクトリ>/httpsd/conf/ssl/crl/crl.pem"

PEM形式のCRLファイルを指定します。

(27)　SSLCertificateFile　ファイル名

(a)　内容

Webサーバの証明書を格納したファイル名を指定します。サーバ認証するためにWebサーバの証明書を先頭として，中間CA（認証局），ルートCAの順にCAの証明書を連結することができます。証明書はPEM形式です。

RSA暗号の証明書と楕円曲線暗号の証明書を指定する場合，別のファイルに分けて一つずつ指定できます。

ファイル名は，絶対パスで指定してください。

(b)　記述できる場所

httpsd.conf，<VirtualHost>

(c)　指定例

# RSA
SSLCertificateFile "<Application Serverのインストールディレクトリ>/httpsd/conf/ssl/server/httpsd-rsa.pem"
# ECC
SSLCertificateFile "<Application Serverのインストールディレクトリ>/httpsd/conf/ssl/server/httpsd-ecc.pem"

(28)　SSLCertificateKeyFile　ファイル名

(a)　内容

Webサーバの秘密鍵のファイル名を指定します。秘密鍵のファイルはPEM形式です。RSA暗号の秘密鍵と楕円曲線暗号の秘密鍵を指定する場合，別のファイルに分けて一つずつ指定できます。

ファイル名は，絶対パスで指定してください。

(b)　記述できる場所

httpsd.conf，<VirtualHost>

(c)　指定例

# RSA
SSLCertificateKeyFile "<Application Serverのインストールディレクトリ>/httpsd/conf/ssl/server/httpsdkey-rsa.pem"
# ECC
SSLCertificateKeyFile "<Application Serverのインストールディレクトリ>/httpsd/conf/ssl/server/httpsdkey-ecc.pem"

(29)　SSLCipherSuite　〔TLSv1.3〕　暗号種別〔:暗号種別…〕

(a)　内容

SSL機能で使用可能とする暗号種別を指定します。ディレクティブに指定した暗号種別とクライアントが使用できる暗号種別との間で一致するものがあれば，SSL通信が確立されHTTPリクエストを受信します。一致するものがない場合は，SSL通信は確立されないでHTTPリクエストを受信しません。

TLSv1.3プロトコルの暗号種別を指定する場合，暗号種別の前にTLSv1.3を指定してください。TLSv1.3を指定しない場合は，TLSv1.2以前のプロトコルについての暗号種別の指定となります。このディレクティブを指定しない場合は，指定可能なすべての暗号種別が使用可能となります。

TLSv1.2以前のプロトコルで指定できる暗号種別を次に示します。

表6‒7　TLSv1.2以前のプロトコルで指定できる暗号種別

暗号種別

鍵交換方式

認証方式

対称鍵暗号方式

暗号鍵サイズ（bit）

メッセージ認証アルゴリズム

AES128-SHA

RSA

RSA

AES

128

SHA

AES128-SHA256

RSA

RSA

AES

128

SHA256

AES256-SHA

RSA

RSA

AES

256

SHA

AES256-SHA256

RSA

RSA

AES

256

SHA256

AES128-GCM-SHA256

RSA

RSA

AES

128

AEAD※

AES256-GCM-SHA384

RSA

RSA

AES

256

AEAD※

ECDHE-RSA-AES128-SHA

ECDH

RSA

AES

128

SHA

ECDHE-RSA-AES256-SHA

ECDH

RSA

AES

256

SHA

ECDHE-RSA-AES128-SHA256

ECDH

RSA

AES

128

SHA256

ECDHE-RSA-AES256-SHA384

ECDH

RSA

AES

256

SHA384

ECDHE-RSA-AES128-GCM-SHA256

ECDH

RSA

AES

128

AEAD※

ECDHE-RSA-AES256-GCM-SHA384

ECDH

RSA

AES

256

AEAD※

ECDHE-ECDSA-AES128-SHA

ECDH

ECDSA

AES

128

SHA

ECDHE-ECDSA-AES256-SHA

ECDH

ECDSA

AES

256

SHA

ECDHE-ECDSA-AES128-SHA256

ECDH

ECDSA

AES

128

SHA256

ECDHE-ECDSA-AES256-SHA384

ECDH

ECDSA

AES

256

SHA384

ECDHE-ECDSA-AES128-GCM-SHA256

ECDH

ECDSA

AES

128

AEAD※

ECDHE-ECDSA-AES256-GCM-SHA384

ECDH

ECDSA

AES

256

AEAD※

注※

AEAD: Authenticated Encryption with Associated Data(認証付き暗号)

TLSv1.3プロトコルで指定できる暗号種別を次に示します。

表6‒8　TLSv1.3プロトコルで指定できる暗号種別

暗号種別

鍵交換方式

認証方式

対称鍵暗号方式

暗号鍵サイズ（bit）

メッセージ認証アルゴリズム

TLS_AES_128_GCM_SHA256

any

any

AES

128

AEAD※

TLS_AES_256_GCM_SHA384

any

any

AES

256

AEAD※

TLS_CHACHA20_POLY1305_SHA256

any

any

CHACHA20/POLY1305

256

AEAD※

TLS_AES_128_CCM_SHA256

any

any

AES

128

AEAD※

TLS_AES_128_CCM_8_SHA256

any

any

AES

128

AEAD※

注※

AEAD: Authenticated Encryption with Associated Data(認証付き暗号)

(b)　注意事項

SSLCipherSuiteディレクティブに指定できる暗号種別以外を含んでいる場合，TLSプロトコルのバージョンおよびHTTP Serverのバージョンによって起動時の動作が異なります。

TLSv1.3プロトコル（HTTP Server 11-20-09以前）の場合は起動エラーになります。

TLSv1.3プロトコル（HTTP Server 11-20-10以降）の場合は起動エラーになりません。

TLSv1.2以前のプロトコルの場合は起動エラーになりません。

HTTP/2プロトコル機能でTLSv1.2プロトコルを使用する場合は，次の暗号種別だけが使用できます。

ECDHE-RSA-AES128-GCM-SHA256

ECDHE-RSA-AES256-GCM-SHA384

ECDHE-ECDSA-AES128-GCM-SHA256

ECDHE-ECDSA-AES256-GCM-SHA384

(c)　記述できる場所

httpsd.conf，<VirtualHost>

(d)　指定例

（例1）

SSLCipherSuite AES128-SHA256:AES256-SHA256

TLSv1.2以前のプロトコルで使用する暗号種別を指定します。

（例2）

SSLCipherSuite TLSv1.3 TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256

TLSv1.3プロトコルで使用する暗号種別を指定します。

(30)　SSLEngine　｛On｜Off｝

(a)　内容

SSLを有効にするかどうかを指定します。デフォルトはSSL無効です。

<VirtualHost>ブロック内でSSLを有効にしたい場合，有効にしたい<VirtualHost>ブロック内でSSLEngine Onを指定してください。

On：SSLを有効にします。

Off：SSLを無効にします。

(b)　記述できる場所

httpsd.conf，<VirtualHost>

(31)　SSLOptions　〔+｜-〕オプション　〔〔+｜-〕オプション　…〕

(a)　内容

SSL機能を使用する場合のオプションを指定します。

+：オプションで指定した機能を有効にします。

-：オプションで指定した機能を無効にします。

オプション

機能

StdEnvVars

CGI環境変数にSSL関連の標準の環境変数を設定します。環境変数の設定は性能に影響を与えるため，CGIでSSL関連の環境変数が必要な場合のみ，このオプションを有効にしてください。

ExportCertData

CGI環境変数にSSL_SERVER_CERT，SSL_CLIENT_CERTおよびSSL_CLIENT_CERT_CHAIN_n（n = 0，1，2，...）を設定します。CGIでサーバおよびクライアント証明書の情報が必要な場合に指定します。

FakeBasicAuth

SSLクライアント認証の機能と併せて，WebブラウザでユーザIDとパスワードを入力することなく，クライアント証明書の提示だけでBasic認証する場合に指定します。AuthUserFileディレクティブで指定するファイルにはX509クライアント証明書のSubjectとパスワードを記述します。パスワードは，常に"{SHA}W6ph5Mm5Pz8GgiULbPgzG37mj9g="固定とします（"password"を暗号化したもの）。

openssl.sh x509 またはopenssl.bat x509 コマンドで表示する証明書のSubject フィールドの値

Subject: C = JP, ST = Kanagawa, L = Yokohama-shi, O = HITACHI, OU = Software, CN = username, emailAddress = username@userhost

この場合AuthUserFileディレクティブで指定するファイルは次のように指定します。

/C=JP/ST=Kanagawa/L=Yokohama-shi/O=HITACHI/OU=Software/CN=username/emailAddress=username@userhost:{SHA}W6ph5Mm5Pz8GgiULbPgzG37mj9g=

(b)　注意事項

+-を使用しないでオプションを指定すると，最後に指定したオプションだけが有効になります。

(c)　記述できる場所

httpsd.conf，<VirtualHost>，<Directory>，.htaccess

(d)　上書き許可

Optionsレベル

(e)　指定例

（例1）

SSLOptions StdEnvVars
SSLOptions FakeBasicAuth

このようにオプションに+-を指定しないディレクティブを2行指定した場合，あとに指定したFakeBasicAuthだけが有効となります。

（例2）

SSLOptions StdEnvVars
SSLOptions +FakeBasicAuth

このように+を指定したオプションを後に指定した場合，StdEnvVarsに加えてFakeBasicAuthも有効となります。

（例3）

SSLOptions +StdEnvVars FakeBasicAuth

+-のないオプションを後に指定した場合，前に指定したオプションは無効になり，あとに指定したFakeBasicAuthだけが有効となります。

(32)　SSLProtocol 〔+｜-〕プロトコル名　〔〔+｜-〕プロトコル名 …〕

〜《All》

(a)　内容

使用するSSLプロトコルのバージョンを指定します。

+： プロトコル名で指定したプロトコルを有効にします。

-： プロトコル名で指定したプロトコルを無効にします。

プロトコル名として設定できる値は次のとおりです。

TLSv1: TLSプロトコルバージョン1.0を使用する。

TLSv1.1: TLSプロトコルバージョン1.1を使用する。

TLSv1.2: TLSプロトコルバージョン1.2を使用する。

TLSv1.3: TLSプロトコルバージョン1.3を使用する。

All: 上記すべてのプロトコルを使用する。

(b)　注意事項

+-を使用しないでプロトコル名を指定すると，最後に指定したプロトコルだけが有効になります。連続したプロトコルバージョンを指定していない場合，古いプロトコルバージョンは無効になります。

(c)　記述できる場所

httpsd.conf，<VirtualHost>

(d)　指定例

（例1）

SSLProtocol +TLSv1.2 +TLSv1.3

TLSv1.2とTLSv1.3が有効となります。

（例2）

SSLProtocol +TLSv1 +TLSv1.2

連続したプロトコルを指定していない場合，後継のプロトコルTLSv1.2だけが有効となります。

（例3）

SSLProtocol All -TLSv1

TLSv1.1，TLSv1.2，TLSv1.3が有効となります。

(33)　SSLRequireSSL

(a)　内容

SSL以外によるアクセスを禁止する場合に指定します。このディレクティブが指定されている場合，httpによるアクセスがステータスコード403 Forbiddenで拒否されます。異なるディレクティブの記述場所で，不用意にSSLを無効にしコンテンツを公開してしまうことを防止します。

(b)　記述できる場所

<Directory>，.htaccess

(c)　上書き許可

AuthConfigレベル

(d)　指定例

<VirtualHost 172.17.40.10:443>
 SSLEngine Off
 ...
  <Directory /secure/dir>
    SSLRequireSSL
    ...
  </Directory>
</VirtualHost>

172.17.40.10ホストの443ポートに対するhttpアクセスは，/secure/dirディレクトリへのアクセスを除いてできます。/secure/dirディレクトリへのhttpアクセスは，ステータスコード403 Forbiddenを応答します。

(34)　SSLVerifyClient　｛none｜optional｜require｝

(a)　内容

クライアント認証時の証明書に関する設定を指定します。

none：証明書の要求をしません。

optional：クライアントは証明書を提示できます。運用テスト用。

require：クライアントは証明書を提示しなければなりません。

(b)　記述できる場所

httpsd.conf，<VirtualHost>

(c)　指定例

SSLVerifyClient require

(35)　SSLVerifyDepth　段階数

〜((0−10))《1》

(a)　内容

証明書のチェーンを何段階までたどるかを指定します。

クライアント認証に使用するCA証明書のチェーンについて，認証チェックをする段階数を指定します。チェーンされたCAをどこまで信用するかを制限するために使用します。クライアント証明書が自己署名の証明書の場合に0であるため，通常は段階数に1以上を指定します。例を次に示します。

（例）

条件

CA1は，root CAに署名されている。

証明書1は，root CAに署名されている。

証明書2は，CA1に署名されている。

SSLVerifyDepthの指定

この場合，証明書1，証明書2とも認証チェックをするためには，SSLVerifyDepthディレクティブに2以上を指定します。また，証明書1は認証チェックし，証明書2は認証チェックをしないようにするにはSSLVerifyDepthディレクティブに1を指定します。

(b)　記述できる場所

httpsd.conf，<VirtualHost>

(c)　指定例

SSLVerifyDepth 10

(36)　StartServers　プロセス数　[図データ]

worker MPM

〜((1−(MaxClients/ThreadsPerChild))) 《3》

prefork MPM

〜((1−1024))《5》

(a)　内容

Webサーバ起動時のサーバプロセス数を指定します。

worker MPM

StartServersディレクティブの指定値は，1から，MaxClientsディレクティブの値をThreadsPerChildの値で割った値までの範囲です。

(b)　記述できる場所

httpsd.conf

(c)　指定例

StartServers 5

6.2.8　T，Uで始まるディレクティブ

(1)　ThreadLimit　スレッド数　[図データ]

〜((1−15000))《1024》

(a)　内容

サーバプロセスに生成するサーバスレッド数の上限値を指定します。このディレクティブの指定値に従い，サーバ稼働情報を保持する共有メモリ領域を確保します。そのため，ThreadsPerChildディレクティブで指定した実際に動作するサーバスレッド数以上の値を指定した場合，使用しない余分な共有メモリ領域を確保します。このディレクティブにはThreadsPerChildディレクティブと同じ値を指定することを推奨します。

また，このディレクティブおよびThreadsPerChildディレクティブにシステムが扱える以上の値を指定した場合，Webサーバが起動できないことや不安定になることがあるため，必要以上に大きな値を指定しないでください。

このディレクティブは再起動で指定値を変更できません。指定値を変更する場合は，Webサーバを停止させたあとに起動させてください。

(b)　記述できる場所

httpsd.conf

(2)　ThreadLimit　スレッド数　[図データ]

〜((1−1000))《64》

(a)　内容

サーバプロセスに生成するサーバスレッド数の上限値を指定します。このディレクティブの指定値に従い，サーバ稼働情報を保持する共有メモリ領域を確保します。そのため，ThreadsPerChildディレクティブで指定した実際に動作するサーバスレッド数以上の値を指定した場合，使用しない余分な共有メモリ領域を確保することになります。また，Webサーバが起動できないことや不安定になることがあるため，このディレクティブにはThreadsPerChildディレクティブと同じ値を指定することを推奨します。

このディレクティブは再起動で指定値を変更できません。指定値を変更する場合は，Webサーバを停止させたあとに起動させてください。

このディレクティブは，worker MPMを使用する場合に指定できます。

(b)　記述できる場所

httpsd.conf

(3)　Timeout　時間

〜((0−65535))《60》（単位：秒）

(a)　内容

次の待ち時間を秒単位で指定します。0を指定すると即時タイムアウトとなるため，推奨しません。なお，少しのデータでも送受信できた場合，待ち時間はリセットされます。

クライアントからのリクエスト受信（コネクション確立後，HTTPプロトコルの受信）中にデータを受信しなくなった場合の待ち時間

クライアントへのレスポンス送信中にデータを送信できなくなった場合の待ち時間

CGIプログラムへのリクエスト送信中にデータを送信できなくなった場合の待ち時間

CGIプログラムへのリクエスト送信後からレスポンス受信までの待ち時間

CGIプログラムからのレスポンス受信中にデータを受信しなくなった場合の待ち時間

CGIプログラムからのレスポンス受信後，入出力用のパイプを閉じるまでの待ち時間

リバースプロキシを使用している場合の，バックエンドサーバへのリクエスト送信中にデータを送信できなくなった場合の待ち時間

リバースプロキシを使用している場合の，バックエンドサーバへのリクエスト送信後からレスポンス受信までの待ち時間

リバースプロキシを使用している場合の，バックエンドサーバからのレスポンス受信中にデータを受信しなくなった場合の待ち時間

(b)　記述できる場所

httpsd.conf

(c)　指定例

Timeout 300

(4)　ThreadsPerChild　スレッド数　[図データ]

〜((1−ThreadLimitディレクティブ指定値))《64》

(a)　内容

HTTP Serverとして起動するスレッド数を指定します。指定したスレッド数はHTTP Serverの最大同時接続数（TCP/IPのコネクション最大数）を示します。

(b)　記述できる場所

httpsd.conf

(5)　ThreadsPerChild　スレッド数　[図データ]

〜((1−ThreadLimitディレクティブ指定値))《25》

(a)　内容

一つのサーバプロセスに生成するサーバスレッド数を指定します。

このディレクティブは，worker MPMを使用する場合に指定できます。

(b)　記述できる場所

httpsd.conf

(6)　TraceEnable ｛On｜Off｜extended｝

(a)　内容

TRACEメソッドによるリクエストを拒否するかどうかを指定します。

On：TRACEメソッドによるリクエストを許可します。ただし，リクエストボディが付加されている場合は，413 Request Entity Too Largeを応答します。

Off：TRACEメソッドによるリクエストを拒否します。TRACEメソッドによるリクエストの場合は，ステータスコード403 Forbiddenを応答します。

extended：TRACEメソッドによるリクエストを許可します。リクエストボディが付加されていても許可します。ただし，リバースプロキシ以外のリクエストボディサイズの上限は64KBです。

(b)　記述できる場所

httpsd.conf，<VirtualHost>

(c)　指定例

TraceEnable Off

(7)　TransferLog　｛ファイル名｜パイプ｝

(a)　内容

ログを格納するファイルまたはログを出力するプログラムを指定します。ログのフォーマットはラベル名を指定しないLogFormatディレクティブで指定できます。

LogFormatディレクティブでログのフォーマットを指定する場合は，IPv6アドレスやIPv6アドレスに対応したホスト名も出力できます。指定できるフォーマットはCustomLogディレクティブを参照してください。

LogFormatディレクティブでフォーマットを指定しない場合は，標準のログフォーマットで出力します。

ファイル名：ログを格納するファイル名を指定します。ファイル名には，絶対パスまたはServerRootディレクティブの指定値からの相対パスが指定できます。

パイプ：標準入力からログ情報を受け取るプログラムを"|プログラム名"のフォーマットで指定します。Windows版での注意事項は，CustomLogディレクティブを参照してください。

(b)　記述できる場所

httpsd.conf，<VirtualHost>

(c)　指定例

TransferLog "|¥"¥"<Application Serverのインストールディレクトリ>/httpsd/sbin/rotatelogs.exe¥" ¥"<Application Serverのインストールディレクトリ>/httpsd/logs/access¥" 86400¥""

rotatelogsプログラムを使用してログを24時間ごとに分割して採取します。

(8)　TypesConfig　ファイル名

〜《conf/mime.types》

(a)　内容

ファイル拡張子とコンテントタイプ（MIMEタイプ）の関係を定義する設定ファイルを指定します。ファイル名には，絶対パスまたはServerRootディレクティブの指定値からの相対パスが指定できます。

設定ファイル内の指定形式は，MIMEタイプ　ファイル拡張子　〔ファイル拡張子　…〕です。MIMEタイプだけ指定している行は無視します。また，行の最初に#を付けると，コメント行になります。

(b)　記述できる場所

httpsd.conf

(c)　指定例

TypesConfig conf/mime.types

MIMEタイプの設定ファイルはmime.types

(9)　UnsetEnv　環境変数　〔環境変数　…〕

(a)　内容

CGIスクリプトに渡す環境変数から，SetEnvディレクティブまたはPassEnvディレクティブで指定した環境変数を削除する場合に指定します。

(b)　記述できる場所

httpsd.conf，<VirtualHost>，<Directory>，.htaccess

(c)　上書き許可

FileInfoレベル

(d)　指定例

UnsetEnv MY_ENV

(10)　UseCanonicalName　｛On｜Off｜dns｝

(a)　内容

サーバの正式な名前の生成方法を指定します。サーバの正式な名前は，自サーバを参照するURLや環境変数のSERVER_NAMEとSERVER_PORTに設定されます。

On：サーバの正式な名前は，ServerNameディレクティブ指定値から作成され，自サーバを参照するURLや環境変数に設定されます。VirtualHost指定時にIPアドレスを使用する場合は，VirtualHostブロック内でServerNameを指定してください。ブロック内でServerNameを指定していない場合は，IPアドレスからホスト名を取得します。

Off：サーバの正式な名前は，Hostヘッダによってクライアントから与えられたホスト名称とポート番号から作成され，自サーバを参照するURLや環境変数に設定されます。ただし，Hostヘッダが与えられない場合は，ServerNameディレクティブ値と，実際のコネクションに使用されているポート番号から作成されます。

dns：Hostヘッダを持たない古いクライアントのためのオプションです。このオプション指定時には，サーバの正式な名前は，クライアントから与えられたサーバのIPアドレスから逆引きしたホスト名称および実際にコネクションに使用されているポート番号から作成され，自サーバを参照するURLや環境変数に設定されます。

なお，On，Off，dnsすべての場合で，IPv6アドレスに対応しています。

(b)　記述できる場所

httpsd.conf，<VirtualHost>，<Directory>

(11)　User　ユーザ名　[図データ]

〜《#-1》

(a)　内容

サーバプロセスが動作するときのユーザ名を指定します。

(b)　記述できる場所

httpsd.conf

(c)　指定例

User nobody

(12)　UserDir　｛ディレクトリ名｜disabled　〔ユーザ名　〔ユーザ名　…〕〕｝

(a)　内容

Webブラウザからの/~ユーザ名/へのリクエストに対して公開するサーバ上の場所をディレクトリ名で指定します。disabledを指定すると，Webコンテンツを公開しないユーザを指定できます。

ディレクトリ名は，相対パスまたは絶対パスで指定します。

Windows版では，絶対パスだけ有効です。

ディレクトリ名：

相対パスで指定した場合

サーバ上にユーザIDを持つユーザが，ユーザのホームディレクトリ下のWebコンテンツを公開する場合の場所を指定します。/~ユーザ名/へのリクエストがあった場合，"ユーザのホームディレクトリ/ディレクトリ名" にアクセスします。

絶対パスで指定した場合

ユーザディレクトリの場所を指定します。/~ユーザ名/へのリクエストがあった場合，"ディレクトリ名/ユーザ名" にアクセスします。

disabled：

Webブラウザからの/~ユーザ名/へのリクエストに対して，Webコンテンツを公開しないユーザを指定します。指定されたユーザ名でのリクエストに対しては，アクセスするディレクトリ名を変換しません。ユーザ名の指定がない場合は，すべてのユーザについてdisabledを指定したことになります。

(b)　注意事項

複数のUserDirディレクティブでディレクトリ名を指定した場合，あとから指定したものに上書きされます。

disabledに指定するユーザ名は，複数のUserDirディレクティブを用いて指定できます。

(c)　記述できる場所

httpsd.conf，<VirtualHost>

(d)　指定例

(例1)

UserDir public_html

ユーザuser1のホームディレクトリを/home/user1とすると，リクエストhttp://ホスト名〔:ポート番号〕/~user1/index.htmlで，/home/user1/public_html/index.htmlにアクセスします。

(例2)

UserDir /home
UserDir disabled user3
UserDir disabled user4 user5

リクエストhttp://ホスト名〔:ポート番号〕/~user1/index.htmlで，/home/user1/index.htmlにアクセスします。ただし，user3はdisabledが指定されているため，http://ホスト名〔:ポート番号〕/~user3/index.htmlというリクエストで/home/user3/index.htmlにアクセスできません。user4，user5についてもuser3と同様です。

(例3)

UserDir disabled

すべてのユーザに対してdisabledを指定します。

付録

付録A　ステータスコード

HTTP ServerがWebブラウザに返送するステータスコードを次に示します。ステータスコードをWebブラウザに返送する際には，ステータスコードに応じて自動生成するエラーメッセージをcharset=ISO-8859-1のHTMLとして同時に返送します。

表A‒1　ステータスコード一覧

ステータスコード

内容

100 Continue

クライアントは，リクエストを継続可能です。

200 OK

正常に終了しました。

204 No Content

リクエストは正常に終了しましたが，返すリソースはありません。

ImapDefault nocontentディレクティブの指定によって，発生します。

206 Partial Content

部分的なリソースを返します。

クライアントのRangeヘッダを用いたPartial GETリクエストの応答として，部分的なコンテンツを返す場合に発生します。

300 Multiple Choices

複数ページの利用が可能です。

301 Moved Permanently

リソースが恒久的に移動しました。

最後をスラッシュで閉じないディレクトリに対するリクエストhttp://ホスト名〔:ポート番号〕/ディレクトリ名や，Redirect permanentディレクティブの指定によって，発生します。

302 Found

リソースが一時的に移動しました。

Redirect tempディレクティブの指定によって，発生します。

303 See Other

リソースが移動しました。

Redirect seeotherディレクティブの指定によって，発生します。

304 Not Modified

リクエストしたコンテンツが変更されていません。

307 Temporary Redirect

リソースが一時的に移動しました。

308 Permanent Redirect

リソースが恒久的に移動しました。

400 Bad Request

リクエストにシンタックスエラーがあります。

次のような場合に発生します。

ヘッダとして誤ったものを指定した場合

HTTP/1.1でHostヘッダがなかった場合

リクエストヘッダの個数がLimitRequestFieldsディレクティブの値を超えた場合

一つのリクエストヘッダのサイズがLimitRequestFieldsizeディレクティブの値を超えた場合

HTTP Server上に配置された静的コンテンツファイルまたはCGIプログラムへCONNECTメソッドを使用してリクエストした場合

リクエストボディの受信処理が，RequestReadTimeoutディレクティブのbodyキーに指定した時間内に完了しなかった場合

401 Unauthorized

リソースにアクセスするためには，認証が必要です。 AuthNameディレクティブまたはAuthUserFileディレクティブなどでアクセスを制御した場合に発生します。

402 Payment Required

将来使用するために予約されているステータスコードです。

403 Forbidden

リソースへのアクセスが禁じられています。

アクセス制御によって，アクセスが拒否された場合または実行権限のないCGIプログラムの実行要求をした場合などに発生します。

404 Not Found

リソースが見つかりません。

サーバ上にはないファイルをリクエストした場合などに発生します。

405 Method Not Allowed

許可されていないHTTPメソッドを使用しました。

HTTP Server上に配置された静的コンテンツファイルでは，GET，HEAD，POST，OPTIONS，TRACEが使用できます。CGIプログラムでは，CGIプログラムでの実装に依存します。

406 Not Acceptable

クライアントがAcceptヘッダで指定したタイプに応じたレスポンスを返せません。

407 Proxy Authentication Required

最初に，プロキシで，クライアントが自身を認証する必要があります。

408 Request Timeout

リクエストがタイムアウトになりました。

次のような場合に発生します。

リクエストの読み込み時に，Timeoutディレクティブに指定した時間だけ無通信状態が発生した場合

リクエストヘッダの読み込みが，RequestReadTimeoutディレクティブのheaderキーに指定した時間内に完了しなかった場合

409 Conflict

リソースの現在の状態と競合しているため，リクエストを完了できませんでした。

410 Gone

リソースが恒久的に利用できません。

Redirect goneディレクティブの指定によって，発生します。

411 Length Required

クライアントはContent-Lengthヘッダを指定する必要があります。

412 Precondition Failed

クライアントのIf-Unmodified-SinceヘッダまたはIf-Matchedヘッダなどで指定した条件が一致しません。

413 Request Entity Too Large

リクエストボディサイズが大き過ぎて，サーバで処理できません。

リクエストボディの長さが， LimitRequestBodyディレクティブで指定した長さよりも長い場合に発生します。

414 Request-URI Too Long

HTTP/1.1通信のリクエストURIが大き過ぎて，サーバで処理できません。問い合わせ文字列などを含むURIなどの長さが，LimitRequestLineディレクティブの値を超えた場合に発生します。

HTTP/2通信のリクエストヘッダのヘッダ値がLimitRequestLineディレクティブの値を超えた場合に発生します。:method, :authorityの疑似ヘッダフィールドの場合は，ステータスコードを返送しないでHTTP/2通信を終了します。

415 Unsupported Media Type

リクエストされたデータのメディア形式をサーバが対応していないため，サーバはリクエストの処理を拒否しています。

416 Requested Range Not Satisfiable

Rangeヘッダでの指定範囲は，該当リソースの範囲を超えています。次の条件がすべて成立する場合に出力されます。

リクエストがRangeヘッダフィールドを含む。

フィールドの範囲指定値が，選ばれたリソースの現在の範囲に重なっていない。

リクエストにIf-Rangeリクエストヘッダフィールドを含んでいない。

417 Expectation Failed

Expectリクエストヘッダフィールドの拡張が受け入れられませんでした。

422 Unprocessable Entity

リクエストは適正ですが，意味が誤っているために従うことができません。

423 Locked

アクセス中のリソースはロックされています。

424 Failed Dependency

要求されたアクションが別のアクションに依存していて，そのアクションが失敗したため，リソースに対してメソッドを実行できませんでした。

431 Request Header Fields Too Large

リクエストヘッダのサイズや個数が上限を超えています。

次のような場合に発生します。

HTTP/2通信のリクエストヘッダの個数がLimitRequestFieldsディレクティブの値を超えた場合

HTTP/2通信の一つのリクエストヘッダのサイズがLimitRequestFieldsizeディレクティブの値を超えた場合

500 Internal Server Error

Webサーバ上でエラーが発生しました。

CGIプログラムの問題や，アクセス制御ファイル(.htaccess)のエラーなどの場合に発生します。詳細な情報は，エラーログに出力されます。

501 Not Implemented

サポートされていないHTTPメソッドの要求です。

502 Bad Gateway

プロキシサーバが不正な要求を受け取りました。

次のような場合に発生します。

バックエンドサーバからのレスポンス受信時にステータスラインおよびレスポンスヘッダの読み込みでタイムアウトなどのエラーになった場合

ProxyPassディレクティブに指定したホスト名のアドレス解決に失敗した場合

503 Service Unavailable

次のような場合に発生します。

サーバが過負荷状態で，現在リクエスト処理できない場合

処理中のリクエスト数が流量制限機能などで設定した上限値に達した場合

バックエンドサーバが未起動，またはProxyPassディレクティブの転送先URLに不備があり，接続に失敗した場合

504 Gateway Timeout

CGIからのレスポンス受信のタイムアウトなど，リクエストを完了させるために必要な要求がタイムアウトしました。

505 HTTP Version Not Supported

サーバは，要求メッセージで使用されたHTTPプロトコルバージョンをサポートしていないか，サポートを拒否しています。

506 Variant Also Negotiates

サーバに内部配置上のエラーがあります。

507 Insufficient Storage

サーバがリクエストを正常に完了するために必要な表現を保存できないため，メソッドをリソースで実行できません。

510 Not Extended

リソースにアクセスするためのポリシーがリクエストで満たされていません。

注

表A-1および表A-1以外のステータスコードがHTTP Serverと連携したCGIプログラムなどの上位プログラムから出力されることがあります。その場合は，それぞれのプログラムのマニュアルを参照してください。

リバースプロキシを使用している場合には，400 Bad Request，403 Forbidden，502 Bad Gatewayは，400 Proxy Error，403 Proxy Error，502 Proxy Errorとなる場合もあります。

付録B　CGIプログラムに渡す環境変数

WebサーバがCGIプログラムに渡す環境変数の一覧を表B-1，表B-2，表B-5，および表B-8に，SSL_SERVER_要素の例，SSL_SERVER_I_要素の例を，表B-3，表B-4に示します。プラットフォーム，クライアントの設定，リクエストの形，Webサーバのディレクティブの設定などによって，ここで記載されている環境変数が設定されない場合や，記載していない環境変数が設定される場合もあります。表の中のサーバ名，ドメイン名，メールアドレスなどはすべて架空の値です。

表B‒1　環境変数一覧

環境変数名

内容

例

AUTH_TYPE

ユーザ認証をする場合の認証タイプ

Basic

COMSPEC

コマンドプロンプトの実行可能ファイル

C:¥WINNT¥system32¥cmd.exe

CONTENT_LENGTH

クライアントからのリクエストがPOSTの場合の，データのバイト数

20

CONTENT_TYPE

クライアントからのリクエストがPOSTの場合のコンテンツタイプ

application/x-www-form-urlencoded

DOCUMENT_ROOT

DocumentRootディレクティブ指定値

<Application Serverのインストールディレクトリ>/httpsd/htdocs

GATEWAY_INTERFACE

CGIバージョン

CGI/1.1

HTTP_ACCEPT

クライアントが示したAcceptヘッダの値

image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */*

HTTP_ACCEPT_CHARSET

クライアントが示したAccept-Charsetヘッダの値

Shift_JIS,*,utf-8

HTTP_ACCEPT_ENCODING

クライアントが示したAccept-Encodingヘッダの値

gzip

HTTP_ACCEPT_LANGUAGE

クライアントが示したAccept-Languageヘッダの値

ja,fr, en,it

HTTP_CONNECTION

クライアントが示したConnectionヘッダの値

Keep-Alive

HTTP_HOST

クライアントが示したHostヘッダの値

www.hws.hitachi.co.jp:8080

HTTP_PRAGMA

クライアントが示したPragmaヘッダの値

no-cache

HTTP_REFERER

クライアントが示したRefererヘッダの値

http://www.hws.hitachi.co.jp:8080/test.html

HTTP_USER_AGENT

クライアントが示したUser-Agentヘッダの値

Mozilla/4.73 [ja] (WinNT; U)

PATH

Webサーバ上のPATH情報

C:¥WINNT¥system32;C:¥WINNT;C:¥WINNT¥System32¥Wbem

PATH_INFO

URLのうちCGIスクリプトより後ろの部分

/dir1/file1

PATH_TRANSLATED

ファイルシステムに変換されたPATH_INFOの値

<Application Serverのインストールディレクトリ>¥httpsd¥htdocs¥dir1¥file1

QUERY_STRING

クライアントから送信されたQuery String（問い合わせ文字列）

query1=a&query2=b

REMOTE_ADDR

クライアントのアドレス

172.17.xx.xx

REMOTE_HOST

クライアントのホスト名（HostnameLookupsがOff以外でホスト名が解決された場合）

hostxxx

REMOTE_IDENT

クライアントのID（IdentityCheckディレクティブ参照）

unknown

REMOTE_PORT

クライアントのポート番号

2298

REMOTE_USER

認証されたリクエストの場合の認証ユーザ名

Userxxx

REQUEST_METHOD

クライアントから送信されたHTTPメソッド

GET

REQUEST_URI

クライアントから送信されたリクエストURI

/cgi-bin/test-cgi?query1=a&query2=b

SCRIPT_FILENAME

リクエストされたCGIスクリプトのファイル名

<Application Serverのインストールディレクトリ>/httpsd/cgi-bin/test-cgi

SCRIPT_NAME

リクエストされたCGIスクリプトのURI

/cgi-bin/test-cgi

SERVER_ADDR

WebサーバのIPアドレス

172.17.xx.xx

SERVER_ADMIN

ServerAdminディレクティブ指定値

www-admin@server.example.com

SERVER_NAME

Webサーバのホスト名（UseCanonicalNameディレクティブ参照）

www.hws.hitachi.co.jp

SERVER_PORT

Webサーバのポート名（UseCanonicalNameディレクティブ参照）

8080

SERVER_PROTOCOL

クライアントが示したHTTPバージョン

HTTP/1.0

SERVER_SIGNATURE

Webサーバの署名（HTMLタグを含む）（ServerSignatureディレクティブ参照）

<ADDRESS>Cosminexus HTTP Server 09-00 at www.example.com Port 8080</ADDRESS>

SERVER_SOFTWARE

Webサーバのプログラム名

Cosminexus HTTP Server 09-00

SYSTEMROOT

システムディレクトリ

C:¥WINNT

TZ

Webサーバのタイムゾーン

JST-9

WINDIR

システムディレクトリ

C:¥WINNT

表B‒2　SSL通信時の環境変数一覧

環境変数名

内容

例

HTTPS

セキュア通信を示します。

on

HTTPS_CIPHER_ALGKEYSIZE※

対称鍵暗号の鍵のビット数

128

HTTPS_CIPHER_USEKEYSIZE※

対称鍵暗号の鍵のビット数のうち，有効なビット数

128

SSL_CIPHER※

SSL暗号種別（HTTPS_CIPHERと同じ）

AES128-SHA256

SSL_PROTOCOL※

SSLプロトコルバージョン

TLSv1.2

SSL_SERVER_S_DN※

SSLサーバ証明書のsubjectのDistinguish Name

/C=JP/ST=Kanagawa/L=Yokohama-shi/O=HITACHI/OU=WebSite/CN=www.hws.hitachi.co.jp/EMAIL=www-admin@hws.hitachi.co.jp

SSL_SERVER_要素

SSLサーバ証明書のsubjectのDistinguish Nameの各要素

SSL_SERVER_S_DNが上記の例の場合を表B-3に示します。

SSL_SERVER_I_DN※

SSLサーバ証明書のissuerのDistinguish Name

/C=JP/ST=Kanagawa/L=Yokohama-shi/O=LOCAL-CA/OU=ca1/CN=ca1.hitachi.co.jp/EMAIL=ca-admin@ca1.hitachi.co.jp

SSL_SERVER_I_要素

SSLサーバ証明書のissuerのDistinguish Nameの各要素

SSL_SERVER__I_DNが上記の例の場合を表B-4に示します。

SSL_SESSION_ID※

SSLセションID（16進数）

F968F8D7075B76587F35931DC594D3E3

SSL_SSLEAY_VERSION

OpenSSLのバージョン

OpenSSL 1.0.2j 26 Sep 2016

注※

コンフィグファイルにSSLOptions +StdEnvVarsを指定した場合に環境変数が設定されます。

表B‒3　SSL_SERVER_要素の例

環境変数名

内容

例

SSL_SERVER_CERT※2

SSLサーバ証明書

"-----BEGIN CERTIFICATE-----¥n

MIIDrTCCAxagAwIBAgIBAjANBgk...¥n

-----END CERTIFICATE-----¥n"

SSL_SERVER_S_DN_C※1

SSLサーバ証明書のsubject（Webサーバ）のCountry Name

JP

SSL_SERVER_S_DN_CN※1

SSLサーバ証明書のsubjectのCommon Name

www.hws.hitachi.co.jp

SSL_SERVER_S_DN_Email※1

SSLサーバ証明書のsubjectのE-Mailアドレス

www-admin@hws.hitachi.co.jp

SSL_SERVER_S_DN_L※1

SSLサーバ証明書のsubjectのLocality Name

Yokohama-shi

SSL_SERVER_S_DN_O※1

SSLサーバ証明書のsubjectのOrganization Name

HITACHI,Ltd.

SSL_SERVER_S_DN_OU※1

SSLサーバ証明書のsubjectのOrganization Unit Name

WebSite

SSL_SERVER_S_DN_ST※1

SSLサーバ証明書のsubjectのState Name

Kanagawa

注※1

コンフィグファイルにSSLOptions +StdEnvVarsを指定した場合に環境変数が設定されます。

注※2

コンフィグファイルにSSLOptions +ExportCertDataを指定した場合に環境変数が設定されます。

表B‒4　SSL_SERVER_I_要素の例

環境変数名

内容

例

SSL_SERVER_I_DN_C※

SSLサーバ証明書のissuer（発行者）のCountry Name

JP

SSL_SERVER_I_DN_CN※

SSLサーバ証明書のissuerのCommon Name

ca1.hitachi.co.jp

SSL_SERVER_I_DN_Email※

SSLサーバ証明書のissuerのE-Mailアドレス

ca-admin@ca1.hitachi.co.jp

SSL_SERVER_I_DN_L※

SSLサーバ証明書のissuerのLocality Name

Yokohama-shi

SSL_SERVER_I_DN_O※

SSLサーバ証明書のissuerのOrganization Name

LOCAL-CA

SSL_SERVER_I_DN_OU※

SSLサーバ証明書のissuerのOrganization Unit Name

ca1

SSL_SERVER_I_DN_ST※

SSLサーバ証明書のissuerのState Name

Kanagawa

注※

コンフィグファイルにSSLOptions +StdEnvVarsを指定した場合に環境変数が設定されます。

表B‒5　SSLクライアント認証時の環境変数一覧

環境変数名

内容

例

SSL_CLIENT_CERT※2

SSLサーバ証明書

"-----BEGIN CERTIFICATE-----¥n

MIIDrTCCAxagAwIBAgIBAjANBgk...¥n

-----END CERTIFICATE-----¥n"

SSL_CLIENT_CERT_CHAIN_n※2

SSLサーバ証明書

"-----BEGIN CERTIFICATE-----¥n

MIIDrTCCAxagAwIBAgIBAjANBgk...¥n

-----END CERTIFICATE-----¥n"

SSL_CLIENT_S_DN※1

SSLクライアント証明書のsubjectのDistinguish Name

/C=JP/ST=Kanagawa/L=Yokohama/O=Hitachi/OU=soft/CN=c_name/EMAIL=c_name@soft.hitachi.co.jp

SSL_CLIENT_要素

SSLクライアント証明書のsubjectのDistinguish Nameの各要素

SSL_CLIENT_S_DNが上記の例の場合を表B-6に示します。

SSL_CLIENT_I_DN※1

SSLクライアント証明書のissuerのDistinguish Name

/C=JP/ST=Kanagawa/L=Yokohama-shi/O=LOCAL-CA/OU=ca1/CN=ca1.hitachi.co.jp/EMAIL=ca-admin@ca1.hitachi.co.jp

SSL_CLIENT_I_要素

SSLクライアント証明書のissuerのDistinguish Nameの各要素

SSL_CLIENT_I_DNが上記の例の場合を表B-7に示します。

注※1

コンフィグファイルにSSLOptions +StdEnvVarsを指定した場合に環境変数が設定されます。

注※2

コンフィグファイルにSSLOptions +ExportCertDataを指定した場合に環境変数が設定されます。

表B‒6　SSL_CLIENT_要素の例

環境変数名

内容

例

SSL_CLIENT_S_DN_C※

SSLクライアント証明書のsubjectのCountry Name

JP

SSL_CLIENT_S_DN_CN※

SSLクライアント証明書のsubjectのCommon Name

c_name

SSL_CLIENT_S_DN_Email※

SSLクライアント証明書のsubjectのE-Mailアドレス

c_name@soft.hitachi.co.jp

SSL_CLIENT_S_DN_L※

SSLクライアント証明書のsubjectのLocality Name

Yokohama

SSL_CLIENT_S_DN_O※

SSLクライアント証明書のsubjectのOrganization Name

Hitachi

SSL_CLIENT_S_DN_OU※

SSLクライアント証明書のsubjectのOrganization Unit Name

soft

SSL_CLIENT_S_DN_ST※

SSLクライアント証明書のsubjectのState Name

Kanagawa

注※

コンフィグファイルにSSLOptions +StdEnvVarsを指定した場合に環境変数が設定されます。

表B‒7　SSL_CLIENT_I_要素の例

環境変数名

内容

例

SSL_CLIENT_I_DN_C※

SSLクライアント証明書のissuerのCountry Name

JP

SSL_CLIENT_I_DN_CN※

SSLクライアント証明書のissuerのCommon Name

ca1.hitachi.co.jp

SSL_CLIENT_I_DN_Email※

SSLクライアント証明書のissuerのE-Mailアドレス

ca-admin@ca1.hitachi.co.jp

SSL_CLIENT_I_DN_L※

SSLクライアント証明書のissuerのLocality Name

Yokohama-shi

SSL_CLIENT_I_DN_O※

SSLクライアント証明書のissuerのOrganization Name

LOCAL-CA

SSL_CLIENT_I_DN_OU※

SSLクライアント証明書のissuerのOrganization Unit Name

ca1

SSL_CLIENT_I_DN_ST※

SSLクライアント証明書のissuerのState Name

Kanagawa

注※

コンフィグファイルにSSLOptions +StdEnvVarsを指定した場合に環境変数が設定されます。

表B‒8　HTTP/2通信時の環境変数一覧

環境変数名

内容

例

HTTP2

HTTP/2通信

on

H2_STREAM_ID

HTTP/2ストリーム番号

13

H2_STREAM_TAG

サーバスレッド固有なID-ストリームID

44-13

付録C　旧バージョンからの移行に関する注意点

HTTP Serverを旧バージョンから移行する場合に注意が必要な項目と，設定変更の要否を次の表に示します。

表C‒1　旧バージョンからの移行時に注意が必要な項目

項番

項目

移行前のアプリケーションサーバのバージョン

V8

V9

V11

1

プログラムプロダクトの名称変更

○

−

−

2

プログラムメニューの提供終了（Windows版だけ）

○

−

−

3

SSLv2プロトコルの非サポート

○

−

−

4

SSLv3プロトコルの非サポート

○

○

−

5

CA証明書の検証の厳密化

○

○

−

6

リクエストログのログ出力フォーマットの変更

○

○

−

7

ディレクティブの変更

○

○

○

8

メッセージIDの付加

○

○

−

9

SSL関連コマンドの変更

○

○

−

10

サポートする暗号種別の変更

○

○

−

11

静的コンテンツキャッシュ機能の非サポート

○

○

−

12

SSLセション管理機能の非サポート

○

○

−

13

ディレクトリサービスを利用したユーザ認証とアクセス制御機能の非サポート

○

○

−

14

ステータスコードの変更

○

○

−

15

NameVirtualHostディレクティブの非サポート

○

○

−

16

アクセスログのログ出力フォーマットの変更

○

○

−

17

WebSocketを使用する場合の設定変更

○

○

○

18

アクセスログに出力するリクエストヘッダの変更

○

○

○

19

リダイレクタ機能を使用する場合の設定変更

○

○

○

20

HTTP Server起動コマンドでの環境変数の設定

○

○

○

21

持続型接続（KeepAlive）の有効範囲の変更

○

○

−

22

リバースプロキシ機能

○

○

−

（凡例）

V8，V9，V11：それぞれ，アプリケーションサーバのVersion 8，Version 9，Version 11（このバージョンを除く）を示します。

設定変更が必要な項目を次に示します。

○：移行時に変更が必要な項目です。

−：移行時に変更が不要な項目です。

項目ごとの注意点を次に示します。設定変更が必要な場合は，インストールから起動までに実施してください。

プログラムプロダクトの名称変更

プログラムプロダクト名を「Hitachi Web Server」から「Cosminexus HTTP Server」に変更しました。これに伴い，ログやHTTP通信などに使用している名称が「Hitachi Web Server」から「Cosminexus HTTP Server」に変更されます。

Windows版では，標準で作成するサービス名も変更されます。ただし，旧バージョンをインストールした環境に「Hitachi Web Server」というサービス名が存在している場合は，上書きインストールを実施してもサービス名は変更されません。

プログラムメニューの提供終了（Windows版だけ）

スタートメニューにはこのプログラムプロダクトのメニューは作成されません。

SSLv2プロトコルの非サポート

SSLProtocolディレクティブにSSLv2が指定できなくなります。SSLv2だけをサポートしているクライアントからリクエストした場合，SSLハンドシェイクでエラーとなり，接続できません。

SSLv3プロトコルの非サポート

SSLProtocolディレクティブにSSLv3が指定できなくなります。SSLv3だけをサポートしているクライアントからリクエストした場合，SSLハンドシェイクでエラーとなり，接続できません。

CA証明書の検証の厳密化

クライアント認証時に行われるCA証明書の検証が，規約に従って厳密化されました。CA証明書が規約に従っていない場合，セキュリティ上問題となることがあるため，クライアント認証でエラーとなるおそれがあります。次に示す方法で確認し，規約に従ったCA証明書を使用してください。

簡易確認方法

1.次の証明書の内容表示コマンドを実行してください。

openssl.sh x509 -text -in CA証明書ファイル

2.コマンド実行で表示されるテキストに「CA:TRUE」が含まれていない場合は，クライアント認証でエラーとなるおそれがあります。

・出力例（抜粋）

X509v3 extensions:

X509v3 Basic Constraints:

CA:TRUE

09-00-60以降，09-65-60以降，09-80-01以降，09-87の確認方法

1.次の証明書の検証コマンドを実行してください。

openssl.sh verify -CAfile CA証明書ファイル クライアント証明書ファイル

オペランド

・-CAfile CA証明書ファイル

CA証明書ファイルを指定してください。ルートCA証明書から中間CA証明書を発行し，証明書チェーンを構成している場合には，各CA証明書を一つのファイルにまとめて指定してください。

・クライアント証明書ファイル

CAから認証された証明書ファイルを指定してください。

2.コマンド実行で「OK」が表示されない場合は，クライアント認証でエラーとなるおそれがあります。

・出力例（［クライアント証明書］に「cert.pem」を指定した場合）

cert.pem: OK

リクエストログのログ出力フォーマットの変更

リクエストログに出力されるサーバプロセスIDの出力場所を時刻の後ろに変更します。詳細は「4.2.6　モジュールトレースの採取」，「4.2.7　リクエストトレースの採取」および「4.2.8　I/Oフィルタトレースの採取」を参照してください。

ディレクティブの変更

幾つかのディレクティブが09-80以降で追加されています。

HWSPrfId

HWSWebSocketLog

MaxSpareThreads

MinSpareThreads

SendBufferSize

ServerLimit

ThreadLimit

幾つかのディレクティブが11-00以降で追加されています。

SSLCARevocationCheck

SSLCARevocationFile

SSLCipherSuite

SSLEngine

SSLOptions

幾つかのディレクティブを削除しています。次に示すディレクティブは11-00以降では指定できません。

DefaultType

HWSContentCacheSize

HWSContentCacheMaxFileSize

HWSStackTrace

LDAPBaseDN

LDAPNoEntryStatus

LDAPRequire

LDAPServerName

LDAPServerPort

LDAPSetEnv

LDAPTimeout

LDAPUnsetEnv

NameVirtualHost

SSLCacheServerPath

SSLCacheServerPort

SSLCacheServerRunDir

SSLCertificateKeyPassword

SSLCRLAuthoritative

SSLCRLDERPath

SSLCRLPEMPath

SSLDenySSL

SSLDisable

SSLECCCertificateFile

SSLECCCertificateKeyFile

SSLECCCertificateKeyPassword

SSLEnable

SSLExportCertChainDepth

SSLExportClientCertificates

SSLFakeBasicAuth

SSLRequireCipher

SSLRequiredCiphers

SSLSessionCacheSize

SSLSessionCacheSizePerChild

SSLSessionCacheTimeout

また，次に示すディレクティブはデフォルト値が変更となっています。09-80以降でデフォルト値を変更しています。必要に応じて設定を見直してください。

AllowOverride（デフォルト値：None）

FileETag（デフォルト値：MTime Size）

HWSRequestLogType（デフォルト値： module-info request proxy）

KeepAliveTimeout（デフォルト値：5）

Options（デフォルト値：None）

SSLVerifyClient（デフォルト値：none）

SSLVerifyDepth（デフォルト値：1）

ThreadsPerChild（デフォルト値：64）

Timeout（デフォルト値：60）

UseCanonicalName（デフォルト値：Off）

UserDir（デフォルト値：デフォルト値なし）

RequestReadTimeout（デフォルト値：header=20 body=20※）

注※　LoadModule ディレクティブでmod_reqtimeout.so を指定した場合。指定していない場合は，デフォルト値なし。

次に示すディレクティブは，仕様を変更しています。「6.　ディレクティブ」を参照し，必要に応じて設定を見直してください。

AllowOverride

CoreDumpDirectory

CustomLog

HWSKeepStartServers

HWSProxyPassReverseCookie

HWSRequestLogType

KeepAlive

KeepAliveTimeout

LoadModule

MaxClients

MaxSpareServers

MinSpareServers

ProxyErrorOverride

ProxyPass

SSLBanCipher

SSLCACertificateFile

SSLCACertificatePath

SSLCertificateFile

SSLCertificateKeyFile

SSLProtocol

SSLRequireSSL

SSLVerifyClient

SSLVerifyDepth

StartServers

ThreadsPerChild

メッセージIDの付加

各メッセージにユニークなIDが付加されます。詳細については，マニュアル「アプリケーションサーバ メッセージ(構築／運用／開発用)」を参照してください。

SSL関連コマンドの変更

sslccertコマンド，sslckeyコマンド，keygenコマンド，およびcertutilコマンドがopenssl.batコマンドまたはopenssl.shコマンドに変更となります。sslccertコマンド，sslckeyコマンド，sslpasswdコマンド，sslpasswd.batコマンド，sslpasswd.shコマンド，keygenコマンドおよびcertutilコマンドは上書きインストール時に削除されます。openssl.batコマンドまたはopenssl.shコマンドの詳細については「5.　SSLによる認証，暗号化」を参照してください。

サポートする暗号種別の変更

サポートする暗号種別を変更します。詳細は「6.2.7　Sで始まるディレクティブ」の「(29)　SSLCipherSuite　〔TLSv1.3〕　暗号種別〔:暗号種別…〕」を参照し，必要に応じて設定を見直してください。

静的コンテンツキャッシュ機能の非サポート

静的コンテンツキャッシュ機能が非サポートとなります。

SSLセション管理機能の非サポート

WebサーバのSSLセション管理機能が非サポートとなります。

ディレクトリサービスを利用したユーザ認証とアクセス制御機能の非サポート

ディレクトリサービスを利用したユーザ認証機能とアクセス制御機能が非サポートとなります。

ステータスコードの変更

この製品のWebサーバがベースとしているApache HTTP Serverのバージョンを2.4に変更したため，ステータスコードが変更となりますので，「付録A　ステータスコード」を参照してください。

リバースプロキシ機能使用時にバックエンドサーバと通信できない場合に502エラー以外に503エラーが返ることがあります。

リクエストラインが受信されずにタイムアウトになった場合にステータスコード408としてアクセスログに出力されます。

NameVirtualHostディレクティブの非サポート

NameVirtualHostディレクティブの非サポートにより，複数のVirtualHostブロックに重複したIPアドレスを指定している場合にはサーバ名に基づくバーチャルホストとして動作します。旧バージョンのIPアドレスに基づくバーチャルホストの動作にならない可能性があります。必要に応じて設定を見直してください。

アクセスログのログ出力フォーマットの変更

標準提供のhttpsd.confに含まれる一部のログ出力フォーマットの定義を変更しました。変更したログ出力フォーマットは，次のラベル名です。

hws_trace

hws_std

hws_stdは標準提供のhttpsd.confでアクセスログのフォーマットとして使用されています。

標準提供のhttpsd.confで指定されているログ出力フォーマットを次に示します。

Windowsの場合

LogFormat "%h %l %u %t ¥"%r¥" %>s %b ¥"%{Referer}i¥" ¥"%{User-Agent}i¥" %I %O" combinedio

LogFormat "%h %l %u %t ¥"%r¥" %>s %b ¥"%{Referer}i¥" ¥"%{User-Agent}i¥"" combined

LogFormat "%h %l %u %t ¥"%r¥" %>s %b" common

LogFormat "%{Referer}i -> %U" referer

LogFormat "%{User-agent}i" agent

LogFormat "%h %l %u %t ¥"%r¥" %>s %b %{hws_thread_id}P ¥"%{hws_ap_root}n¥" %I %O %X %D ¥"%{Referer}i¥" ¥"%{User-Agent}i¥"" hws_trace

LogFormat "%h %l %u %t ¥"%r¥" %>s %b %T %{hws_thread_id}P ¥"%{hws_ap_root}n¥"" hws_std

UNIX(worker MPM)の場合

LogFormat "%h %l %u %t ¥"%r¥" %>s %b ¥"%{Referer}i¥" ¥"%{User-Agent}i¥" %I %O" combinedio

LogFormat "%h %l %u %t ¥"%r¥" %>s %b ¥"%{Referer}i¥" ¥"%{User-Agent}i¥"" combined

LogFormat "%h %l %u %t ¥"%r¥" %>s %b" common

LogFormat "%{Referer}i -> %U" referer

LogFormat "%{User-agent}i" agent

LogFormat "%h %l %u %t ¥"%r¥" %>s %b %P %{tid}P ¥"%{hws_ap_root}n¥" %I %O %X %D ¥"%{Referer}i¥" ¥"%{User-Agent}i¥"" hws_trace

LogFormat "%h %l %u %t ¥"%r¥" %>s %b %T %P %{tid}P ¥"%{hws_ap_root}n¥"" hws_std

UNIX(prefork MPM)の場合

LogFormat "%h %l %u %t ¥"%r¥" %>s %b ¥"%{Referer}i¥" ¥"%{User-Agent}i¥" %I %O" combinedio

LogFormat "%h %l %u %t ¥"%r¥" %>s %b ¥"%{Referer}i¥" ¥"%{User-Agent}i¥"" combined

LogFormat "%h %l %u %t ¥"%r¥" %>s %b" common

LogFormat "%{Referer}i -> %U" referer

LogFormat "%{User-agent}i" agent

LogFormat "%h %l %u %t ¥"%r¥" %>s %b %P ¥"%{hws_ap_root}n¥" %I %O %X %D ¥"%{Referer}i¥" ¥"%{User-Agent}i¥"" hws_trace

LogFormat "%h %l %u %t ¥"%r¥" %>s %b %T %P ¥"%{hws_ap_root}n¥"" hws_std

WebSocketを使用する場合の設定変更

11-20以降から，WebSocket通信をする場合に必要なモジュールが変更になりました。WebSocket通信を使用するためには，mod_proxyモジュール，mod_proxy_httpモジュール，およびmod_proxy_wstunnelモジュールが必要です。「4.15　WebSocketによる通信」を参照して，必要なモジュールを設定してください。

アクセスログに出力するリクエストヘッダの変更

CustomLogディレクティブで指定するログのフォーマットで%{header_name}iを指定した場合，リクエストヘッダの値をログに出力することができますが，11-20以降はクライアントから受け付けたリクエストヘッダだけを出力します。リバースプロキシで付加するリクエストヘッダはログに出力されませんのでご注意ください。ログに出力されないリクエストヘッダの例を次に示します。

X-Forwarded-For

X-Forwarded-Host

X-Forwarded-Server

リダイレクタ機能を使用する場合の設定変更

11-20以降から，リダイレクタ機能を使用する場合に環境変数の設定が必要となりました。詳細については，マニュアル「アプリケーションサーバ 機能解説 保守／移行編」の「10.3.3　アプリケーションサーバ 11-00または11-10から，11-20までの仕様変更」の「(4)　リダイレクタ機能」を参照してください。

HTTP Server起動コマンドでの環境変数の設定

HTTP Serverの起動コマンドを実行する際，事前にPRFSPOOL環境変数の設定が必要です。詳細は「2.4.2　HTTP Serverを起動，停止する（httpsdctlコマンド）」および「2.4.3　HTTP Serverを起動する（httpsdコマンド）」を参照してください。

持続型接続（KeepAlive）の有効範囲の変更

持続型接続のKeepAliveディレクティブおよびKeepAliveTimeoutディレクティブは，リバースプロキシ機能使用時での，バックエンドサーバとの接続には影響を与えません。

リバースプロキシ機能

リバースプロキシ機能は，バックエンドサーバとの接続を再利用しようとするコネクションプール方式に変更しました。このことから，リバースプロキシ機能はバックエンドサーバに接続した各コネクションを解放せずに接続状態を維持します。

付録D　旧バージョンから移行する場合の設定

SSL機能を使用する場合，HTTP Serverの旧バージョンからV11以降に移行するに当たり，次の変更を実施します。

項番

項目

旧バージョン

V11以降

説明

1

SSLEnable/SSLDisableの指定がない場合のデフォルト

SSL機能有効

SSL機能無効

SSL機能を有効にしたい場合は，SSLEngine Onを指定してください。

ただし，<VirtualHost>ブロック内でSSLを有効にしたい場合，有効にしたい<VirtualHost>ブロック内でSSLEngine Onを指定してください。

2

SSL機能を無効にする指定

SSLDisable

SSLEngine Off

SSLEngine Offに置き換えてください。

なお，11-00以降ではSSLDisableディレクティブの指定のままでもSSLEngine Offが指定されたものとして動作します。また，Webサーバ全体でSSL機能を無効にする場合には，その他SSLから始まるディレクティブの指定を削除もしくはコメント化してください。

3

SSL機能を有効にする指定

SSLEnable

SSLEngine On

SSLEngine Onに置き換えてください。

ただし，<VirtualHost>ブロック内でSSLを有効にしたい場合，有効にしたい<VirtualHost>ブロック内でSSLEngine Onを指定してください。

なお，SSL通信だけを有効にしたWebサーバをManagement Serverを使用して起動する場合は，Webサーバの動作確認レベルを「1：プロセスの存在を確認するだけ」に変更してください。※1

4

使用する暗号種別の指定

SSLRequiredCiphers

SSLCipherSuite

SSLCipherSuiteに置き換えてください。

5

使用するプロトコルの指定

SSLProtocol TLSv1 TLSv11 TLSv12

SSLProtocol +TLSv1 +TLSv1.1 +TLSv1.2

プロトコルの記述方法が異なります。使用するプロトコルを追加する場合はプロトコルの前に’+’を付加して指定します。連続したプロトコルバージョンを指定していない場合，古いプロトコルバージョンは無効になります。

6

SSLRequireSSLの指定可能場所

httpsd.conf，<VirtualHost>，<Directory>，.htaccess

<Directory>，

.htaccess

httpsd.conf，<VirtualHost>で指定している場合は，<Directory>，.htaccessで指定するように変更してください。

7

SSL機能のリクエストを禁止する設定

SSLDenySSL

なし

SSLDenySSLの指定を削除してください。

SSL機能全体を無効にする指定などを検討してください。

8

サーバ認証で使用するCA証明書の指定

SSLCACertificateFile

SSLCertificateFile

サーバ証明書とCA証明書を連結したファイルを指定

SSLCACertificateFileで指定されたファイル内の証明書のうち，サーバ認証で使用する証明書をSSLCertificateFileで指定するファイルに追加してください。追加する順序はWebサーバの証明書に続き，中間CAの証明書，ルート証明書を追加してください。

なお，旧バージョンでは，サーバ認証に使用するCA証明書をSSLCACertificateFileディレクティブに指定している場合は，SSLCACertificateFileディレクティブに指定したCA証明書をサーバ認証に使用していました。

9

暗号化秘密鍵のパスワード格納ファイルの指定

SSLCertificateKeyPassword，SSLECCCertificateKeyPassword

なし

SSLCertificateKeyPassword，

SSLECCCertificateKeyPasswordの指定を削除してください。※2

10

DER形式のCRLを指定

SSLCRLDERPathでDER形式のファイルを格納したディレクトリを指定

DER形式は使用できない

DER形式をPEM形式に変換したファイルをSSLCARevocationFileで指定してください。※3

複数のファイルがある場合には連結してファイルを作成してください。

11

PEM形式のCRLを指定

SSLCRLPEMPathでPEM形式のファイルを格納したディレクトリを指定

SSLCARevocationFileでCRLのファイルを指定

複数のCRLファイルがある場合には連結したファイルをSSLCARevocationFileで指定してください。

12

クライアント証明書を用いたBasic認証の指定

SSLFakeBasicAuth

SSLOptions +FakeBasicAuth

SSLOptionsディレクティブに+FakeBasicAuthを指定してください。

13

クライアント証明書の環境変数への設定

SSLExportClientCertificates

SSLOptions +ExportCertData

SSLOptionsディレクティブに+ExportCertDataを指定してください。PEM形式の証明書を環境変数に設定します。　

ただし，クライアント証明書だけでなく，サーバ証明書も環境変数に設定します。

14

楕円暗号用証明書および秘密鍵指定ディレクティブ

SSLECCCertificateFile

SSLECCCertificateKeyFile

SSLCertificateFile

SSLCertificateKeyFile

SSLCertificateFile，SSLCertificateKeyFileで楕円曲線暗号用の証明書と秘密鍵を指定してください。

RSA暗号と楕円曲線暗号のサーバ証明書および秘密鍵は，それぞれ一つずつだけ指定できます。

15

クライアント認証の設定をするSSLVerifyClientの指定値

0｜1｜2

none｜optional｜require

SSLVerifyClientの指定値を次のとおりに数字から文字列に変更してください。

0：none

1：optional

2：require

16

クライアント認証時の段階数SSLVerifyDepthの指定

末端のクライアント証明書を含んだ階層数（認証局の数＋1）

末端のクライアント証明書を含まない階層数

（認証局だけの数）

証明書のチェインをたどる段階数を見直してください。

17

CGIで暗号化通信に関する環境変数を使用している場合

−

−

環境変数名が変更になっています。

18

暗号種別でのアクセス制御

SSLBanCipher

SSLRequireCipher

SSLBanCipher

SSLRequireCipherで許可する暗号種別を指定していた場合，SSLBanCipherで拒否する暗号種別を指定してください。

また，httpsd.conf，<VirtualHost>で指定している場合は，<Directory>，.htaccessで指定するように変更してください。

19

ログフォーマット%{version}cで出力されるプロトコルバージョン

−

−

出力されるプロトコルバージョンの表記が変更になっています。

変更前

TLS1 TLS11 TLS12

変更後

TLSv1 TLSv1.1 TLSv1.2 TLSv1.3

20

ログフォーマット%{clientcert}cで出力されるクライアント証明書のsubjectのDistinguished Name

−

−

出力される情報の区切り文字が「/」から「,」に変更になっています。

変更前

/C=JP/ST=Kanagawa/L=Yokohama-shi/O=client/OU=client/CN=client

変更後

CN=client,OU=client,O=client,L=Yokohama-shi,ST=Kanagawa,C=JP

注※1

Management ServerではWebサーバが正常に動作しているかどうかを，運用管理エージェントを介して，プロセスの存在を確認したり，WebサーバにHTTPでアクセスしたりすることで判断しています。

WebサーバでSSL通信だけを有効にしている場合は，Webサーバの動作確認レベルはプロセスの存在を確認するだけに変更（adminagent.hws.watch.level=1を設定）してください。

詳細は，マニュアル「アプリケーションサーバ システム構築・運用ガイド」の「4.1.16　運用管理エージェントを使用するために設定する情報」を参照してください。

注※2

パスワード保護された秘密鍵からパスワード保護を無効にした秘密鍵に変換したファイルをSSLCertificateKeyFileディレクティブに指定します。次のコマンドで秘密鍵のパスワード解除を行います。

RSA暗号を利用した秘密鍵の場合

openssl.bat rsa -in パスワード保護された秘密鍵ファイル -out パスワードを解除した秘密鍵ファイル

楕円暗号曲線を利用した秘密鍵の場合

openssl.bat pkcs8 -topk8 -in パスワード保護された秘密鍵ファイル -out パスワードを解除した秘密鍵ファイル -nocrypt

UNIXの場合はopenssl.batをopenssl.shに置き換えて実行してください。

注※3

次のコマンドでDER形式のファイルをPEM形式に変換します。

openssl.bat crl -inform DER -in 入力ファイル -outform PEM -out 出力ファイル

UNIXの場合はopenssl.batをopenssl.shに置き換えて実行してください。

付録E　運用管理ポータルによるリバースプロキシを使用したprefork MPMの論理Webサーバの構築方法

UNIX版で運用管理ポータルを使用して論理Webサーバを構築する際，J2EEサーバの連携方法でリバースプロキシを選択した場合はworker MPMの論理Webサーバが構築され，リダイレクタを選択した場合はprefork MPMの論理Webサーバが構築されます。ここではリバースプロキシを使用するprefork MPMの論理Webサーバを構築するための方法について説明します。

次の説明では，運用管理ドメイン内のホストの定義，パフォーマンストレーサの設定ができていると仮定します。

マニュアル「アプリケーションサーバ 運用管理ポータル操作ガイド」の「9.10.1　Webサーバの追加」の「(2)表示手順」に従い，［Webサーバの追加］画面を表示し，「(3)操作手順」でWebサーバを追加する際に［J2EEサーバ連携］フィールドで「リダイレクタ」を選択して［追加］ボタンをクリックします。

マニュアル「アプリケーションサーバ 運用管理ポータル操作ガイド」の「9.11　論理サーバの一括セットアップ」の手順に従い，1.で追加したWebサーバをセットアップします。

マニュアル「アプリケーションサーバ 運用管理ポータル操作ガイド」の「10.9.1　Webサーバの設定」の「(2)表示手順」に従い，［Webサーバの設定］画面を表示します。［設定ファイルの参照］ボタンをクリックして［設定ファイルの内容］に表示された設定を編集します。編集方法は次のとおりです。

連携するJ2EEサーバへのリバースプロキシの設定を追加します。詳細は「4.7　リバースプロキシの設定」を参照してください。リバースプロキシの設定例を示します。

（例）

LoadModule proxy_module libexec/mod_proxy.so
LoadModule proxy_http_module libexec/mod_proxy_http.so
ProxyPass / http://backend.example.com:8008/
ProxyPassReverse / http://backend.example.com:8008/

「Include“＜Application Serverのインストールディレクトリ＞/CC/web/redirector/servers/＜論理Webサーバの実サーバ名＞/mod_jk.conf”」が定義されている場合はその定義を削除してください。

ほかにWebサーバの設定を変更する場合は［設定ファイルの内容］を適宜修正します。編集が完了したら，画面の［設定ファイルの内容を直接設定します］を選択し，［適用］ボタンをクリックします。

マニュアル「アプリケーションサーバ 運用管理ポータル操作ガイド」の「10.9.2　リダイレクタの設定（リダイレクタを使用した場合）」の「(2)表示手順」に従い，［リダイレクタの設定］画面を表示します。［利用するパフォーマンストレーサ］で利用するパフォーマンストレーサを設定し，［適用］ボタンをクリックします。

マニュアル「アプリケーションサーバ 運用管理ポータル操作ガイド」の「10.10　論理サーバの設定ファイルの配布」に従い，これまでに設定した情報をサーバに配布します。

これで，リバースプロキシを使用するprefork MPMの論理Webサーバの構築は完了です。

付録F　用語解説

マニュアルで使用する用語について

マニュアル「アプリケーションサーバ & BPM/ESB基盤 用語解説」を参照してください。

索引

記号

<DirectoryMatch　正規表現>[1]

<Directory　ディレクトリ名>[1]

<FilesMatch　正規表現>[1]

<Files　ファイル名>[1]

<IfModule　〔!〕モジュール名>[1]

<Limit　メソッド名　〔メソッド名　…〕>[1]

<LocationMatch　正規表現>[1]

<Location　URL>[1]

<VirtualHost　｛ホスト名｜IPアドレス〔:ポート番号〕｝　〔｛ホスト名｜IPアドレス〔:ポート番号〕｝　…〕>[1]

A

AccessFileName[1]

Action[1]

AddAlt[1]

AddAltByEncoding[1]

AddAltByType[1]

AddCharset[1]

AddDefaultCharset[1]

AddDescription[1]

AddEncoding[1]

AddHandler[1]

AddHandlerディレクティブの指定[1]

AddIcon[1]

AddIconByEncoding[1]

AddIconByType[1]

AddLanguage[1]

AddType[1]

Alias[1]

AliasMatch[1]

AllowEncodedSlashes[1]

Allow from[1]

AllowOverride[1]

AuthAuthoritative[1]

AuthGroupFile[1]

AuthName[1]

AuthType[1]

AuthUserFile[1]

auto[1]

B

BindAddress[1]

BrowserMatch[1]

BrowserMatchNoCase[1]

C

CacheNegotiatedDocs[1]

CGIプログラムの定義[1]

CGIプログラムの呼び出し[1]

CoreDumpDirectory[1]

CRLファイルの形式[1]

CSRの形式[1]

CustomLog[1]

D

debugレベル[1]

DefaultIcon[1]

DefaultLanguage[1]

Deny from[1]

DirectoryIndex[1]

DocumentRoot[1]

E

ErrorDocument[1]

ErrorLog[1]

ExpiresActive[1]

ExpiresByType[1]

ExpiresDefault[1]

ExtendedStatus[1]

F

FancyIndexing[1]

FileETag[1]

ForceType[1]

G

Group[1]

H

H2Direct[1]

H2MaxWorkerIdleSeconds[1]

H2MaxWorkers[1]

H2MinWorkers[1]

H2Padding[1]

H2SerializeHeaders[1]

H2StreamMaxMemSize[1]

H2Upgrade[1]

H2WindowSize[1]

Header[1]

HeaderName[1]

HostnameLookups[1]

HTTP/2プロトコル通信機能[1]

httpsdctlコマンド[1]

httpsdコマンド[1]

HTTP Serverが標準提供している外部モジュールとモジュールファイル名の対応[1]

HTTP Serverとは[1]

HTTP Serverの概要[1]

hwscollectコマンド[1]

HWSErrorDocumentMETACharset[1]

HWSErrorLogClientAddr[1]

HWSGracefulStopLog[1]

HWSGracefulStopTimeout[1]

HWSH2SendGoaway[1]

HWSImapMenuCharset[1]

HWSKeepStartServers[1]

HWSLogSSLVerbose[1]

HWSLogTimeVerbose[1]

HWSMaxQueueSize[1]

HWSNotModifiedResponseHeaders[1]

HWSPrfId[1]

HWSProxyPassReverseCookie[1]

HWSRequestLog[1]

HWSRequestLogType[1]

hwsservereditコマンド[1]

HWSSetEnvIfIPv6[1]

HWSSuppressModuleTrace[1]

HWSTraceIdFile[1]

hwstraceinfoコマンド[1]

HWSTraceLogFile[1]

HWSWebSocketLog[1]

HWS作成モード[1]

I

I/Oフィルタトレース[1]

I/Oフィルタトレースの採取[1]

IdentityCheck[1]

ImapBase[1]

ImapDefault[1]

ImapMenu[1]

Include[1]

IndexIgnore[1]

IndexOptions[1]

IndexOrderDefault[1]

infoレベル[1]

IP-Based Virtual Hosts[1]

IPv6に対応しているディレクティブ[1]

IPv6による通信[1]

IPv6による通信の準備[1]

IPアドレスに基づくバーチャルホスト[1]

K

KeepAlive[1]

KeepAliveTimeout[1]

L

LanguagePriority[1]

LimitRequestBody[1]

LimitRequestFields[1]

LimitRequestFieldsize[1]

LimitRequestLine[1]

Listen[1]

ListenBacklog[1]

LoadFile[1]

LoadModule[1]

LogFormat[1]

LogLevel[1]

logresolveコマンド[1]

M

MaxClients[1]

MaxKeepAliveRequests[1]

MaxRequestsPerChild[1]

MaxSpareServers[1]

MaxSpareThreads[1]

MinSpareServers[1]

MinSpareThreads[1]

mod_http2モジュールの組み込み[1]

mod_proxy_http2モジュールの組み込み[1]

MultiviewsMatch[1]

N

Name-Based Virtual Hosts[1]

notable[1]

O

openssl.bat pkcs8コマンド[1]

openssl.bat reqコマンド[1]、[2]

openssl.bat x509[1]

openssl.bat x509コマンド[1]

openssl.batコマンドの使用例[1]

openssl.sh pkcs8コマンド[1]

openssl.sh reqコマンド[1]、[2]

openssl.sh x509コマンド[1]、[2]、[3]

openssl.shコマンドの使用例[1]

Options[1]

Order[1]

P

PassEnv[1]

PEM形式[1]

PidFile[1]

Port[1]

Protocols[1]

Proxy100Continue[1]

ProxyErrorOverride[1]

ProxyPass[1]

ProxyPassReverse[1]

ProxyPreserveHost[1]

ProxyVia[1]

Q

QOSCookieDomain[1]

QOSCookieExpires[1]

QOSCookieName[1]

QOSCookieSecure[1]

QOSCookieServers[1]

QOSRedirect[1]

QOSRejectionServers[1]

QOSResponse[1]

R

ReadmeName[1]

Redirect[1]

RedirectMatch[1]

refresh[1]

RequestHeader[1]

RequestReadTimeout[1]

Require[1]

rotatelogs2プログラム[1]

rotatelogsプログラム[1]

RSA暗号の秘密鍵の内容[1]

S

Satisfy[1]

Script[1]

ScriptAlias[1]

ScriptAliasMatch[1]

ScriptAliasディレクティブの指定[1]

ScriptInterpreterSource[1]

ScriptLog[1]

ScriptLogBuffer[1]

ScriptLogLength[1]

SendBufferSize[1]

ServerAdmin[1]

ServerAlias[1]

ServerLimit[1]

ServerName[1]

ServerPath[1]

ServerRoot[1]

ServerSignature[1]

ServerTokens[1]

SetEnv[1]

SetEnvIf[1]

SetEnvIfNoCase[1]

SetHandler[1]

SSLBanCipher[1]

SSLCACertificateFile[1]

SSLCACertificatePath[1]

SSLCARevocationCheck[1]

SSLCARevocationFile[1]

SSLCertificateFile[1]

SSLCertificateKeyFile[1]

SSLCipherSuite[1]

SSLEngine[1]

SSLOptions[1]

SSLProtocol[1]

SSLRequireSSL[1]

SSLVerifyClient[1]

SSLVerifyDepth[1]

SSLクライアント認証の準備[1]

SSL通信のための準備[1]

SSL通信の手順[1]

SSLで認証，暗号化する[1]

SSLによる認証，暗号化[1]

StartServers[1]

T

ThreadLimit[1]、[2]

ThreadsPerChild[1]、[2]

Timeout[1]

TraceEnable[1]

TransferLog[1]

TypesConfig[1]

U

UnsetEnv[1]

UseCanonicalName[1]

User[1]

UserDir[1]

W

WebSocketによる通信[1]

WebSocketログ[1]

Webサーバ上でプログラムを実行する（CGI）[1]

Webサーバの秘密鍵の形式変換[1]

Webサーバの秘密鍵の作成[1]

Windows使用時の注意事項[1]

あ

アクセス権の設定例[1]

アクセスコントロールファイル[1]

アクセス制御[1]

アクセスログ[1]

アプリケーションサーバとの連携[1]

アンインストール〔UNIX〕[1]

アンインストール〔Windows〕[1]

い

一般ユーザアカウントによる運用[1]

イメージマップ[1]

イメージマップの定義例[1]

イメージマップファイルの文法[1]

インストール〔UNIX〕[1]

インストール〔Windows〕[1]

う

運用環境を定義する[1]、[2]

運用管理ポータルによるリバースプロキシを使用したprefork MPMの論理Webサーバの構築方法[1]

運用するためのシステム構成[1]

運用の準備〔UNIX版〕[1]

運用の準備〔Windows版〕[1]

え

エラーログ[1]

か

概要〔HTTP Server〕[1]

稼働状況の表示[1]

環境の定義方法[1]、[2]

環境変数の定義[1]

関数オフセット[1]

き

起動，停止（httpsdctlコマンド）〔UNIX版〕[1]

起動，停止（Management Serverの使用）〔UNIX版〕[1]

起動，停止〔Windows版〕[1]

起動〔UNIX版〕[1]

起動〔Windows版〕[1]

旧バージョンから移行する場合の設定[1]

旧バージョンからの移行に関する注意点[1]

共有メモリの解放[1]

く

クライアントのホスト名またはIPアドレスによるアクセス制御[1]

こ

コンフィグファイル[1]、[2]

さ

サーバマシンのバーチャル化（バーチャルホスト）[1]

サーバ名に基づくバーチャルホスト[1]

し

システム構成[1]

システムの運用方法[1]

持続型接続[1]

証明書取得手順[1]

証明書の形式変換[1]

証明書の内容表示[1]

証明書の有効性の検証[1]

証明書発行要求（CSR）の作成[1]、[2]

証明書発行要求（CSR）の内容表示[1]

処理とディレクティブとの関係[1]

す

ステータスコード[1]

ステータス情報表示[1]

せ

正規表現[1]

て

停止〔UNIX版〕[1]

停止〔Windows版〕[1]

ディレクティブ[1]

ディレクティブ一覧[1]

ディレクティブの記述規則[1]

ディレクティブの詳細[1]

ディレクティブの説明形式[1]

ディレクトリに対するアクセス制御[1]

と

特長[1]、[2]

トレース情報の採取[1]

トレース対象[1]

トレースフォーマット[1]

な

内部トレースの採取[1]

は

バーチャルホスト[1]

ハードウェア構成[1]

ハッシュリンクの作成（UNIX版）[1]

ひ

秘密鍵の作成[1]

ふ

ファイルへの出力方法[1]

ファイル名一覧の表示[1]

複数のWebサーバ環境の生成[1]

プロキシトレースの採取[1]

プロセスIDのログ[1]

プロセス構造（UNIX版かつprefork MPMモジュールの場合）[1]

プロセス構造（UNIX版かつworker MPMモジュールの場合）[1]

プロセス構造（Windows版）[1]

プロセス数の遷移[1]

プロセス数・スレッド数の遷移[1]

へ

ヘッダカスタマイズ機能[1]

ほ

保守情報収集機能[1]

も

モジュールトレース[1]

モジュールトレースの採取[1]

モジュールトレースの出力先と出力条件[1]

ゆ

有効期限設定機能[1]

ユーザ作成モード[1]

ユーザ認証[1]

ユーザ名およびパスワードによるアクセス制御[1]

り

リクエストトレース[1]

リクエストトレースの採取[1]

リクエストログ[1]

リダイレクト[1]、[2]

リバースプロキシの設定[1]

流量制限機能[1]

ろ

ログの採取方法[1]

ログの種類[1]

ログを採取する[1]

ログを分割する[1]

わ

ワーカスレッド[1]