<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Screw-Axis &#187; lighttpd</title>
	<atom:link href="http://screw-axis.com/category/tips/lighttpd-tips/feed/" rel="self" type="application/rss+xml" />
	<link>http://screw-axis.com</link>
	<description>flexible, elastic and principled.</description>
	<lastBuildDate>Tue, 31 Jan 2012 02:09:44 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>[lighttpd] ExpireとCompressでサイトを高速化</title>
		<link>http://screw-axis.com/2009/06/06/lighttpd-expire%e3%81%a8compress%e3%81%a7%e3%82%b5%e3%82%a4%e3%83%88%e3%82%92%e9%ab%98%e9%80%9f%e5%8c%96/</link>
		<comments>http://screw-axis.com/2009/06/06/lighttpd-expire%e3%81%a8compress%e3%81%a7%e3%82%b5%e3%82%a4%e3%83%88%e3%82%92%e9%ab%98%e9%80%9f%e5%8c%96/#comments</comments>
		<pubDate>Sat, 06 Jun 2009 09:39:45 +0000</pubDate>
		<dc:creator>nao58</dc:creator>
				<category><![CDATA[lighttpd]]></category>

		<guid isPermaLink="false">http://screw-axis.com/?p=376</guid>
		<description><![CDATA[非常に高速なWebサーバとして注目を集めるlighttpdですが、基本的なチューニングも必要です。 ここでは、「Google Page Speedでサイトを高速化」への補足としてlightyでのExpireヘッダやコンテ [...]
Related posts:<ol>
<li><a href='http://screw-axis.com/2009/05/13/lighttpd%e3%81%a7wordpress%e3%81%aeurl%e3%81%8b%e3%82%89indexphp%e3%82%92%e9%99%a4%e3%81%8f/' rel='bookmark' title='[lighttpd] WordPressのURLからindex.phpを除く'>[lighttpd] WordPressのURLからindex.phpを除く</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><img src="http://farm1.static.flickr.com/183/433235602_0ac069c3c8_m.jpg" alt="Speed of Light" title="Speed of Light" width="240" height="180" class="alignright size-full" />非常に高速なWebサーバとして注目を集めるlighttpdですが、基本的なチューニングも必要です。</p>
<p>ここでは、「<a href="/2009/06/06/web-google-page-speedでサイトを高速化1/">Google Page Speedでサイトを高速化</a>」への補足としてlightyでのExpireヘッダやコンテンツのgzip圧縮の設定方法を書いておきます。<br />
<span id="more-376"></span></p>
<h5>mod_expireを用いてブラウザキャッシュを有効に</h5>
<p>lighttpdで静的コンテンツに対してブラウザキャッシュを有効とするには、mod_expireを使います。<br />
設定方法は非常に簡単ですが、一応。</p>
<p>まず、lighttpd.confでmod_expireを有効にします。</p>
<pre>                                "mod_expire",</pre>
<p>デフォルトでコメントアウトされているはずなので、先頭の「#」を除去してやります。</p>
<p>次に、対象とするファイルの指定と、キャッシュの期限を設定。<br />
同様にlighttpd.confを&#8221;expire&#8221;などで検索すると、次のような行があると思います。</p>
<pre>
#### expire module
#expire.url = ( "/buggy/" => "access 2 hours", "/asdhas/" => "access plus 1 seconds 2 minutes")
</pre>
<p>ここに設定を追加します。<br />
例えば画像フォルダが/img/などに決まっていて、その下にあるファイルは全てキャッシュ対象とするような場合は、次のような記述になります。</p>
<pre>
expire.url = ( "/img/" => "access 1 months" )
</pre>
<p>これは「1ヶ月有効」という意味。&#8221;1 months&#8221;という表現が若干気持ち悪いですが。<br />
或いは、「拡張子が静的コンテンツっぽいものを対象にする」ような場合は、次のように書きます。</p>
<pre>
$HTTP["url"] =~ "\.(js|css|gif|jpg|png|swf|pdf)$" {
  expire.url = ( "" => "access 10 days" )
}
</pre>
<p>設定後、lighttpdを再起動してリロードすると、ヘッダが付くようになっているはずです。</p>
<h5>mod_compressでコンテンツを圧縮</h5>
<p>jsやcssなどのテキストファイルはdeflate圧縮することでネットワークトラフィックを大きく軽減できます。<br />
mod_compressを用いれば、指定したコンテンツを圧縮して保存しておき、UAがAccept-Encodingにgzipやdeflateを持っていればそれを返すようになります。</p>
<p>mod_compressを有効にします。</p>
<pre>                                "mod_compress",</pre>
<p>lighttpd.confのコメントをはずしてやります。</p>
<p>圧縮対象のファイルタイプと、キャッシュの保存ディレクトリを指定します。</p>
<pre>
#### compress module
compress.cache-dir         = "/path/to/cache/dir/"
compress.filetype          = ("text/plain", "text/html", "text/javascript", "text/css")
</pre>
<p>キャッシュディレクトリには当然、書き込み権限が必要です。</p>
<p>ここで若干注意が必要なのは、Virtual Hostを設定している場合。<br />
キャッシュディレクトリにはパスだけを頼りにファイルが置かれるため、<br />
  a.example.com/path/to/file<br />
と<br />
  b.example.com/path/to/file<br />
は、同じキャッシュを共有することになってしまいます。<br />
これを避けるためには、vhosts毎にキャッシュディレクトリを切り分けてやります。</p>
<pre>
$HTTP["host"] == "a.example.com" {
  compress.cache-dir   = "/path/to/cache/dir/a/"
}
$HTTP["host"] == "b.example.com" {
  compress.cache-dir   = "/path/to/cache/dir/b/"
}
</pre>
<p>設定後、lighttpdを再起動してやれば完了です。<br />
FirebugやTamplerDataで流れているものを確認したり、キャッシュディレクトリに然るべきファイルが出来ているかをチェックしてください。</p>
<p>Related posts:<ol>
<li><a href='http://screw-axis.com/2009/05/13/lighttpd%e3%81%a7wordpress%e3%81%aeurl%e3%81%8b%e3%82%89indexphp%e3%82%92%e9%99%a4%e3%81%8f/' rel='bookmark' title='[lighttpd] WordPressのURLからindex.phpを除く'>[lighttpd] WordPressのURLからindex.phpを除く</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://screw-axis.com/2009/06/06/lighttpd-expire%e3%81%a8compress%e3%81%a7%e3%82%b5%e3%82%a4%e3%83%88%e3%82%92%e9%ab%98%e9%80%9f%e5%8c%96/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>[lighttpd] WordPressのURLからindex.phpを除く</title>
		<link>http://screw-axis.com/2009/05/13/lighttpd%e3%81%a7wordpress%e3%81%aeurl%e3%81%8b%e3%82%89indexphp%e3%82%92%e9%99%a4%e3%81%8f/</link>
		<comments>http://screw-axis.com/2009/05/13/lighttpd%e3%81%a7wordpress%e3%81%aeurl%e3%81%8b%e3%82%89indexphp%e3%82%92%e9%99%a4%e3%81%8f/#comments</comments>
		<pubDate>Wed, 13 May 2009 07:13:23 +0000</pubDate>
		<dc:creator>nao58</dc:creator>
				<category><![CDATA[lighttpd]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://screw-axis.com/?p=12</guid>
		<description><![CDATA[lighttpd+WordPressにしてみたのは良いものの、パーマリンクがイマイチ。 というのも、apacheのように.htaccessが置けないため、必然的にURLの&#8221;index.php&#8221;が取 [...]
Related posts:<ol>
<li><a href='http://screw-axis.com/2009/06/06/lighttpd-expire%e3%81%a8compress%e3%81%a7%e3%82%b5%e3%82%a4%e3%83%88%e3%82%92%e9%ab%98%e9%80%9f%e5%8c%96/' rel='bookmark' title='[lighttpd] ExpireとCompressでサイトを高速化'>[lighttpd] ExpireとCompressでサイトを高速化</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>lighttpd+WordPressにしてみたのは良いものの、パーマリンクがイマイチ。</p>
<p>というのも、apacheのように.htaccessが置けないため、必然的にURLの&#8221;index.php&#8221;が取り除けないワケで。</p>
<p>やはり、例えばこのページなら</p>
<p>/index.php/2009/05/13/lighttpd/</p>
<p>ではなく</p>
<p>/2009/05/13/lighttpd/</p>
<p>と、したい。</p>
<p>というわけで、mod_rewriteを使って対応してみたメモ。<br />
<span id="more-12"></span></p>
<h5>WordPressの管理画面で設定を変更</h5>
<p>[設定]→[パーマリンク設定]で、[日付と投稿名]や[月と投稿名]など、使いたい設定を一度選びます。<br />
次に、[カスタム構造]を選びます。テキストエリアには、直前に選んだ設定の書式が入っています。<br />
例えば[日付と投稿名]であれば、次のような感じ。</p>
<pre>
/index.php/%year%/%monthnum%/%day%/%postname%/
</pre>
<p>ここで、先頭のindex.phpを外してしまいたいというのが、今回の目的。<br />
サクッと消してしまいます。</p>
<pre>
/%year%/%monthnum%/%day%/%postname%/
</pre>
<p>そして[変更を保存]。<br />
以前にapacheを使っていたなどの理由で最初からindex.phpが入っていない場合、そのまま保存します。</p>
<p>するとWordPressは、次のような.htaccessを作りにいきます。（これはWordPressの設置場所がドキュメントルートだった場合の設定）</p>
<pre>
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
</pre>
<p>これを、lighttpd用に設定してやれば良いワケです。</p>
<h5>lighttpd.confの設定</h5>
<p>lighttpd.confを開き、まずはmod_rewriteを有効にします。<br />
初期状態でコメントアウトされているので、先頭の「#」を消してやるだけです。</p>
<pre>
server.modules              = (
                                "mod_rewrite",
</pre>
<p>次に、rewriteの設定をします。<br />
先ほどのapache用のrewrite書式は使えませんので、lighty用に書き直す必要があります。<br />
ここで問題なのは、次の2行。</p>
<pre>
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
</pre>
<p>これは「ファイルシステム上に指定されたファイル、ディレクトリが存在しなければ」という条件式なのですが、lightyのmod_rewriteにはこれが存在しないようです。<br />
Luaが入っていればmod_magnetで解決できるのですが、このためにインストールするのはいかにもメンドウ。<br />
ここは、ちょっと強引ですがWordPressならではのルール読み替えで対応してしまいます。<br />
つまり、「第一階層の名前が&#8221;wp-&#8221;で始まっていれば」としてしまうのです。</p>
<p>lighttpd.conf中の次のような箇所を捜します。</p>
<pre>
#### url handling modules (rewrite, redirect, access)
#url.rewrite                = ( "^/$"             => "/server-status" )
#url.redirect               = ( "^/wishlist/(.+)" => "http://www.123.org/$1" )
#### both rewrite/redirect support back reference to regex conditional using %n
</pre>
<p>この下に、次のような記述を追加します。</p>
<pre>
url.rewrite-once = (
  "^/wp-.*" => "$0",
  "^/(.*)" => "/index.php/$1"
)
</pre>
<p>保存して、lighttpdを再起動すれば完了。</p>
<p>ここで例えばsitemap.xmlとsitemap.xml.gzなどを通すようにするならば、正規表現を書き換えてやります。</p>
<pre>
url.rewrite-once = (
  "^/(wp-.*|sitemap\.xml(\.gz)?)$" => "$0",
  "^/(.*)" => "/index.php/$1"
)
</pre>
<p>注意点としては、スラッグなどに&#8221;wp-&#8221;で始まるものを使わないようにすることです。<br />
これが難しいようなら、wp-contentやwp-adminなどを全て指定するか、まじめに<a href="http://redmine.lighttpd.net/wiki/lighttpd/Docs:ModMagnet">mod_magnet</a>などを使いましょう。</p>
<p>Related posts:<ol>
<li><a href='http://screw-axis.com/2009/06/06/lighttpd-expire%e3%81%a8compress%e3%81%a7%e3%82%b5%e3%82%a4%e3%83%88%e3%82%92%e9%ab%98%e9%80%9f%e5%8c%96/' rel='bookmark' title='[lighttpd] ExpireとCompressでサイトを高速化'>[lighttpd] ExpireとCompressでサイトを高速化</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://screw-axis.com/2009/05/13/lighttpd%e3%81%a7wordpress%e3%81%aeurl%e3%81%8b%e3%82%89indexphp%e3%82%92%e9%99%a4%e3%81%8f/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

