LoginSignup
11
11

More than 1 year has passed since last update.

nginxで「 no resolver defined to resolve 」エラーに対処する

Last updated at Posted at 2015-05-25

nginxを使っていて、proxy_passなどでIPアドレスではなくホスト名を利用したい場合は、


location / {
    resolver 192.168.0.2 valid=2s;//DNSサーバのIP

のように記載すると、無事ホストからエイリアスを引いてくれます。

AWS上でVPCを構築しており、Route53を利用している場合は、VPCのローカルネットワークアドレスの2番目が固定で設定されているので、「10.xxx.xxx.2」や「172.xxx.xxx.2」など指定すれば、Route53を見てくれます。

nginx_lua_moduleを利用してDBに接続する場合

OpenResty等で、nginx_lua_moduleを利用し外部DBなどに接続する場合のホスト名も同様です。

例えば、AWS上のVPCでプライベートDNSをRoute53で構築している場合、


location / {
   resolver 192.168.0.2 valid=2s;
   local mysql = require "resty.mysql"
   local db, err = mysql:new()
   if not db then
      ngx.exit(ngx.HTTP_SERVICE_UNAVAILABLE)
   end
   local ok, err, errno, sqlstate = db:connect{
      host = "db.hogehoge.local",
         port = 3306,
         database = "aiueo",
         user = "username",
         password = "userpass"
   }

データベースのホストにホスト名を使いたい場合は、resolverディレクティブを指定する必要があります。

resolverで指定する値はIPアドレスである必要があります(多分)。

よろ。

11
11
1

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
  3. You can use dark theme
What you can do with signing up
11
11