何やるの
dnsmasqでワイルドカードDNS的なことをして、nginxでHTTPリクエストをホスト名から違うポートに転送するバーチャルホストっぽいことをやってみたらとりあえず動いたからメモを残すよ。
どこで動かすの
ubuntu 17.10 でうごいたよ。
どうやるの
- dnsmasqいれて設定するよ
apt-get install dnsmasq
/etc/dnsmasq.confにこんな感じで書くよ
address=/.srv/192.168.1.2
dnsmasqを再起動だ
systemctl restart dnsmasq
これで*.srvにアクセスすると192.168.1.2にアクセスできるようになるよ。
適当なクライアントの端末でdnsmasqを入れたマシンをDNSサーバに設定してpingとかでa.srvとか打って通るか確かめてみたほうがよいかも。
- nginxいれて設定するよ
apt-get install nginx
実はnginxのホームページにnginxのパッケージのリポジトりを追加する方法があったから、先にやらないといけないけど。
/etc/nginx/conf.d/srv.confを作ってこんな感じにかくよ。
server {
listen 80;
server_name dev.srv;
location / {
proxy_pass http://127.0.0.1:8080;
}
}
server{
listen 80;
server_name prod.srv;
location / {
proxy_pass http://127.0.0.1:8081;
}
}
nginxを再起動するよ。
systemctl restart nginx
これでdev.srvにアクセスしたら8080に振り分けられるし、prod.srvにアクセスしたら8081に振り分けられるようになったよ。
- 動かしてみるよ
devとprodサーバを動かすよ。
mkdir dev ; cd $_ && echo dev > index.html && python -m SimpleHTTPServer 8080 &
mkdir prod ; cd $_ && echo prod > index.html && python -m SimpleHTTPServer 8081 &
curlコマンドで振り分けられるか試してみるよ。
$ curl dev.srv
127.0.0.1 - - [11/Nov/2017 01:50:20] "GET / HTTP/1.0" 200 -
dev
$ curl prod.srv
127.0.0.1 - - [11/Nov/2017 01:50:28] "GET / HTTP/1.0" 200 -
prod