small-package/luci-app-nginx-pingos/modules/nginx-toolkit-module/doc/ngx-event-resolver-module.md

127 lines
2.7 KiB
Markdown

# Module ngx-event-resolver-module
---
## Instructions
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
## Directives
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;
}
## API
**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
## Build
cd to NGINX source directory & run this:
./configure --add-module=/path/to/nginx-toolkit-module/
make && make install
## Example
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"