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