webサーバ勉強会 #60~#76

18
Web ササササササ #60 #76 @int128 サササササ ()

Upload: hidetake-iwata

Post on 27-May-2015

993 views

Category:

Technology


0 download

DESCRIPTION

Webサーバ勉強会の発表資料 http://atnd.org/events/9124

TRANSCRIPT

Page 1: Webサーバ勉強会 #60~#76

Web サーバ勉強会#60 ~ #76

@int128 (いわてぃ)

Page 2: Webサーバ勉強会 #60~#76

Introduction

@int128http://d.hatena.ne.jp/int128/

ソフトウェア & インフラエンジニア大きな SI 屋で働いています。 自宅サーバが好きです。最近、インフラ設計書を公開しました。

Page 3: Webサーバ勉強会 #60~#76

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 秒

Page 4: Webサーバ勉強会 #60~#76

大丈夫だ、問題ない

Page 5: Webサーバ勉強会 #60~#76

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

Page 6: Webサーバ勉強会 #60~#76

(1) mod_alias

ドキュメントツリーにファイルシステムをマップする。

    Alias    /images        /misc/data/images    # Order allow, deny をお忘れなく

AliasMatch                ←Alias の正規表現 Redirect RedirectMatch RedirectPermanent    ←301 を返す RedirectTemp            ←302 を返す ScriptAlias                ←Alias の cgi-script 版 ScriptAliasMatch

Page 7: Webサーバ勉強会 #60~#76

(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 特定のユーザだけホームディレクトリを有効にできる

Page 8: Webサーバ勉強会 #60~#76

(3) mod_rewrite

ルールに基づいて URL を書き換える機能を提供する。 RewriteCond で条件式、RewriteRule で動作(リライト、リダイレクト)を指定する。

    RewriteCond   %{HTTP_USER_AGENT}      DoCoMo    [OR]    RewriteCond   %{HTTP_USER_AGENT}      SoftBank    RewriteRule    ^/$    /mobile/    [L] 携帯電話からトップページへのアクセスはケータイコンテンツを返す。

使いすぎに注意。ご利用は計画的に。JMeter でテスト駆動構築がおすすめ。

Page 9: Webサーバ勉強会 #60~#76

(4) mod_proxy

リバースプロキシ、フォワードプロキシを提供する。

リバースプロキシDMZ から Trust へのリクエスト転送に使う。mod_proxy_balancer を組み合わせるとロードバランスも可能。

フォワードプロキシTrust からインターネットに GET する場合など。mod_proxy 自体はキャッシュしてくれない。

Page 10: Webサーバ勉強会 #60~#76

(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 を含めた)シーケンス図を書いて整理するとよい。

Page 11: Webサーバ勉強会 #60~#76

(5) mod_cache

RFC2616 のコンテンツキャッシュ制御を提供する。

• mod_disk_cache  (ディスクキャッシュ)• mod_mem_cache  (メモリキャッシュ)

デフォルトでは、クエリ無しで、レスポンスヘッダに Last-Modified, Expires, ETag のいずれかが付いていればキャッシュする。

リバースプロキシの性能を飛躍的に向上できる。ただし、キャッシュされる条件、有効期限に注意すべし。

Page 12: Webサーバ勉強会 #60~#76

ちなみに、 mod_file_cache

起動時にファイルをメモリに読み込むことで高速化するモジュール。 mod_cache とは別物。

2 つの方式を選べる。• 起動時にファイルを mmap() しておく。• 起動時にファイルのファイルハンドルを開いておく。

キャッシュを更新するには httpd の再起動が必要。Experimental だし使わない方がいいかも。

Page 13: Webサーバ勉強会 #60~#76

(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

Page 14: Webサーバ勉強会 #60~#76

(7) mod_suexec

CGI をユーザアカウントで実行する機能を提供する。 例えば、    http://example.com/~int128/index.cgiというリクエストを受けたとき、スクリプトを• apache ユーザで実行する。 ← suEXEC 無効• int128 ユーザで実行する。 ← suEXEC 有効

suEXEC ありでビルドされた Apache でのみ使える。ディレクトリやスクリプトのパーミッションがチェックされる。期待通り動かないときは suexec_log を参照。

Page 15: Webサーバ勉強会 #60~#76

(8) mod_actions

メディアタイプやリクエストメソッドに応じて CGI スクリプトを実行する機能を提供する。

    Action           application/x-httpd-php5    /cgi-bin/php.cgi    AddHandler  application/x-httpd-php5    .php5 *.php5 へのリクエストは CGI スクリプトを起動する。

さくらサーバで野良 PHP を使うために Action ディレクティブを使ったなど。

Page 16: Webサーバ勉強会 #60~#76

(9) mod_speling

リクエスト URI のスペルミスを訂正して、それっぽいリソースを返してくれるモジュール。大文字小文字の間違い、 1 文字の誤りを訂正する。     CheckSpelling on やってみた。 • 間違った URL を叩くと、正しい URL にリダイレクトされ

る。• 候補が複数ある場合は選択ページ(英語)が表示される。• クエリパラメータには効かない。

Page 17: Webサーバ勉強会 #60~#76

(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>

Page 18: Webサーバ勉強会 #60~#76

ご清聴ありがとうございました

一番いい config を頼む