2. basic functionspublic.dhe.ibm.com/.../ihsv7guide_02basicfunctions.pdf10 機能概要(1/2)...
TRANSCRIPT
Guide of IBM HTTP Server V7.0
2. Basic Functions
2
ご注意
この資料に含まれる情報は可能な限り正確を期しておりますが、日本アイ・ビー・エム株式会社ならびに日本アイ・ビー・エム システムズ・エンジニアリング株式会社の正式なレビューを受けておらず、当資料に記載された内容に関して日本アイ・ビー・エム株式会社ならびに日本アイ・ビー・エム システムズ・エンジニアリング株式会社は何ら保証するものではありません。
従って、この情報の利用またはこれらの技法の実施はひとえに使用者の責任において為されるものであり、資料の内容によって受けたいかなる被害に関しても一切の補償をするものではありません。
当資料をコピー等で複製することは、日本アイ・ビー・エム株式会社、日本アイ・ビー・エム システムズ・エンジニアリング株式会社および執筆者の承諾なしではできません。また、当資料に記載された製品名または会社名はそれぞれの各社の商標または登録商標です。
3
Agenda
1. 複数URLへの対応
2.性能情報の表示
3.URLの書き換えとアクセス制御
4.ログのカスタマイズ
5.IHS管理サーバー
6. WAS管理下に統合
参考文献
4
1. 複数URLへの対応
5
機能概要
VirtualHostとは1台のサーバーで複数のURL(ドメイン)に対応する機能
IP-Base VirtualHost ・・・ 複数のIPアドレスでサービス
Name-Base VirtualHost ・・・ 複数のホスト名でサービス
(Port-Base VirtualHostとも呼ばれる)
IHSにおいてVirtualHostの設定が必要なケース
上記ケースでは、IHSでVirtualHostを設定する
クライアント
Webサーバー(IHS)
abcd.co.jp
efgh.or.jp
http://www.abcd.co.jp
http://www.efgh.or.jp
異なる複数のURL(ドメイン)で
リクエストを受け付けたい
異なる複数のURL(ドメイン)で
リクエストを受け付けたい1台のサーバーで
処理したい
1台のサーバーで
処理したい
6
ネットワーク構成構成済ネットワーク・アダプターにIPアドレスを追加 (ifconfigコマンド)
追加したIPアドレスの名前解決の確認 (ping [ホスト名]コマンド)
httpd.conf
主な VirtualHost のディレクティブ
IP-Base VirtualHostの設定
<VirtualHost 9.170.19.214>ServerAdmin [email protected] /usr/IHSV7/htdocs/en_US2ServerName virtual.makuhari.japan.ibm.comErrorLog /usr/IHSV7/logs/error_log2CustomLog /usr/IHSV7/logs/access_log2 common2</VirtualHost>
追加したIPアドレス追加したIPアドレス
追加したIPアドレスで使用する
ホスト名
追加したIPアドレスで使用する
ホスト名
# ifconfig en0 alias 9.170.19.214 netmask 255.255.255.0
ServerAdmin エラー発生時に生成される自動ページのメールアドレスDocumentRoot ファイルの提供元となるディレクトリ/ファイル名ServerName ホスト名ErrorLog サーバーで発生したエラーを記録するファイル名TransferLog サイトへのアクセスログを格納するファイル名ServerAlias 現在のVirtualHostとマッチ別名の一覧NameVirtualHost Name-Base VirtualHostで使用するIPアドレス
7
ネットワーク構成異なる名前が同じIPアドレスで名前解決できるかの確認
(ping [ホスト名] コマンド)
httpd.conf
IPアドレスに「*」を設定することにより、複数のIPアドレスで同じサー
ビスを受けることが可能
Name-Base VirtualHostの設定
NameVirtualHost 9.170.19.214・・・・・
<VirtualHost 9.170.19.214>ServerAdmin [email protected] /usr/IHSV7/htdocs/en_US2ServerAlias test2ServerName test.makuhari.japan.ibm.comErrorLog /usr/IHSV7/logs/error_log2CustomLog /usr/IHSV7/logs/access_log2 common2</VirtualHost>
追加したIPアドレス追加したIPアドレス仮想ホストに使用するIPアドレス仮想ホストに使用するIPアドレス
別ホスト名別ホスト名
NameVirtualHost 12.34.56.*・・・</VirtualHost 12.34.56.* >
8
考慮点
VirtualHost 定義にないリクエスト処理httpd.conf で指定した VirtualHost 定義に一致しないリクエストを受け取った場合は、httpd.conf の中で最初に記述したVirtualHost で処理される
ユーザーには意図しないコンテンツが送られてしまうことがある
Name-Base VirtualHostName-Base VirtualHost では、仕様上、正しいSSL証明書を使用することができない
Name-Base VirtualHostはSSL通信の設定を行うことができない
9
2. 性能情報の表示
10
機能概要(1/2)
mod_statusとはサーバがどのくらいの性能で動作しているかを知る
現時点でのサーバの統計情報を読みやすいHTML 形式で表示
一定時間毎のリフレッシュが可能
頻繁にアクセスがあるサイトを管理する際に有用致命的な状態になる前に、問題の発生を検知できる
内部的な情報が表示されるため、別途セキュリティ対策として、mod_statusへのアクセス制御を行う
ブラウザクライアント
IHSmod_statusの出力結果
HTTP
11
機能概要(2/2)
表示できる項目リクエストを扱っているワーカーの数
アイドル (リクエストを扱っていない) ワーカーの数
各ワーカーの状態、ワーカーが扱ったリクエストの数、 ワーカーが送った総バイト数 (*)
総アクセス数と総バイト数 (*)
サーバが起動もしくは再起動された時刻と動作している時間
平均の 1 秒あたりのリクエスト数、1 秒あたりの送られたバイト数、リクエストあたりのバイト数 (*)
各ワーカーと Apache 全体で使用されている CPU の割合 (*)
現時点のホストと処理されているリクエスト (*)
(*)は、ExtendedStatusディレクティブをONに設定する必要がある
12
mod_statusの設定
httpd.confstatus_moduleのロード (デフォルト)
LoadModule status_module modules/mod_status.so
ExtendedStatusディレクティブの設定
ロケーションの設定
LoadModule status_module modules/mod_status.so<IfModule mod_status.c>ExtendedStatus On</IfModule>・・・<IfModule mod_status.c><Location /server-status>
SetHandler server-statusOrder Deny,AllowDeny from allAllow from makuhari.com
</Location></IfModule>
拡張ステータス情報の表示(デフォルト on)
拡張ステータス情報の表示(デフォルト on)
ロケーションの設定(デフォルトAllow fromの設定なし)
ロケーションの設定(デフォルトAllow fromの設定なし)
13
サーバの統計情報の表示http://<servername>/server-status/
アクセスするURLの変更httpd.conf
一定時間毎のリフレッシュhttp://<servername>/server-status?refresh=NNはリフレッシュを行うタイミング(秒)を指定
mod_statusの表示(1/2)
<Location /IHS-status>SetHandler server-statusOrder Deny,AllowDeny from allAllow from makuhari.com
</Location>
この設定の場合、URLは下記になるhttp://<servername>/IHS-status/この設定の場合、URLは下記になるhttp://<servername>/IHS-status/
SetHandlerは、変更しないSetHandlerは、変更しない
14
mod_statusの表示(2/2)
Machine Readable Status Filehttp://<servername>/server-status?autoプログラム内で処理しやすいフォーマットで出力され、log_server_statusを利用することで、定期的にテキストファイルへの
保存が可能
15
mod_mpmstatの設定
下記のように、サーバー活動状況の統計情報を取得することが可能
IHS7.0ではデフォルトOnであり、600秒毎にError_logに出力httpd.conf
この情報を取得する要件がなく、(600秒毎ですが)パフォーマンスへの影響を考慮する場合には、mod_mpmstatをロードしないで下さい
mod_mpmstat
[Wed Jan 21 16:30:16 2009] [notice] mpmstats: rdy 598 bsy 2 rd 0 wr 0 ka 2 log 0 dns 0 cls 0
rdy 待機状態のスレッド数bsy 処理中のスレッド数rd 読み取り中のスレッド数wr 書き込み中のスレッド数ka キープアライブ接続中のスレッド数log ログ出力中のスレッド数dns DNSルックアップ中のスレッド数cls 終了処理中のスレッド数
LoadModule mpmstats_module modules/debug/mod_mpmstats.so <IfModule mod_mpmstats.c> ReportInterval 600 TrackModules On </IfModule>
不要な場合は、ロードしない不要な場合は、ロードしない
600秒毎にデータを取得600秒毎にデータを取得
16
3. URLの書き換えとアクセス制御
17
機能概要
mod_rewriteとはブラウザから指示されたURLを内部的に書き換えるモジュール
様々な環境変数(ブラウザの種類、IPアドレス、ドメインネームなど)を参照して、アクセス制限を実現
rewrite前のページ rewrite後のページ
LoadModule rewrite_module modules/mod_rewrite.so<IfModule mod_rewrite.c>RewriteEngine OnRewriteRule /index.html /index_rewrite.html</IfModule>
httpd.conf 例
18
mod_rewriteの設定
httpd.confrewrite_moduleのロード
LoadModule rewrite_module libexec/apache/mod_rewrite.so
mod_rewriteの基本書式1.rewrite機能を有効にする
2.(オプション)rewriteの対象とするリクエストの条件(IPアドレスなど)を指定する
3.どのような書き換えを行うかを指示する
LoadModule rewrite_module modules/mod_rewrite.so・・・<IfModule mod_rewrite.c>RewriteEngine OnSetEnvIf Request_URI "test.html" nologRewriteLog "logs/rewrite_log"RewriteLogLevel 1RewriteRule ^/.*$ http://9.188.52.172/test.html</IfModule>
19
mod_rewriteのディレクティブ
主なディレクティブRewriteEngine
ランタイムrewriteエンジンを使用可能、不可能にする。onかoffを指定する
RewriteLogファイルにログを出力する
RewriteCondテスト文字列と条件パターンを定義する
RewriteRuleの前にRewriteCond条件を挿入する。どの場合にRewriteRuleの命令を実行す
るか条件を記入する。条件はテスト文字列の値とマッチングをテストする正規表現である。
RewriteRule必要に応じて何度でも使用できる
命令を2度以上指定することが可能。ホスト名やディレクトリなど、書き換える内容を書く。オプション引数としてフラグを渡すことができる。フラグは1文字、または2文字で略記でも指定できる。
主なフラグredirect | R 強制的にリダイレクトを行う
last | L Rewrite処理を停止して、これ以上のRewriteのルールを割り当てない
nocase | NC 大文字と小文字の区別しないようにする
chain | C 次のRewriteRuleと連結する
20
mod_rewriteの例(1/3)
要件特定のクライアント(IPアドレスが9.170.19.137)に対して、URLの書
き換えを行う
設定httpd.conf
LoadModule rewrite_module modules/mod_rewrite.so・・・<IfModule mod_rewrite.c>RewriteEngine On
RewriteCond %{REMOTE_ADDR} 9¥.170¥.19¥.137RewriteRule /index.html /index_rewrite.html
</IfModule>
rewrite機能をONにするrewrite機能をONにする
書き換えの対象となる条件を指定する。%{}の中は、条件に当てはまるか
どうかの環境変数を入力する。REMOTE_ADDRは、クライアント
のIPアドレスに対して条件を指定する。
書き換えの対象となる条件を指定する。%{}の中は、条件に当てはまるか
どうかの環境変数を入力する。REMOTE_ADDRは、クライアント
のIPアドレスに対して条件を指定する。
書き換える内容を示す。この設定では、/index.htmlのファイル要求に対して、/index_rewrite.htmlと書き換える
書き換える内容を示す。この設定では、/index.htmlのファイル要求に対して、/index_rewrite.htmlと書き換える
21
mod_rewriteの例(2/3)
要件常に同じドメイン名 (例:silver2.makuhari.japan.ibm.com)でアクセス
する別の形式(例:IPアドレス指定)でアクセスするとsilver2.makuhari.japan.ibm.comに強制的にリダイレクトする
設定httpd.conf
RewriteEngine onRewriteCond %{HTTP_HOST} !^silver2¥.makuhari¥.japan¥.ibm¥.comRewriteCond %{HTTP_HOST} !^$RewriteCond %{SERVER_PORT} !^80$RewriteRule ^/(.*) http://silver2.makuhari.japan.ibm.com:%{SERVER_PORT}/$1 [L,R]RewriteCond %{HTTP_HOST} !^silver2¥.makuhari¥.japan¥.ibm¥.comRewriteCond %{HTTP_HOST} !^$RewriteRule ^/(.*) http://silver2.makuhari.japan.ibm.com/$1 [L,R]
次のRewriteRuleは、silver2.mkauhari.japana.ibm.comのアドレス以外でアクセス したら、強制的にsilver2.mkauhari.japana.ibm.comに変換する
次のRewriteRuleは、silver2.mkauhari.japana.ibm.comのアドレス以外でアクセス したら、強制的にsilver2.mkauhari.japana.ibm.comに変換する
最初のRewriteRuleは、ポート番号80でsilver2.mkauhari.japana.ibm.comのアドレス以外のポート番号もしくはアドレスでアクセスしたら、silver2.makuhari.japan.ibm.com:ポート番号に変換する。
最初のRewriteRuleは、ポート番号80でsilver2.mkauhari.japana.ibm.comのアドレス以外のポート番号もしくはアドレスでアクセスしたら、silver2.makuhari.japan.ibm.com:ポート番号に変換する。
22
mod_rewriteの例(3/3)
要件UserAgent毎に異なるページを表示する
キャリア毎(携帯端末、ブラウザ)にページをディレクトリ単位で分ける
http://www.ise.com/i/、http://www.ise.com/j/ 等
公開するアドレスを統一するため、キャリア毎にディレクトリに振り分ける
i-mode Cellphone
EZwebCellphone
Internet Explorer
Response/i/index.htm
Request/index.html
Response/au/index.hdml
Request/index.html
Response/IE7.0/index.htm
Request/index.html
RequestURL: http://www.ise.com/ キャリア毎のuser-Agentヘッダ例
・i-modeF502i DoCoMo/1.0/F502i…
・EZWebUP.Browser/ …
・Internet ExplorerMozilla/4.0 (compatible; MSIE 7.0; …
IHS
23
【補足】 環境変数
主な環境変数 (%{}の中で指定)HTTP_USER_AGENT ブラウザの種類、バージョンなどの情報
HTTP_REFERER リンクをたどって来た場合のリンク元URL
HTTP_COOKIE クッキーの情報
REMOTE_ADDR クライアントのIPアドレス
REMOTE_HOST クライアントのドメインネーム
REMOTE_USER 認証されたUSERの名前
HTTP headers:HTTP_USER_AGENTHTTP_REFERERHTTP_COOKIEHTTP_FORWARDEDHTTP_HOSTHTTP_PROXY_CONNECTIONHTTP_ACCEPT
connection & request:REMOTE_ADDRREMOTE_HOSTREMOTE_PORTREMOTE_USERREMOTE_IDENTREQUEST_METHODSCRIPT_FILENAMEPATH_INFOQUERY_STRINGAUTH_TYPE
server internals:DOCUMENT_ROOTSERVER_ADMINSERVER_NAMESERVER_ADDRSERVER_PORTSERVER_PROTOCOLSERVER_SOFTWARE
server internals:TIME_YEARTIME_MONTIME_DAYTIME_HOURTIME_MINTIME_SECTIME_WDAYTIME
specials:API_VERSIONTHE_REQUESTREQUEST_URIREQUEST_FILENAMEIS_SUBREQHTTPS
環境変数一覧
24
【補足】 正規表現
主な正規表現. 任意の一文字
[abc] a、b、cのうちのどれか一文字
[^abc] a、b、c以外のどれか一文字
string1|string2 string1またはstring2
? 直前の文字の0、または1回
ab?cならac、abc
* 直前の文字の任意回
ab*cならac、abc、abbc・・・
+ 直前の文字の任意回(一回以上)
ab+cならabc、abbc、abbbbc・・・
^ 行頭
$ 行末
¥ ここの表現を、その文字そのものとして扱う
25
4. ログのカスタマイズ
26
どんな時にログをカスタマイズするか?
ログのカスタマイズが有効なケース
IHSLoad
Balancer WAS
Cookie
Cookie ログ
クライアント
Cookie
クライアント
クライアント
管理者
GIF
Cookieログ
環境に合わせてログファイル名を変更したい
環境に合わせてログファイル名を変更したい
Cookieの内容を
単体ログにロギングしたい
Cookieの内容を
単体ログにロギングしたい
マシンリソースに余裕がないのでできるだけログのファイルサイズを減らしたい
マシンリソースに余裕がないのでできるだけログのファイルサイズを減らしたい
特定IPアドレスからのアクセスは
ロギングしなくて良い
特定IPアドレスからのアクセスは
ロギングしなくて良い
画像ファイルへのアクセスはロギングしなくて良い
画像ファイルへのアクセスはロギングしなくて良い
27
関連モジュールとディレクティブ(1/2)
モジュールmod_log_config
クライアントのリクエストを柔軟にログ収集する機能を提供する
ディレクティブLogFormat
ログの書式とそのニックネームを定義する
CustomLogログファイルを定義し、使用する書式のニックネームを指定する
他にTransferLogディレクティブがあり、LogFormatと組み合わせて使用することができる。できることは上記2つと同じ。
LogFormat "%h %l %u %t ¥"%r¥" %>s %b" common
CustomLog logs/access_log common
28
関連モジュールとディレクティブ(2/2)
モジュールmod_setenvif
リクエストの特徴に基づいた環境変数の設定を可能にする
ディレクティブSetEnvIf
リクエストの属性に基づいて環境変数を設定する
BrowserMatchHTTP User-Agent に基づいて環境変数を設定する
SetEnvIfを使って以下の様に設定するのと同じ
SetEnvIf Request_URI "¥.gif$" object_is_image=gif
BrowserMatch ^IMozilla browser=netscape
SetEnvIf User-Agent ^Mozilla browser=netscape
29
デフォルトのログファイル書式Common Log Format (CLF) と呼ばれる以下の形式
各々のリクエストは1行で格納される
スペースによって区切られた各項目で構成
ログファイルの書式(1/2)
<access_log>9.170.233.229 - - [11/Jun/2009:07:20:53 +0000] "GET / HTTP/1.1" 200 32169.170.233.229 - - [11/Jun/2009:07:20:53 +0000] "GET /http_server_styles.css HTTP/1.1" 200 11849.170.233.229 - - [11/Jun/2009:07:20:53 +0000] "GET /images/odot.gif HTTP/1.1" 200 499.170.233.229 - - [11/Jun/2009:07:20:53 +0000] "GET /images/background.gif HTTP/1.1" 200 1830999.170.233.229 - - [11/Jun/2009:07:20:53 +0000] "GET /images/administration.gif HTTP/1.1" 200 2239.170.233.229 - - [11/Jun/2009:07:20:53 +0000] "GET /images/help.gif HTTP/1.1" 200 2109.170.233.229 - - [11/Jun/2009:07:20:53 +0000] "GET /images/support.gif HTTP/1.1" 200 1509.170.233.229 - - [11/Jun/2009:07:20:53 +0000] "GET /images/notes.gif HTTP/1.1" 200 1709.170.233.229 - - [11/Jun/2009:07:20:54 +0000] "GET /images/foreground.gif HTTP/1.1" 200 53680
LogFormat "%h %l %u %t ¥"%r¥" %>s %b” commonCustomLog logs/access_log common
リモートホスト
リモートログ名
リモートユーザー
時刻
リクエストの最初の行
ステータスコード
レスポンスのバイト数
30
書式のカスタマイズLogFormatディレクティブでログの書式とニックネームを指定する
書式にはログファイルにそのまま書かれる文字列や、改行とタブを表すC言語形式の制御文字”¥n”と”¥t”とを含めることができる
引用符とバックスラッシュはバックスラッシュでエスケープする必要がある
それぞれのリクエストの属性は”%”ディレクティブを使って取得する
指定できる”%”ディレクティブについては次ページ参照
”%”の直後に HTTP ステータスコードをカンマ区切りで指定することで、表示を制限することができる
例えば、”%400,500{User-agent}i”では、 400 と 500 番エラーでのみ User-agent を記録し、他のステータスコードでは “-” という文字列を記録する
CustomLogディレクティブでログファイルのパスと書式を指定ログファイルのパスを指定
書式はLogFormatディレクティブで定義したニックネームを指定
ログファイルの書式(2/2)
LogFormat "%h %l %u %t ¥"%r¥" %>s %b %D ¥”%{User-Agent}i¥”" myformat
CustomLog logs/my_log myformat
31
[参考] 指定できる“%”ディレクティブ
%% パーセント記号%a リモート IP アドレス%A ローカル IP アドレス%B レスポンスのバイト数。HTTP ヘッダは除く。%b レスポンスのバイト数。HTTP ヘッダは除く。CLF 書式。 すなわち、1 バイトも送られなかったときは 0 ではなく、 '-' になる%{Foobar}C サーバに送られたリクエスト中のクッキー Foobar の値%D リクエストを処理するのにかかった時間、マイクロ秒単位%{FOOBAR}e 環境変数 FOOBAR の内容%f ファイル名%h リモートホスト%H リクエストプロトコル%{Foobar}i サーバに送られたリクエストの Foobar: ヘッダの内容%l (identd からもし提供されていれば) リモートログ名。
これは mod_ident がサーバに存在して、 IdentityCheck ディレクティブが On に設定されていない限り、 - になる%m リクエストメソッド%{Foobar}n 他のモジュールからのメモ Foobar の内容%{Foobar}o 応答の Foobar: ヘッダの内容%p リクエストを扱っているサーバの正式なポート%P リクエストを扱った子プロセスのプロセス ID%{format}P リクエストを扱ったワーカーのプロセス ID かスレッド ID。 format として有効な値は pid, tid, hextid です。
hextid を使うには APR 1.2.0 以降が必要です。%q 問い合せ文字列 (存在する場合は前に ? が追加される。 そうでない場合は空文字列)%r リクエストの最初の行%s ステータス。内部でリダイレクトされたリクエストは、元々の リクエストのステータス --- 最後のステータスは %>s%t リクエストを受付けた時刻。 CLF の時刻の書式 (標準の英語の書式)%{format}t format で与えられた書式による時刻。format は strftime (3) の 書式である必要がある。(地域化されている可能性がある)%T リクエストを扱うのにかかった時間、秒単位%u リモートユーザ (認証によるもの。ステータス (%s) が 401 のときは意味がないものである可能性がある)%U リクエストされた URL パス。クエリ文字列は含まない%v リクエストを扱っているサーバの正式な ServerName%V UseCanonicalName の設定によるサーバ名%X 応答が完了したときの接続ステータス:
X = 応答が完了する前に接続が異常終了+ = 応答が送られた後に接続を持続することが可能- = 応答が送られた後に接続が切られる
%I リクエストとヘッダを含む、受け取ったバイト数。 0 にはならない。 これを使用するためには mod_logio が必要%O ヘッダを含む、送信したバイト数。0 にはならない。 これを使用するためには mod_logio が必要
32
リクエストの属性に基づいて環境変数を指定以下の3つの属性が指定可能
HTTPリクエストヘッダフィールドHost, User-Agent, Referer, Accept-Language など
以下のリクエストの一部のいずれかRemote_Host - リクエストを行なっているクライアントのホスト名 (もしあれば)
Remote_Addr - リクエストを行なっているクライアントの IP アドレス
Server_Addr - リクエストを受け取ったサーバの IP アドレス (2.0.43 以降のみ)
Request_Method - 使用されているメソッド名 (GET, POST など)
Request_Protocol - リクエストが行なわれたプロトコルの名前とバージョン (例えば、"HTTP/0.9", "HTTP/1.1" など。)
Request_URI - URL のスキームとホストの後の部分
既にリクエストに関連付けられている環境変数
属性の指定には正規表現を使用する
環境変数には値を設定することも可能
CustomLogディレクティブでロギングする対象のリクエストを指定する環境変数が合致しないものをロギング
環境変数が合致するもののみをロギング
環境変数
CustomLog logs/access_log common env=!object_is_image
CustomLog logs/image_log common env=object_is_image
SetEnvIf Request_URI "¥.gif$" object_is_image=gifSetEnvIf Request_URI "¥.jpg$" object_is_image=jpg
33
LogFormat “%h %l %u %t ¥”%r¥” %>s %b” commonLogFormat “%h %l %u %t ¥”%r¥” %>s %b %D” resptime
#CustomLog logs/access_log commonCustomLog logs/access_log resptime
レスポンスタイムを取得したい
%Dを使ってレスポンスタイムを
取得する書式を新たに定義
画像ファイルへのアクセスを記録しない
LogFormat “%h %l %u %t ¥”%r¥” %>s %b” common
SetEnvIf Request_URI “¥.gif$” image=gifSetEnvIf Request_URI “¥.jpg$” image=jpg
CustomLog logs/access_log common env=!image
デフォルトのCLF形式のログ
ニックネーム
環境変数
画像ファイル(.gif と .jpg)への
リクエストに環境変数をセット
image環境変数のないリクエストをアクセスをログに記録
ログ設定例(1/3)
新たに定義した書式でログを記録
34
LogFormat “%h %l %u %t ¥”%r¥” %>s %b” common
SetEnvIf Remote_Addr 9¥.188¥.52¥.73 deny_ip
CustomLog logs/access_log common env=!deny_ip
特定IPからのアクセスを記録しない
負荷分散装置からの監視アクセスを別のログに記録する
LogFormat “%h %l %u %t ¥”%r¥” %>s %b” common
BrowserMatch IBM_Load_Balancer_HTTP_Advisor LB
CustomLog logs/access_log common env=!LBCustomLog logs/advisor_log common env=LB
ログ設定例(2/3)
拒否するIPからのアクセスに
環境変数をセット
Load BalancerのUser-Agentからの
アクセスに環境変数をセット
LBからのアクセスを記録
LB以外のアクセスを記録-
35
ログ設定例(3/3)
負荷分散装置やプロキシーが送信するクライアントアドレスを記録する
NAT転送をする負荷分散装置やプロキシーを経由するリクエストは、リモートホストが負荷分散装置やプロキシーとなるために実際のクライアントIPが記録できない
負荷分散装置やプロキシーによってはクライアントIPをHTTPヘッダーに追加する機能がある場合がある
F5 Big-IPのNAT転送では「X-Forwarded-For」ヘッダーにクライアントIPを含める事が可能
Edge Components Caching Proxyでは「Client-IP」ヘッダーにクライアントIPを含める事が可能
ログをカスタマイズしてこのヘッダーを取得することが可能
LogFormat “%h %l %u %t ¥”%r¥” %>s %b” commonLogFormat "%{X-Forwarded-For}i %l %u %t ¥"%r¥" %>s %b" common
CustomLog logs/access_log common
IHSNAT
Proxy
IPログ
クライアント
IPIP
IP負荷分散装置やプロキシーのIPアドレスが記録される
36
5. IHS管理サーバー
37
機能概要
IHS 管理サーバーとはhttpd.confを編集するhttpdのプロセス
admin.confにて定義され、別のポート(:8008)でサービスを行う
IHSをWebSphere管理下に統合するとBasic認証を行った上で、デプロイメント・マネージャーから処理要求を受け付ける
セキュリティー要件等により、IHSとWASをリモート(別筐体)構成とした際に、IHS管理サーバーを経由してWASから以下を行うことが可能
IHSの状況モニター
IHSプラグイン構成ファイルの生成・伝搬
IHSの始動・停止
38
構成手順(1/2)
IHS管理サーバのインストールWASのランチパッドから、IHSのインストール・ウィザードを起動
ウィザードに従ってインストールIHSのポート番号とIHS管理サーバーのポート番号を入力
IHS管理サーバーのセットアップ、ユーザーIDおよびグループの作成
IHS管理サーバーの認証用ユーザーIDの作成
39
構成ファイルと認証ファイルのアクセス権限の付与AIX®、HP-UX、Linux® 、 Solaris
IHS管理サーバーのアクセス許可AIX、HP-UX、Linux、Solaris 、 Windows 管理コンソールにて、リモート Web サーバーのプロパティーのユーザー ID フィールドに入力したユーザー IDを指定する
構成手順(2/2)
# <IHS_INSTALL_ROOT>/bin/setupadm -create -usr [ユーザーID] -grp [グループID] -cfg <IHS_INSTALL_ROOT>/conf/httpd.conf -adm <IHS_INSTALL_ROOT>/conf/admin.conf
# <IHS_INSTALL_ROOT>/bin/htpasswd-cm <IHS_INSTALL_ROOT>/conf/admin.conf [ユーザーID]
40
6. WebSphere管理下に統合
41
機能概要
WebSphere管理コンソールによるWebサーバーの管理始動・停止
状況モニター
構成ファイルの表示・編集
プラグイン構成ファイルの表示・編集
プラグイン構成ファイルの生成・伝搬
42
構成手順(1/4)
IHS7.0 のインストールWASのランチパッドから、IHSのインストール・ウィザードを起動
ウィザードに従ってインストールIHSのポート番号とIHS管理サーバーのポート番号を入力
Windowsの場合は、ウィンドウズ・サービスへの登録内容を入力
43
構成手順(2/4)
プラグインのインストールWASのランチパッドからプラグインのインストール・ウィザードを起動
ウィザードに従ってインストール構成するWebサーバーを指定
Webサーバー構成ファイルとポート番号(デフォルト80)を入力
Webサーバー定義名を入力
44
構成手順(3/4)
IHS7.0 のWebSphereセルへの統合リモート構成の場合、IHS管理サーバーを起動
WebSphere管理コンソールからWebサーバーを構成Webサーバーの選択とプロパティの入力
サーバー名の入力サーバー名の入力
リモート構成の場合リモート構成の場合
45
構成手順(4/4)
コマンドによるIHS7.0 のWebSphereセルへの統合リモート構成の場合、 IHS管理サーバーを起動
デプロイメント・マネージャー、ノード・エージェントを起動
Webサーバー構成用のスクリプトからWebサーバーを構成
導入手順の詳細は、「WebSphere Application Server V7.0 導入ガイド」をご確認下さい
# cd <WAS_INSTALL_ROOT>/bin
# <PLUGIN_INSTALL_ROOT>/bin/configurewebserver1.sh
WASX7209I: ノード yumikoCellManager01 のプロセス "dmgr" に、SOAP コネクターを使用して接続しました。プロセスのタイプは DeploymentManager です。WASX7303I: 次のオプションはスクリプト環境に渡され、argv 変数に格納される引数として使用可能になります: "[webserver1, IHS, /usr/IBM/HTTPServer7, /usr/IBM/HTTPServer7/conf/httpd.conf, 80, MAP_ALL, /usr/IBM/HTTPServer7/Plugins, unmanaged, tamagoNode01, tamago, aix, 8008, username]“(中略)Start saving the configuration.
Configuration save is complete.
46
Webサーバーの管理(1/2)
WebSphere管理コンソールによるWebサーバーの管理WebサーバーがIHSの場合
IHSがWASの管理対象/管理対象外ノード上にある場合
IHSの状況モニター
IHSプラグイン構成ファイルの生成・伝搬
IHSのエラー・ログおよびアクセス・ログ表示
IHSの始動・停止
IHS構成ファイルの表示・編集
プラグイン構成ファイルの生成・更新、伝搬
プラグイン構成ファイルの生成・更新、伝搬
Webサーバー定義の作成/削除
Webサーバー定義の作成/削除
Webサーバーの始動/停止・終了
Webサーバーの始動/停止・終了
47
Webサーバーの管理(2/2)
WebSphere管理コンソールによるWebサーバーの管理WebサーバーがIHS以外の場合
WebサーバーがWASの管理対象ノード上にある場合
Webサーバーの状況モニター
Webサーバー・プラグイン構成ファイルの生成・伝搬
WebサーバーがWASの管理対象外ノード上にある場合
Webサーバーの状況モニター
Webサーバー・プラグイン構成ファイルの生成のみ
選択可能なWebサーバー
Webサーバー作成時に指定できるタイプ
48
リモートWebサーバーのトポロジー
DMノード
IHSWebサーバー・ノード
セル
構成リポジトリー
Plugin構成ファイル
プラグインの伝搬
Plugin構成ファイル
DMノード
Webサーバー
Webサーバー・ノードセル
構成リポジトリー
Plugin構成ファイル
Plugin構成ファイル
NA
DMノード
Webサーバー
Webサーバー・ノードセル
構成リポジトリー
Plugin構成ファイルPlugin構成ファイル
プラグインの伝搬
手動コピーが必要
プラグインの生成
プラグインの生成
プラグインの生成
管理サーバー
*IHS以外
*IHS以外
<管理コンソール>
<管理コンソール>
<管理コンソール>
・ WebサーバーがIHS、管理サーバー経由の場合
・ WebサーバーがIHS以外、NodeAgent経由の場合
・ WebサーバーがIHS以外、NodeAgentを経由しない場合
状況のモニター
プラグイン構成の生成・伝搬
状況のモニター
プラグイン構成ファイルの生成・伝搬
IHSの起動・停止
状況のモニター
49
参考文献
50
参考文献
Apache HTTP サーバ ドキュメンテーションApache HTTP サーバ バージョン 2.2 ドキュメント
http://httpd.apache.org/docs/2.2/
Information CenterIBM HTTP Server for WebSphere Application Server バージョン 7.0
http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/index.jsp?topic=/com.ibm.websphere.ihs.doc/info/welcome_ihs.html
ワークショップ資料WAS V6 Edge Components & IHSインプリメンテーション・ワークショップ資料
http://www.ibm.com/developerworks/jp/websphere/library/was/edge6_ihs6/
IBM HTTP Server 1.3.19 解説https://www.ibm.com/developerworks/jp/websphere/library/was/ihs13_guide/5.html
その他WebSphere Application Server V7.0 導入ガイド
http://www.ibm.com/developerworks/jp/websphere/library/was/was7_install/#download