After compiling a test module that sets a variable equal to "test successful", I get a "directive is duplicate in (path to conf file)"
#include <ngx_config.h> #include <ngx_core.h> #include <ngx_http.h> //#include <ngx_log.h> //#include <ngx_conf_file.h> #define MAX_STRING_LEN 256 // static char *ngx_http_netacuity(ngx_conf_t *cf, void *post, void *data); // static ngx_conf_post_handler_pt ngx_http_netacuity_p = ngx_http_netacuity; static void *ngx_http_netacuity_create_conf(ngx_conf_t *cf); static ngx_int_t ngx_http_netacuity_add_variables(ngx_conf_t *cf); static ngx_int_t ngx_http_netacuity_test_variable(ngx_http_request_t *r, ngx_http_variable_value_t *v, uintptr_t data); /** Module configuration struct */ typedef struct { ngx_int_t featureCode; } ngx_http_netacuity_conf_t; /** Initializes memory for module configuration struct */ static void *ngx_http_netacuity_create_conf(ngx_conf_t *cf) { ngx_conf_log_error(NGX_LOG_DEBUG, cf, 0, "HIT FUNCTION ---> ngx_http_netacuity_create_conf"); ngx_http_netacuity_conf_t *conf; conf = ngx_pcalloc(cf->pool, sizeof(ngx_http_netacuity_conf_t)); if(conf == NULL) { return NULL; } conf->featureCode = NGX_CONF_UNSET_UINT; return conf; } /** Module directive array, which holds a subarray for each module directive */ static ngx_command_t ngx_http_netacuity_commands[] = { { ngx_string("testAPI"), NGX_HTTP_MAIN_CONF|NGX_CONF_TAKE1, ngx_conf_set_num_slot, NGX_HTTP_MAIN_CONF_OFFSET, offsetof(ngx_http_netacuity_conf_t, featureCode), NULL }, ngx_null_command }; /** The module context, which has hooks for creating the configuration */ static ngx_http_module_t ngx_http_netacuity_module_ctx = { ngx_http_netacuity_add_variables, //preconfiguration NULL, //postconfiguration ngx_http_netacuity_create_conf, //create main configuration NULL, //init main configuration NULL, //create server configuration NULL, //merge server configuration NULL, //create location configuration NULL //merge location configuration }; /** The module which binds the context and commands */ ngx_module_t ngx_http_netacuity_module = { NGX_MODULE_V1, &ngx_http_netacuity_module_ctx, //module context ngx_http_netacuity_commands, //module directives NGX_HTTP_MODULE, //module type NULL, //init master NULL, //init module NULL, //init process NULL, //init thread NULL, //exit thread NULL, //exit process NULL, //exit master NGX_MODULE_V1_PADDING }; /** Holds all the API Variables that the user can call upon */ static ngx_http_variable_t ngx_http_netacuity_vars[] = { { ngx_string("testVar"), NULL, ngx_http_netacuity_test_variable, MAX_STRING_LEN, 0, 0 }, { ngx_null_string, NULL, NULL, 0, 0, 0 } }; /** Called during preconfiguration - adds variables for use */ static ngx_int_t ngx_http_netacuity_add_variables(ngx_conf_t *cf) { ngx_conf_log_error(NGX_LOG_DEBUG, cf, 0, "HIT FUNCTION ---> ngx_http_netacuity_add_variables"); ngx_http_variable_t *var, *v; for(v = ngx_http_netacuity_vars; v->name.len; v++) { var = ngx_http_add_variable(cf, &v->name, v->flags); if(var == NULL) { return NGX_ERROR; } var->get_handler = v->get_handler; var->data = v->data; } return NGX_OK; } /** Get handlers for variables */ static ngx_int_t ngx_http_netacuity_test_variable(ngx_http_request_t *r, ngx_http_variable_value_t *v, uintptr_t data) { ngx_log_error(NGX_LOG_DEBUG, (r->connection)->log, 0, "HIT FUNCTION ---> ngx_http_netacuity_test_variable"); size_t len; char *val; ngx_http_netacuity_conf_t *nac; nac = ngx_http_get_module_main_conf(r, ngx_http_netacuity_module); if(nac->featureCode == 0) { goto not_found; } val = "test successful"; if(val == NULL) { goto not_found; } len = ngx_strlen(val); v->data = ngx_pnalloc(r->pool, len); if(v->data == NULL) { //ngx_free(val); return NGX_ERROR; } ngx_memcpy(v->data, val, len); v->len = len; v->valid = 1; v->no_cacheable = 0; v->not_found = 0; //ngx_free(val); return NGX_OK; not_found: v->not_found = 1; return NGX_OK; } Can someone explain what's going on? I tried googling the error, but found nothing useful. This is my conf file : worker_process 1; events { worker_connections 1024; } http { include mine.types; default_type application/octet-stream; log_format main ‘$remote_addr’; testAPI 7; access_log logs/access.log main; sendfile on; keepalive_timeout 65; server { listen 80; server_name localhost; location / { root html; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } } Posted at Nginx Forum: https://forum.nginx.org/read.php?2,262425,262425#msg-262425 _______________________________________________ nginx mailing list nginx@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx