diff --git a/src/http/modules/ngx_http_uwsgi_module.c b/src/http/modules/ngx_http_uwsgi_module.c
index 8c760ba..c45606e 100644
--- a/src/http/modules/ngx_http_uwsgi_module.c
+++ b/src/http/modules/ngx_http_uwsgi_module.c
@@ -52,7 +52,6 @@
 static void ngx_http_uwsgi_finalize_request(ngx_http_request_t *r,
     ngx_int_t rc);
 
-static ngx_int_t ngx_http_uwsgi_add_variables(ngx_conf_t *cf);
 static void *ngx_http_uwsgi_create_loc_conf(ngx_conf_t *cf);
 static char *ngx_http_uwsgi_merge_loc_conf(ngx_conf_t *cf, void *parent,
     void *child);
@@ -252,7 +251,7 @@
 
 
 static ngx_http_module_t ngx_http_uwsgi_module_ctx = {
-    ngx_http_uwsgi_add_variables,          /* preconfiguration */
+    NULL,                                  /* preconfiguration */
     NULL,                                  /* postconfiguration */
 
     NULL,                                  /* create main configuration */
@@ -282,12 +281,6 @@
 };
 
 
-static ngx_http_variable_t ngx_http_uwsgi_vars[] = {
-
-    { ngx_null_string, NULL, NULL, 0, 0, 0 }
-};
-
-
 static ngx_str_t ngx_http_uwsgi_hide_headers[] = {
     ngx_string("Status"),
     ngx_string("X-Accel-Expires"),
@@ -1063,25 +1056,6 @@
 }
 
 
-static ngx_int_t
-ngx_http_uwsgi_add_variables(ngx_conf_t *cf)
-{
-    ngx_http_variable_t  *var, *v;
-
-    for (v = ngx_http_uwsgi_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;
-}
-
-
 static void *
 ngx_http_uwsgi_create_loc_conf(ngx_conf_t *cf)
 {
