Apache勉強(3)

教材:日経Linux 2008/7連載 実践!Webサーバー構築 初めてのApacheモジュール


通信・応答速度を向上させるモジュール
ApacheからWebブラウザに送信するデータを圧縮するモジュール。
デメリット:CPUに負荷がかかる。GIFやJPEGなど既に圧縮されているデータは返ってマイナス効果。
モジュールがインストールされているか確認


# /usr/local/apache2/bin/httpd -M|grep deflate
Syntax OK
deflate_module (shared)

設定前



# telnet localhost 80
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
GET / HTTP/1.1
Host: 127.0.0.1
User-Agent: TEST-Browser
Accept-Encoding: deflate,gzip

HTTP/1.1 200 OK
Date: Sat, 20 Mar 2010 22:45:43 GMT
Server: Apache/2.2.15 (Unix) DAV/2
Last-Modified: Sat, 20 Nov 2004 20:16:24 GMT
ETag: "14ffaa-2c-3e9564c23b600"
Accept-Ranges: bytes
Content-Length: 44
Content-Type: text/html

httpd.conf編集




DeflateCompressionLevel 5

SetOutputFilter DEFLATE


設定後



# telnet localhost 80
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
GET / HTTP/1.1
Host: 127.0.0.1
User-Agent: TEST-Browser
Accept-Encoding: deflate,gzip

HTTP/1.1 200 OK
Date: Sat, 20 Mar 2010 22:49:05 GMT
Server: Apache/2.2.15 (Unix) DAV/2
Last-Modified: Sat, 20 Nov 2004 20:16:24 GMT
ETag: "14ffaa-2c-3e9564c23b600"
Accept-Ranges: bytes
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 55
Content-Type: text/html

コンテンツごとに圧縮するか指定し、圧縮したらログに残す
httpd.conf編集




#圧縮率設定
DeflateCompressionLevel 5

SetOutputFilter DEFLATE
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/5 gzip-only-text/html
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary

DeflateFilterNote Input instream
DeflateFilterNote Output outstream
DeflateFilterNote Ratio ratio
LogFormat '"%r" %{outstream}n/%{instream}n(%{ratio}n%%)%{User-agent}i'deflate
CustomLog logs/deflate_log deflate

ログを確認



# cat /usr/local/apache2/logs/deflate_log
"GET /deflate/ HTTP/1.1" 92/127(72%)Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2) Gecko/20100115 Firefox/3.6 GTBDFff GTB7.0 (.NET CLR 3.5.30729)
"GET /deflate/img/linux-logo.jpg HTTP/1.1" -/-(-%)Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2) Gecko/20100115 Firefox/3.6 GTBDFff GTB7.0 (.NET CLR 3.5.30729)

※プロキシサーバーが介在している場合はVaryヘッダーの追加等の対策が必要

(2)mod_cache
データをApache内のディスクやメモリーにキャッシュする。

追加で
ディスクにキャッシュ → mod_disk_cache
メモリにキャッシュ → mod_mem_cache
が必要

モジュールがインストールされているか確認



# /usr/local/apache2/bin/httpd -M | grep cache
Syntax OK

インストールされていないようなのでDSOを使って組み込み
mod_cacheのDSOインストール



# cd /usr/local/src/httpd-2.2.15/modules/cache/
# /usr/local/apache2/bin/apxs -i -a -c mod_cache.c cache_util.c cache_storage.c

mod_mem_cacheのDSOインストール



# /usr/local/apache2/bin/apxs -i -a -c mod_mem_cache.c cache_cache.c cache_hash.c cache_pqueue.c

mod_disk_cacheのDSOインストール



# /usr/local/apache2/bin/apxs -i -a -c mod_disk_cache.c

設定は記事読むだけで暇なときに実践