Webサーバ勉強会 #60 - #76
by
Hidetake Iwata
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
Webサーバ勉強会 #60~#76 @int128 (いわてぃ)
Slide 2
Slide 2 text
Introduction @int128 http://d.hatena.ne.jp/int128/ ソフトウェア&インフラエンジニア 大きなSI屋で働いています。 自宅サーバが好きです。 最近、インフラ設計書を公開しました。
Slide 3
Slide 3 text
17 modules 60 mod_actions 61 mod_speling 62 mod_userdir 63 mod_alias 64 mod_rewrite 65 mod_proxy 66 mod_proxy_balancer 67 mod_proxy_ftp 68 mod_proxy_http 69 mod_proxy_connect 70 mod_cache 71 mod_suexec 72 mod_disk_cache 73 mod_file_cache 74 mod_mem_cache 75 mod_cgi 76 mod_version そんな時間配分で大丈夫か? 16秒 × 17 modules =272秒
Slide 4
Slide 4 text
大丈夫だ、問題ない
Slide 5
Slide 5 text
Agenda 独断と偏見で並び替えてお送りします。 1. mod_alias 2. mod_userdir 3. mod_rewrite 4. mod_proxy (http/ftp/connect/balancer) 5. mod_cache (mem/disk), mod_file_cache 6. mod_cgi 7. mod_suexec 8. mod_actions 9. mod_speling 10. mod_version
Slide 6
Slide 6 text
(1) mod_alias ドキュメントツリーにファイルシステムをマップする。 Alias /images /misc/data/images # Order allow, denyをお忘れなく AliasMatch ←Aliasの正規表現 Redirect RedirectMatch RedirectPermanent ←301を返す RedirectTemp ←302を返す ScriptAlias ←Aliasのcgi-script版 ScriptAliasMatch
Slide 7
Slide 7 text
(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 特定のユーザだけホームディレクトリを有効にできる
Slide 8
Slide 8 text
(3) mod_rewrite ルールに基づいてURLを書き換える機能を提供する。 RewriteCondで条件式、 RewriteRuleで動作(リライト、リダイレクト)を指定する。 RewriteCond %{HTTP_USER_AGENT} DoCoMo [OR] RewriteCond %{HTTP_USER_AGENT} SoftBank RewriteRule ^/$ /mobile/ [L] 携帯電話からトップページへのアクセスはケータイコンテンツを返す。 使いすぎに注意。ご利用は計画的に。 JMeterでテスト駆動構築がおすすめ。
Slide 9
Slide 9 text
(4) mod_proxy リバースプロキシ、フォワードプロキシを提供する。 リバースプロキシ DMZからTrustへのリクエスト転送に使う。 mod_proxy_balancerを組み合わせると ロードバランスも可能。 フォワードプロキシ TrustからインターネットにGETする場合など。 mod_proxy自体はキャッシュしてくれない。 クライアント mod_proxy httpd httpd
Slide 10
Slide 10 text
(4) mod_proxy (続き) 必要なプロトコルを組み合わせて LoadModule すればおk ● mod_proxy (本体) ○ mod_proxy_http (HTTPプロキシ) ○ mod_proxy_connect (SSL/CONNECTプロキシ) ○ mod_proxy_ftp (FTPプロキシ) ○ mod_proxy_ajp (AJPプロキシ) ● mod_proxy_balancer (ロードバランサ) ProxyPass /ap http://172.16.3.1/ap ProxyPassReverse /ap http://172.16.3.1/ap タイムアウト、フェイルオーバ時間に注意する。 (上位LBを含めた)シーケンス図を書いて整理するとよい。
Slide 11
Slide 11 text
(5) mod_cache RFC2616のコンテンツキャッシュ制御を提供する。 ●mod_disk_cache (ディスクキャッシュ) ●mod_mem_cache (メモリキャッシュ) デフォルトでは、クエリ無しで、レスポンスヘッダに Last-Modified, Expires, ETag のいずれかが付いていればキャッシュする。 リバースプロキシの性能を飛躍的に向上できる。 ただし、キャッシュされる条件、有効期限に注意すべし。
Slide 12
Slide 12 text
ちなみに、mod_file_cache 起動時にファイルをメモリに読み込むことで高速化するモジュール。 mod_cacheとは別物。 2つの方式を選べる。 ●起動時にファイルをmmap()しておく。 ●起動時にファイルのファイルハンドルを開いておく。 キャッシュを更新するにはhttpdの再起動が必要。 Experimentalだし使わない方がいいかも。
Slide 13
Slide 13 text
(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
Slide 14
Slide 14 text
(7) mod_suexec CGIをユーザアカウントで実行する機能を提供する。 例えば、 http://example.com/~int128/index.cgi というリクエストを受けたとき、スクリプトを ●apacheユーザで実行する。 ←suEXEC無効 ●int128ユーザで実行する。 ←suEXEC有効 suEXECありでビルドされたApacheでのみ使える。 ディレクトリやスクリプトのパーミッションがチェックされる。 期待通り動かないときは suexec_log を参照。
Slide 15
Slide 15 text
(8) mod_actions メディアタイプやリクエストメソッドに応じて CGI スクリプトを実行す る機能を提供する。 Action application/x-httpd-php5 /cgi-bin/php.cgi AddHandler application/x-httpd-php5 .php5 *.php5へのリクエストはCGIスクリプトを起動する。 さくらサーバで野良PHPを使うためにActionディレクティブを使った など。
Slide 16
Slide 16 text
(9) mod_speling リクエストURIのスペルミスを訂正して、それっぽいリソースを返し てくれるモジュール。大文字小文字の間違い、1文字の誤りを訂正 する。 CheckSpelling on やってみた。 ●間違ったURLを叩くと、正しいURLにリダイレクトされる。 ●候補が複数ある場合は選択ページ(英語)が表示される。 ●クエリパラメータには効かない。
Slide 17
Slide 17 text
(10) mod_version バージョンに依存する設定を書くためのモジュール。 = 2.2> # Settings for httpd 2.2 or later 正規表現も使える。 # Workaround for httpd 2.2.11~13
Slide 18
Slide 18 text
ご清聴ありがとうございました 一番いいconfigを頼む