http://kure.ssig33.com http://darui.ssig33.com http://nemui.ssig33.com みたいのを沢山作ってコンテンツをそこに置きたい。めんどくさいことはしたくなくて、設定ファイルをいじるのは最初の一回だけにしたい。コンテンツの更新はブラウザ経由でやりたい。置きたいコンテンツは精々静的な HTML 一枚。
そんな需要が僕にはあったので解決してみた。
もともと ssig33.com は Sinatra で作ったアプリで、その前段に nginx がいるという構成になっていた。 nginx の設定は
upstream ssig33.com{
server localhost:9233;
}
server {
listen 80;
root /home/ssig33/dev/site/public;
index index.html index.htm;
server_name ssig33.com;
location / {
proxy_pass http://ssig33.com/;
}
こんな感じだった。というわけでいろいろ調べた結果これ
server {
server_name ~^(?<domain>.+)\.ssig33\.com$;
location ~^(?<pass>.+)$ {
proxy_pass http://ssig33.com/$domain.ssig33.com$pass;
}
}
を加えた。そうすると http://hoge.ssig33.com/huga にアクセスした時に http://ssig33.com/hoge.ssig33.com/huga が表示される。 http://ssig33.com のデータは Web から編集出来るので気楽にサブドメインにコンテンツを配置出来るようになった。面白い。
nginx では sever_name とかはちゃんと書いた奴 -> 正規表現で書いた奴という順序で評価される(っぽい)ので、 text.ssig33.com とかそういう既存の奴の邪魔もしない。
ところで ssig33.com では自宅サーバーで動いていて、自宅内ネットワークでは dnsmasq を使って名前解決していたのだけど、これまで通り hosts ファイルをばらまくだけではどうにもならない。でもちゃんと設定はあって、 dnsmasq.conf に
address=/.ssig33.com/192.168.1.107
とか書いとくと意図した通りに動く(っぽい)。