
lighttpdで特定ファイルへのアクセスを禁止して404エラーを出すようにする

このサイトでも使っているBluditの公式Dockerイメージが更新されないし、もともとCentOSで作ってあってサイズが大きく、コンテナ内でsupervisorを使ってnginxとphp-fpmを動かす、あまりよろしくない仕様だったので自分でBluditのDockerイメージを作りました。こちら(Dockerfile)で公開しています。
このDockerイメージ、サイズが小さくなった上にlighttpdとFastCGIで爆速になってます。
もともとのDebianパッケージがよくできているのもあるのですが、ほとんど何もせずに爆速になってて良いです。なにもしなくてもPagespeed Insightでも100点近く出ます。
外部からライブラリを読み込まなければ…。
いや、外部からCSSフレームワークやWebフォントを読み込こむと、いきなり50点台や40点台になるのはねぇ。あと、Bludit 3.13.1だとwebpに画像アップロードが対応してないので、それで点数をガクっと下げられるのもねぇ。理由は分かるけど減点幅が大きすぎませんか。Googleさん。
グチはさておき、小さくて速くなっていい感じなので使おうかと思っていましたが、次のページに移動できないバグが発覚して改修しています。
そのバグ自体は、rewriteルールの間違いですぐに直りましたが、いい機会なのでlighttpdの設定自体を見直してます。
その見直しで「lighttpdのアクセス禁止はurl.access-deny
でできるけど、アクセス禁止にして404エラーに飛ばすにはどうしたらいいのだろう」と思って調べたらlighttpdのバグトラックに書いてあったのでメモです。
$HTTP["url"] =~ "/tmp/.*\.php$" {
url.access-deny = ( "" )
server.error-handler-404 = "/tmp/"
}
なるほどね。url.access-deny
で禁止にしてその後にserver.error-handler-404
にしてあげればOKということか。そのまんまだ。