Skip to content

Latest commit

 

History

History
126 lines (75 loc) · 2.68 KB

ngx-event-resolver-module.md

File metadata and controls

126 lines (75 loc) · 2.68 KB

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"