例えばワイルドカードなサブドメインで提供しているサービスを開発しているとする。
hosts
ファイルにサクッと *.test-domein.lcl
と書きたいところだが、
hosts
ファイルにはワイルドカードは書けない。
なので、
127.0.0.1 foo.test-domein.lcl
127.0.0.1 bar.test-domein.lcl
127.0.0.1 baz.test-domein.lcl
:
みたいに、ローカルでの動作で使用するすべてのドメイン名を書くはめになる。
これはちょっとめんどうなのでどうにかならないか、ということで調べると dnsmasq
というツールで解決できそうだったので試してみた。
macOS の場合のやり方。
dnsmasq
をインストール。
$ brew install dnsmasq
/etc/resolver
ディレクトリを作成。
$ sudo mkdir -p /etc/resolver
/etc/resolver
以下に、ドメイン名でファイルを作成(最終的に *.test-domein.lcl
としたければ test-domein.lcl
というファイル名で作成)し、
$ sudo vim /etc/resolver/test-domein.lcl
以下のように書いておく。
nameserver 127.0.0.1
対象のドメインの場合のみローカルの DNS を使用するという設定をする。
以下のように書くと、 *.test-domein.lcl
の場合にローカルの DNS を参照するようになる。
$ vim /usr/local/etc/dnsmasq.conf
address=/.test-domein.lcl/127.0.0.1
dnsmasq
を起動。
$ sudo brew services start dnsmasq
これで、 http://foo.test-domain.lcl:8080
などが localhost を指すようになる。