LoginSignup
2

More than 5 years have passed since last update.

dnsmasqとnginxでバーチャルホストっぽい何か

Posted at

何やるの

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
2