proxy_passを使用する場合、resolverの代わりに/ etc/hostsを使用できますか?
同じnginxマシンに対してproxy_passを実行する必要があります。 「resolver」プロパティを介してDNSサーバーを指定する代わりに、マシンの/ etc/hostsファイルを使用してドメインを解決する方法はありますか?
これにより、同じサーバーに到達するために必要な追加のホップを節約できます。/etc/hostsファイルでDNSにマップされた内部IPを設定しようとしましたが、nginxはresolverプロパティで設定されたDNSサーバーからまだ読み取りを行っています。または、HTTPProxyモジュールに/ etc/hostsファイルの設定を考慮させる方法はありますか?
あなたが共有できるアドバイスをありがとう。
これは私がnginxフォーラムに投稿したのと同じ質問です: http://forum.nginx.org/read.php?11,218997
これを回避するには、dnsmasq
をインストールし、リゾルバーを127.0.0.1
に設定します。基本的に、これはローカルDNSをリゾルバーとして使用しますが、それが知っていることだけを解決し(その中には、/etc/hosts
があります)、残りをデフォルトのDNSに転送します。
回避策は、/etc/hosts
コンテンツをコピーするためにNginxマップを使用することです。
map $wanted_Host $wanted_Host_ip
{
default 127.0.0.1;
b.dev.local X.X.X.X;
a.dev.local X.X.X.X;
}
server
{
listen 80;
server_name ~^(?P<wanted_port>[0-9]+?)-(?P<wanted_Host>.+?)\.HOSTNAME$;
location /
{
proxy_pass http://$wanted_Host_ip:$wanted_port;
}
}
これにより、リゾルバーのようにwanted_Host
がwanted_Host_ip
にマップされます。