Common resovler in event modules, just like http resolver, stream resolver in nginx, but can be used by http modules, stream modules and other modules
Syntax : resolver address ... [valid=time] [ipv6=on|off];
Default : -
Context : events
Configures name servers used to resolve names into addresses, for example:
resolver 127.0.0.1 [::1]:5353;
An address can be specified as a domain name or IP address, and an optional port. If port is not specified, the port 53 is used. Name servers are queried in a round-robin fashion.
By default, nginx will look up both IPv4 and IPv6 addresses while resolving. If looking up of IPv6 addresses is not desired, the ipv6=off parameter can be specified.
By default, nginx caches answers using the TTL value of a response. The optional valid parameter allows overriding it:
resolver 127.0.0.1 [::1]:5353 valid=30s;
Syntax : resolver_timeout time;
Default : resolver_timeout 60s;
Context : events
Sets a timeout for name resolution, for example:
resolver_timeout 5s;
Example:
events {
resolver 192.168.84.254 valid=20s;
resolver_timeout 10s;
}
header file
For using this API, You should include the header file as below:
#include "ngx_event_resolver.h"
resolver a domain
void ngx_event_resolver_start_resolver(ngx_str_t *domain,
ngx_event_resolver_handler_pt h, void *data);
-
return value:
None
-
paras:
- domain: domain for resolving
- h : callback handler
- data : data for callback
h's protype is:
typedef void (* ngx_event_resolver_handler_pt)(void *data,
ngx_resolver_addr_t *addrs, ngx_uint_t naddrs);
-
return value:
None
-
paras:
- data : user private data set in ngx_event_resolver_start_resolver
- addrs : addrs resolv by DNS
- naddrs: number of addrs resolv by DNS
cd to NGINX source directory & run this:
./configure --add-module=/path/to/nginx-toolkit-module/
make && make install
See t/ngx_event_resolver_test_module.c as reference
Build:
./configure --with-debug --add-module=/path/to/nginx-toolkit-module/ --add-module=/path/to/nginx-toolkit-module/t
make && make install
Configure:
events {
resolver 192.168.84.254 114.114.114.114 valid=20s;
resolver_timeout 10s;
}
http {
...
server {
...
location /event_resolver_test/ {
event_resolver_test;
}
}
}
Install bind server
/path/to/nginx-toolkit-module/t/dns_install.sh
modify /var/named/test.com.zone dns ip address to fit your enviroment
Test:
-
add domain for resolving
curl -v "http://127.0.0.1/event_resolver_test/domain?domain=www.test.com"