Lighttpdで複数ドメイン運用している中でBASIC認証の設定を行う
用途
お客様向けのデモ用サーバで、BASIC認証を使ってパスワード保護してテスト公開をしたい場面が多々ある。
ありがたいことにお客様は複数いて、お客様毎にドメインやID/パスワードの設定がそれぞれに異なる。
apacheの場合には、.htaccessで都度追加すれば良かったのだけど、Lighttpdでは、一括して設定する必要がある。
設定例
apacheの場合、以下のような.htaccessファイルを作成して、必要なディレクトリに設置していた。
AuthType Basic AuthName "Protected Area" AuthUserFile /var/www/.htpasswd
異なるドメインでも、それぞれのドキュメントツリーの中に配置すればそれで解決だった。
Lighttpdの場合、/etc/lighttpd/conf.d/auth.confに以下のように記述する。
$HTTP["host"] == "www.mybenjo.net" { $HTTP["url"] =~ "^/test/hoge" { auth.backend = "htpasswd" auth.backend.htpasswd.userfile = "var/www/.htpasswd" auth.require = ("/test/hoge" => ("method" => "basic", "realm" => "Protected Area", "require" => "valid-user" ) ) } }
hostとurlで2重にチェックを入れる部分がミソ。
また、認証設定を生かすために、/etc/lighttpd/modules.conf も設定する。
server.modules = ( # "mod_access", # "mod_alias", "mod_auth", ← # のコメントアウトを外す # "mod_evasive", # "mod_redirect", # "mod_rewrite", # "mod_setenv", # "mod_usertrack", ) include "conf.d/auth.conf" ← 設定ファイルの記述が無いので追記する
設定後、lighttpdをリスタートすることで動作する、はず。
なお、mod_fastcgiの設定を呼び出す前に記述必要があることに注意が必要。
When loaded together with mod_fastcgi, mod_auth must be loaded before mod_fastcgi. Or else users will experience long delays when login in and sysadmins will probably not find out the source of the problem due to the lack of meaningful error messages.
稼動時の柔軟性はトレードオフか
Lighttpdは、apacheのように、.htaccessで設定を追加することが出来ない。
apacheでも、.htaccessで設定を追加出来ない設定にも出来るのであるが、設定変更の都度、httpd.confと関連するファイルを触るよりは色々と楽だ。
だが、その分だけ負荷が増えているのも事実で、そこに関してはLighttpdの潔いところを認識した方が良いと思う。でも、プロバイダ向けのサーバ用途などには向いていないのも事実なのだと思う。