Webアプリ検証で、ドメインやホスト名を一時的に非公開サーバーに向けてアクセスしたいときがある。 /etc/hostsに設定追加したり、Hostヘッダーを書き換えたりして対処できることも多いが、ここでは別案としてcurlとChromeのコマンドラインオプションで名前解決する方法。
curlの場合
--resolve ドメイン:ポート:IPアドレス
複数のドメイン:ポートを指定するときは「--resolve ドメイン:ポート:IPアドレス」を繰り返す。
$ curl -s --resolve example.com:8000:127.0.0.1 --resolve example.org:8000:127.0.0.1 http://example.com:8000 | grep h1 <h1>Directory listing for /</h1> $ $ curl -s --resolve example.com:8000:127.0.0.1 --resolve example.org:8000:127.0.0.1 http://example.org:8000 | grep h1 <h1>Directory listing for /</h1> $
Chromeの場合
--host-resolver-rules="MAP ドメイン:ポート IPアドレス:ポート"
最初のポートはブラウザからアクセスするときのもの。指定しなければ全ポートのアクセスがIPアドレスで指定したサーバーに行く。 二番目のポートは実際にWebアプリが待ち受けているポート。
複数指定するときは「,」区切りで「MAP ドメイン:ポート IPアドレス:ポート」を繰り返す。
ショートカットを作ると楽。
"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --incognito --user-data-dir=C:\path\to\chrome-profiles\internal-test --host-resolver-rules="MAP example.com:8080 127.0.0.1:8000, MAP *.example.org 127.0.0.1:8000"