Webサーバ勉強会 #60~#76
-
Upload
hidetake-iwata -
Category
Technology
-
view
993 -
download
0
description
Transcript of Webサーバ勉強会 #60~#76
Web サーバ勉強会#60 ~ #76
@int128 (いわてぃ)
Introduction
@int128http://d.hatena.ne.jp/int128/
ソフトウェア & インフラエンジニア大きな SI 屋で働いています。 自宅サーバが好きです。最近、インフラ設計書を公開しました。
17 modules
60 mod_actions61 mod_speling62 mod_userdir63 mod_alias64 mod_rewrite65 mod_proxy66 mod_proxy_balancer67 mod_proxy_ftp68 mod_proxy_http69 mod_proxy_connect70 mod_cache71 mod_suexec72 mod_disk_cache73 mod_file_cache74 mod_mem_cache75 mod_cgi76 mod_version
そんな時間配分で大丈夫か?
16 秒 × 17 modules= 272 秒
大丈夫だ、問題ない
Agenda
独断と偏見で並び替えてお送りします。
1.mod_alias– mod_userdir– mod_rewrite– mod_proxy (http/ftp/connect/balancer)– mod_cache (mem/disk), mod_file_cache– mod_cgi– mod_suexec– mod_actions– mod_speling– mod_version
(1) mod_alias
ドキュメントツリーにファイルシステムをマップする。
Alias /images /misc/data/images # Order allow, deny をお忘れなく
AliasMatch ←Alias の正規表現 Redirect RedirectMatch RedirectPermanent ←301 を返す RedirectTemp ←302 を返す ScriptAlias ←Alias の cgi-script 版 ScriptAliasMatch
(2) mod_userdir
ユーザのホームディレクトリを公開するためのモジュール。 UserDir public_html http://example.com/~int128/index.html →/home/int128/public_html/index.html
絶対パスでも OK 。(例: /var/www/home ) パスは複数候補を書ける。
UserDir disabled UserDir enabled user1 user2 user3 特定のユーザだけホームディレクトリを有効にできる
(3) mod_rewrite
ルールに基づいて URL を書き換える機能を提供する。 RewriteCond で条件式、RewriteRule で動作(リライト、リダイレクト)を指定する。
RewriteCond %{HTTP_USER_AGENT} DoCoMo [OR] RewriteCond %{HTTP_USER_AGENT} SoftBank RewriteRule ^/$ /mobile/ [L] 携帯電話からトップページへのアクセスはケータイコンテンツを返す。
使いすぎに注意。ご利用は計画的に。JMeter でテスト駆動構築がおすすめ。
(4) mod_proxy
リバースプロキシ、フォワードプロキシを提供する。
リバースプロキシDMZ から Trust へのリクエスト転送に使う。mod_proxy_balancer を組み合わせるとロードバランスも可能。
フォワードプロキシTrust からインターネットに GET する場合など。mod_proxy 自体はキャッシュしてくれない。
(4) mod_proxy ( 続き )
必要なプロトコルを組み合わせて LoadModule すればお k
• mod_proxy (本体)o mod_proxy_http ( HTTP プロキシ)o mod_proxy_connect ( SSL/CONNECT プロキシ)o mod_proxy_ftp ( FTP プロキシ)o mod_proxy_ajp ( AJP プロキシ)
• mod_proxy_balancer (ロードバランサ)
ProxyPass /ap http://172.16.3.1/ap ProxyPassReverse /ap http://172.16.3.1/ap
タイムアウト、フェイルオーバ時間に注意する。(上位 LB を含めた)シーケンス図を書いて整理するとよい。
(5) mod_cache
RFC2616 のコンテンツキャッシュ制御を提供する。
• mod_disk_cache (ディスクキャッシュ)• mod_mem_cache (メモリキャッシュ)
デフォルトでは、クエリ無しで、レスポンスヘッダに Last-Modified, Expires, ETag のいずれかが付いていればキャッシュする。
リバースプロキシの性能を飛躍的に向上できる。ただし、キャッシュされる条件、有効期限に注意すべし。
ちなみに、 mod_file_cache
起動時にファイルをメモリに読み込むことで高速化するモジュール。 mod_cache とは別物。
2 つの方式を選べる。• 起動時にファイルを mmap() しておく。• 起動時にファイルのファイルハンドルを開いておく。
キャッシュを更新するには httpd の再起動が必要。Experimental だし使わない方がいいかも。
(6) mod_cgi
CGI を使うためのモジュール。worker MPM では mod_cgid を使う。
以下のディレクティブが使えるようになる。
AddHandler cgi-script .cgi Options +ExecCGI AcceptPathInfo on ScriptAlias /cgi-bin /var/www/cgi-bin ScriptLog /var/log/apache2/cgi_log
(7) mod_suexec
CGI をユーザアカウントで実行する機能を提供する。 例えば、 http://example.com/~int128/index.cgiというリクエストを受けたとき、スクリプトを• apache ユーザで実行する。 ← suEXEC 無効• int128 ユーザで実行する。 ← suEXEC 有効
suEXEC ありでビルドされた Apache でのみ使える。ディレクトリやスクリプトのパーミッションがチェックされる。期待通り動かないときは suexec_log を参照。
(8) mod_actions
メディアタイプやリクエストメソッドに応じて CGI スクリプトを実行する機能を提供する。
Action application/x-httpd-php5 /cgi-bin/php.cgi AddHandler application/x-httpd-php5 .php5 *.php5 へのリクエストは CGI スクリプトを起動する。
さくらサーバで野良 PHP を使うために Action ディレクティブを使ったなど。
(9) mod_speling
リクエスト URI のスペルミスを訂正して、それっぽいリソースを返してくれるモジュール。大文字小文字の間違い、 1 文字の誤りを訂正する。 CheckSpelling on やってみた。 • 間違った URL を叩くと、正しい URL にリダイレクトされ
る。• 候補が複数ある場合は選択ページ(英語)が表示される。• クエリパラメータには効かない。
(10) mod_version
バージョンに依存する設定を書くためのモジュール。 <IfVersion >= 2.2> # Settings for httpd 2.2 or later </IfVersion> 正規表現も使える。 <IfVersion = /2.2.1[123]/> # Workaround for httpd 2.2.11~13 </IfVersion>
ご清聴ありがとうございました
一番いい config を頼む