diff --git a/include/proto/proxy.h b/include/proto/proxy.h
index cb86159..d4a34a5 100644
--- a/include/proto/proxy.h
+++ b/include/proto/proxy.h
@@ -31,7 +31,7 @@
 #include <types/listener.h>
 #include <proto/freq_ctr.h>
 
-extern struct proxy *proxy;
+extern struct proxy *proxies_list;
 extern struct eb_root used_proxy_id;	/* list of proxy IDs in use */
 extern unsigned int error_snapshot_id;  /* global ID assigned to each error then incremented */
 extern struct eb_root proxy_by_name;    /* tree of proxies sorted by name */
diff --git a/src/cache.c b/src/cache.c
index 97861d7..ae345a1 100644
--- a/src/cache.c
+++ b/src/cache.c
@@ -840,7 +840,7 @@
 	int err = 0;
 	struct flt_conf *fconf;
 
-	for (curproxy = proxy; curproxy; curproxy = curproxy->next) {
+	for (curproxy = proxies_list; curproxy; curproxy = curproxy->next) {
 
 		/* resolve the http response cache name to a ptr in the action rule */
 		list_for_each_entry(hresrule, &curproxy->http_res_rules, list) {
diff --git a/src/cfgparse.c b/src/cfgparse.c
index 685fbe9..f66f416 100644
--- a/src/cfgparse.c
+++ b/src/cfgparse.c
@@ -2747,8 +2747,8 @@
 		}
 
 		init_new_proxy(curproxy);
-		curproxy->next = proxy;
-		proxy = curproxy;
+		curproxy->next = proxies_list;
+		proxies_list = curproxy;
 		curproxy->conf.args.file = curproxy->conf.file = strdup(file);
 		curproxy->conf.args.line = curproxy->conf.line = linenum;
 		curproxy->last_change = now.tv_sec;
@@ -7546,18 +7546,18 @@
 
 	/* first, we will invert the proxy list order */
 	curproxy = NULL;
-	while (proxy) {
+	while (proxies_list) {
 		struct proxy *next;
 
-		next = proxy->next;
-		proxy->next = curproxy;
-		curproxy = proxy;
+		next = proxies_list->next;
+		proxies_list->next = curproxy;
+		curproxy = proxies_list;
 		if (!next)
 			break;
-		proxy = next;
+		proxies_list = next;
 	}
 
-	for (curproxy = proxy; curproxy; curproxy = curproxy->next) {
+	for (curproxy = proxies_list; curproxy; curproxy = curproxy->next) {
 		struct switching_rule *rule;
 		struct server_rule *srule;
 		struct sticking_rule *mrule;
@@ -8819,7 +8819,7 @@
 	}
 
 	/* Make each frontend inherit bind-process from its listeners when not specified. */
-	for (curproxy = proxy; curproxy; curproxy = curproxy->next) {
+	for (curproxy = proxies_list; curproxy; curproxy = curproxy->next) {
 		if (curproxy->bind_proc)
 			continue;
 
@@ -8849,14 +8849,14 @@
 	 * are any fatal errors as we must not call it with unresolved proxies.
 	 */
 	if (!cfgerr) {
-		for (curproxy = proxy; curproxy; curproxy = curproxy->next) {
+		for (curproxy = proxies_list; curproxy; curproxy = curproxy->next) {
 			if (curproxy->cap & PR_CAP_FE)
 				propagate_processes(curproxy, NULL);
 		}
 	}
 
 	/* Bind each unbound backend to all processes when not specified. */
-	for (curproxy = proxy; curproxy; curproxy = curproxy->next) {
+	for (curproxy = proxies_list; curproxy; curproxy = curproxy->next) {
 		if (curproxy->bind_proc)
 			continue;
 		curproxy->bind_proc = nbits(global.nbproc);
@@ -8868,7 +8868,7 @@
 
 	/* perform the final checks before creating tasks */
 
-	for (curproxy = proxy; curproxy; curproxy = curproxy->next) {
+	for (curproxy = proxies_list; curproxy; curproxy = curproxy->next) {
 		struct listener *listener;
 		unsigned int next_id;
 
@@ -9000,7 +9000,7 @@
 	/* automatically compute fullconn if not set. We must not do it in the
 	 * loop above because cross-references are not yet fully resolved.
 	 */
-	for (curproxy = proxy; curproxy; curproxy = curproxy->next) {
+	for (curproxy = proxies_list; curproxy; curproxy = curproxy->next) {
 		/* If <fullconn> is not set, let's set it to 10% of the sum of
 		 * the possible incoming frontend's maxconns.
 		 */
@@ -9019,7 +9019,7 @@
 	 * Recount currently required checks.
 	 */
 
-	for (curproxy=proxy; curproxy; curproxy=curproxy->next) {
+	for (curproxy=proxies_list; curproxy; curproxy=curproxy->next) {
 		int optnum;
 
 		for (optnum = 0; cfg_opts[optnum].name; optnum++)
@@ -9032,7 +9032,7 @@
 	}
 
 	/* compute the required process bindings for the peers */
-	for (curproxy = proxy; curproxy; curproxy = curproxy->next)
+	for (curproxy = proxies_list; curproxy; curproxy = curproxy->next)
 		if (curproxy->table.peers.p)
 			curproxy->table.peers.p->peers_fe->bind_proc |= curproxy->bind_proc;
 
@@ -9099,7 +9099,7 @@
 	 * be done earlier because the data size may be discovered while parsing
 	 * other proxies.
 	 */
-	for (curproxy = proxy; curproxy; curproxy = curproxy->next) {
+	for (curproxy = proxies_list; curproxy; curproxy = curproxy->next) {
 		if (curproxy->state == PR_STSTOPPED)
 			continue;
 
@@ -9147,7 +9147,7 @@
 
 	/* Update server_state_file_name to backend name if backend is supposed to use
 	 * a server-state file locally defined and none has been provided */
-	for (curproxy = proxy; curproxy; curproxy = curproxy->next) {
+	for (curproxy = proxies_list; curproxy; curproxy = curproxy->next) {
 		if (curproxy->load_server_state_from_file == PR_SRV_STATE_FILE_LOCAL &&
 		    curproxy->server_state_file_name == NULL)
 			curproxy->server_state_file_name = strdup(curproxy->id);
diff --git a/src/checks.c b/src/checks.c
index dc970e0..4aef54e 100644
--- a/src/checks.c
+++ b/src/checks.c
@@ -2332,7 +2332,7 @@
 	 * a shorter interval will start independently and will not dictate
 	 * too short an interval for all others.
 	 */
-	for (px = proxy; px; px = px->next) {
+	for (px = proxies_list; px; px = px->next) {
 		for (s = px->srv; s; s = s->next) {
 			if (s->slowstart) {
 				if ((t = task_new(MAX_THREADS_MASK)) == NULL) {
@@ -2376,7 +2376,7 @@
 	 * start them after their interval set to the min interval divided by
 	 * the number of servers, weighted by the server's position in the list.
 	 */
-	for (px = proxy; px; px = px->next) {
+	for (px = proxies_list; px; px = px->next) {
 		if ((px->options2 & PR_O2_CHK_ANY) == PR_O2_EXT_CHK) {
 			if (init_pid_list()) {
 				ha_alert("Starting [%s] check: out of memory.\n", px->id);
diff --git a/src/cli.c b/src/cli.c
index 3d88780..149ecd7 100644
--- a/src/cli.c
+++ b/src/cli.c
@@ -170,8 +170,8 @@
 		return NULL;
 
 	init_new_proxy(fe);
-	fe->next = proxy;
-	proxy = fe;
+	fe->next = proxies_list;
+	proxies_list = fe;
 	fe->last_change = now.tv_sec;
 	fe->id = strdup("GLOBAL");
 	fe->cap = PR_CAP_FE;
@@ -1276,7 +1276,7 @@
 	 * First, calculates the total number of FD, so that we can let
 	 * the caller know how much he should expects.
 	 */
-	px = proxy;
+	px = proxies_list;
 	while (px) {
 		struct listener *l;
 
@@ -1313,7 +1313,7 @@
 	cmsg->cmsg_type = SCM_RIGHTS;
 	tmpfd = (int *)CMSG_DATA(cmsg);
 
-	px = proxy;
+	px = proxies_list;
 	/* For each socket, e message is sent, containing the following :
 	 *  Size of the namespace name (or 0 if none), as an unsigned char.
 	 *  The namespace name, if any
diff --git a/src/dns.c b/src/dns.c
index a83c8aa..8db8290 100644
--- a/src/dns.c
+++ b/src/dns.c
@@ -1897,7 +1897,7 @@
 		task_wakeup(t, TASK_WOKEN_INIT);
 	}
 
-	for (px = proxy; px; px = px->next) {
+	for (px = proxies_list; px; px = px->next) {
 		struct server *srv;
 
 		for (srv = px->srv; srv; srv = srv->next) {
diff --git a/src/filters.c b/src/filters.c
index bf188b5..e9982ca 100644
--- a/src/filters.c
+++ b/src/filters.c
@@ -288,7 +288,7 @@
 	struct proxy *px;
 	int err_code = 0;
 
-	for (px = proxy; px; px = px->next) {
+	for (px = proxies_list; px; px = px->next) {
 		err_code |= flt_init(px);
 		if (err_code & (ERR_ABORT|ERR_FATAL)) {
 			ha_alert("Failed to initialize filters for proxy '%s'.\n",
@@ -307,7 +307,7 @@
 	struct proxy *px;
 	int err_code = 0;
 
-	for (px = proxy; px; px = px->next) {
+	for (px = proxies_list; px; px = px->next) {
 		err_code = flt_init_per_thread(px);
 		if (err_code & (ERR_ABORT|ERR_FATAL)) {
 			ha_alert("Failed to initialize filters for proxy '%s' for thread %u.\n",
@@ -376,7 +376,7 @@
 {
 	struct proxy *px;
 
-	for (px = proxy; px; px = px->next)
+	for (px = proxies_list; px; px = px->next)
 		flt_deinit_per_thread(px);
 }
 
diff --git a/src/flt_spoe.c b/src/flt_spoe.c
index 717715a..b653109 100644
--- a/src/flt_spoe.c
+++ b/src/flt_spoe.c
@@ -2796,7 +2796,7 @@
 {
 	struct proxy *p;
 
-	p = proxy;
+	p = proxies_list;
 	while (p) {
 		struct flt_conf *fconf;
 
diff --git a/src/haproxy.c b/src/haproxy.c
index 18d2cbf..219a8ea 100644
--- a/src/haproxy.c
+++ b/src/haproxy.c
@@ -555,7 +555,7 @@
 	struct listener *l, *l_next;
 	struct proxy *curproxy;
 
-	for (curproxy = proxy; curproxy; curproxy = curproxy->next) {
+	for (curproxy = proxies_list; curproxy; curproxy = curproxy->next) {
 
 		list_for_each_entry_safe(l, l_next, &curproxy->conf.listeners, by_fe) {
 			/* does not close if the FD is inherited with fd@
@@ -821,7 +821,7 @@
  */
 static void sig_dump_state(struct sig_handler *sh)
 {
-	struct proxy *p = proxy;
+	struct proxy *p = proxies_list;
 
 	ha_warning("SIGHUP received, dumping servers states.\n");
 	while (p) {
@@ -1540,7 +1540,7 @@
 	/* Apply server states */
 	apply_server_state();
 
-	for (px = proxy; px; px = px->next)
+	for (px = proxies_list; px; px = px->next)
 		srv_compute_all_admin_states(px);
 
 	/* Apply servers' configured address */
@@ -1558,7 +1558,7 @@
 			if (pr->peers_fe)
 				break;
 
-		for (px = proxy; px; px = px->next)
+		for (px = proxies_list; px; px = px->next)
 			if (px->state == PR_STNEW && !LIST_ISEMPTY(&px->conf.listeners))
 				break;
 
@@ -1745,7 +1745,7 @@
 		struct proxy *cur;
 		int nbfe = 0, nbbe = 0;
 
-		for (cur = proxy; cur; cur = cur->next) {
+		for (cur = proxies_list; cur; cur = cur->next) {
 			if (cur->options2 & (PR_O2_SPLIC_ANY)) {
 				if (cur->cap & PR_CAP_FE)
 					nbfe += cur->maxconn;
@@ -1926,7 +1926,7 @@
 
 void deinit(void)
 {
-	struct proxy *p = proxy, *p0;
+	struct proxy *p = proxies_list, *p0;
 	struct cap_hdr *h,*h_next;
 	struct server *s,*s_next;
 	struct listener *l,*l_next;
@@ -2823,7 +2823,7 @@
 		}
 
 		/* we might have to unbind some proxies from some processes */
-		px = proxy;
+		px = proxies_list;
 		while (px != NULL) {
 			if (px->bind_proc && px->state != PR_STSTOPPED) {
 				if (!(px->bind_proc & (1UL << proc))) {
diff --git a/src/hlua_fcn.c b/src/hlua_fcn.c
index 54fbfa7..a8d53d4 100644
--- a/src/hlua_fcn.c
+++ b/src/hlua_fcn.c
@@ -943,7 +943,7 @@
 	lua_newtable(L);
 
 	/* List all proxies. */
-	for (px = proxy; px; px = px->next) {
+	for (px = proxies_list; px; px = px->next) {
 		lua_pushstring(L, px->id);
 		hlua_fcn_new_proxy(L, px);
 		lua_settable(L, -3);
@@ -957,7 +957,7 @@
 	lua_newtable(L);
 
 	/* List all proxies. */
-	for (px = proxy; px; px = px->next) {
+	for (px = proxies_list; px; px = px->next) {
 		if (!(px->cap & PR_CAP_FE))
 			continue;
 		lua_pushstring(L, px->id);
@@ -973,7 +973,7 @@
 	lua_newtable(L);
 
 	/* List all proxies. */
-	for (px = proxy; px; px = px->next) {
+	for (px = proxies_list; px; px = px->next) {
 		if (!(px->cap & PR_CAP_BE))
 			continue;
 		lua_pushstring(L, px->id);
diff --git a/src/proto_http.c b/src/proto_http.c
index 21e30cc..88a2de9 100644
--- a/src/proto_http.c
+++ b/src/proto_http.c
@@ -9184,7 +9184,7 @@
 		}
 		else if (strcmp(args[cur_arg], "if") == 0 ||
 			 strcmp(args[cur_arg], "unless") == 0) {
-			cond = build_acl_cond(file, linenum, &proxy->acl, curproxy, (const char **)args + cur_arg, errmsg);
+			cond = build_acl_cond(file, linenum, &curproxy->acl, curproxy, (const char **)args + cur_arg, errmsg);
 			if (!cond) {
 				memprintf(errmsg, "error in condition: %s", *errmsg);
 				return NULL;
@@ -11873,9 +11873,9 @@
 	}
 
 	LIST_INIT(&rule->arg.http.logfmt);
-	proxy->conf.args.ctx = ARGC_HRQ;
-	if (!parse_logformat_string(args[cur_arg], proxy, &rule->arg.http.logfmt, LOG_OPT_HTTP,
-	                            (proxy->cap & PR_CAP_FE) ? SMP_VAL_FE_HRQ_HDR : SMP_VAL_BE_HRQ_HDR, err)) {
+	px->conf.args.ctx = ARGC_HRQ;
+	if (!parse_logformat_string(args[cur_arg], px, &rule->arg.http.logfmt, LOG_OPT_HTTP,
+	                            (px->cap & PR_CAP_FE) ? SMP_VAL_FE_HRQ_HDR : SMP_VAL_BE_HRQ_HDR, err)) {
 		return ACT_RET_PRS_ERR;
 	}
 
@@ -12102,7 +12102,7 @@
 			return ACT_RET_PRS_ERR;
 		}
 
-		proxy->conf.args.ctx = ARGC_CAP;
+		px->conf.args.ctx = ARGC_CAP;
 
 		if (!args[cur_arg]) {
 			memprintf(err, "missing length value");
@@ -12162,7 +12162,7 @@
 		}
 		cur_arg++;
 
-		proxy->conf.args.ctx = ARGC_CAP;
+		px->conf.args.ctx = ARGC_CAP;
 
 		rule->action       = ACT_CUSTOM;
 		rule->action_ptr   = http_action_req_capture_by_id;
@@ -12302,7 +12302,7 @@
 	}
 	cur_arg++;
 
-	proxy->conf.args.ctx = ARGC_CAP;
+	px->conf.args.ctx = ARGC_CAP;
 
 	rule->action       = ACT_CUSTOM;
 	rule->action_ptr   = http_action_res_capture_by_id;
@@ -12399,7 +12399,7 @@
 			return 0;
 		}
 
-		appctx->ctx.errors.px = proxy;
+		appctx->ctx.errors.px = proxies_list;
 		appctx->ctx.errors.bol = 0;
 		appctx->ctx.errors.ptr = -1;
 	}
diff --git a/src/proto_tcp.c b/src/proto_tcp.c
index 1f9c3f1..857ebe1 100644
--- a/src/proto_tcp.c
+++ b/src/proto_tcp.c
@@ -1398,9 +1398,9 @@
 		return ACT_RET_PRS_ERR;
 
 	where = 0;
-	if (proxy->cap & PR_CAP_FE)
+	if (px->cap & PR_CAP_FE)
 		where |= SMP_VAL_FE_HRQ_HDR;
-	if (proxy->cap & PR_CAP_BE)
+	if (px->cap & PR_CAP_BE)
 		where |= SMP_VAL_BE_HRQ_HDR;
 
 	if (!(expr->fetch->val & where)) {
diff --git a/src/proxy.c b/src/proxy.c
index 1730ba4..8500bcc 100644
--- a/src/proxy.c
+++ b/src/proxy.c
@@ -54,7 +54,7 @@
 
 
 int listeners;	/* # of proxy listeners, set by cfgparse */
-struct proxy *proxy  = NULL;	/* list of all existing proxies */
+struct proxy *proxies_list  = NULL;	/* list of all existing proxies */
 struct eb_root used_proxy_id = EB_ROOT;	/* list of proxy IDs in use */
 struct eb_root proxy_by_name = EB_ROOT; /* tree of proxies sorted by name */
 unsigned int error_snapshot_id = 0;     /* global ID assigned to each error then incremented */
@@ -783,7 +783,7 @@
 	int pxerr;
 	char msg[100];
 
-	for (curproxy = proxy; curproxy != NULL; curproxy = curproxy->next) {
+	for (curproxy = proxies_list; curproxy != NULL; curproxy = curproxy->next) {
 		if (curproxy->state != PR_STNEW)
 			continue; /* already initialized */
 
@@ -949,7 +949,7 @@
 
 	ha_warning("soft-stop running for too long, performing a hard-stop.\n");
 	send_log(NULL, LOG_WARNING, "soft-stop running for too long, performing a hard-stop.\n");
-	p = proxy;
+	p = proxies_list;
 	while (p) {
 		if ((p->cap & PR_CAP_FE) && (p->feconn > 0)) {
 			ha_warning("Proxy %s hard-stopped (%d remaining conns will be closed).\n",
@@ -990,7 +990,7 @@
 			ha_alert("out of memory trying to allocate the hard-stop task.\n");
 		}
 	}
-	p = proxy;
+	p = proxies_list;
 	tv_update_date(0,1); /* else, the old time before select will be used */
 	while (p) {
 		/* Zombie proxy, let's close the file descriptors */
@@ -1186,7 +1186,7 @@
 	struct peers *prs;
 
 	err = 0;
-	p = proxy;
+	p = proxies_list;
 	tv_update_date(0,1); /* else, the old time before select will be used */
 	while (p) {
 		err |= !pause_proxy(p);
@@ -1220,7 +1220,7 @@
 	struct peers *prs;
 
 	err = 0;
-	p = proxy;
+	p = proxies_list;
 	tv_update_date(0,1); /* else, the old time before select will be used */
 	while (p) {
 		err |= !resume_proxy(p);
@@ -1482,14 +1482,13 @@
 static int cli_io_handler_servers_state(struct appctx *appctx)
 {
 	struct stream_interface *si = appctx->owner;
-	extern struct proxy *proxy;
 	struct proxy *curproxy;
 
 	chunk_reset(&trash);
 
 	if (appctx->st2 == STAT_ST_INIT) {
 		if (!appctx->ctx.cli.p0)
-			appctx->ctx.cli.p0 = proxy;
+			appctx->ctx.cli.p0 = proxies_list;
 		appctx->st2 = STAT_ST_HEAD;
 	}
 
@@ -1523,7 +1522,6 @@
  */
 static int cli_io_handler_show_backend(struct appctx *appctx)
 {
-	extern struct proxy *proxy;
 	struct stream_interface *si = appctx->owner;
 	struct proxy *curproxy;
 
@@ -1535,7 +1533,7 @@
 			si_applet_cant_put(si);
 			return 0;
 		}
-		appctx->ctx.cli.p0 = proxy;
+		appctx->ctx.cli.p0 = proxies_list;
 	}
 
 	for (; appctx->ctx.cli.p0 != NULL; appctx->ctx.cli.p0 = curproxy->next) {
diff --git a/src/server.c b/src/server.c
index 62fc59e..9b4d66f 100644
--- a/src/server.c
+++ b/src/server.c
@@ -2953,7 +2953,6 @@
 	char globalfilepath[MAXPATHLEN + 1];
 	char localfilepath[MAXPATHLEN + 1];
 	int len, fileopenerr, globalfilepathlen, localfilepathlen;
-	extern struct proxy *proxy;
 	struct proxy *curproxy, *bk;
 	struct server *srv;
 
@@ -3006,7 +3005,7 @@
 		globalfilepath[0] = '\0';
 
 	/* read servers state from local file */
-	for (curproxy = proxy; curproxy != NULL; curproxy = curproxy->next) {
+	for (curproxy = proxies_list; curproxy != NULL; curproxy = curproxy->next) {
 		/* servers are only in backends */
 		if (!(curproxy->cap & PR_CAP_BE))
 			continue;
@@ -3932,7 +3931,7 @@
 	struct proxy *curproxy;
 	int return_code = 0;
 
-	curproxy = proxy;
+	curproxy = proxies_list;
 	while (curproxy) {
 		struct server *srv;
 
diff --git a/src/stats.c b/src/stats.c
index 6cef1bf..0125928 100644
--- a/src/stats.c
+++ b/src/stats.c
@@ -2550,7 +2550,7 @@
 			}
 		}
 
-		appctx->ctx.stats.px = proxy;
+		appctx->ctx.stats.px = proxies_list;
 		appctx->ctx.stats.px_st = STAT_PX_ST_INIT;
 		appctx->st2 = STAT_ST_LIST;
 		/* fall through */
@@ -3537,7 +3537,7 @@
 	    (clrall && !cli_has_level(appctx, ACCESS_LVL_ADMIN)))
 		return 1;
 
-	for (px = proxy; px; px = px->next) {
+	for (px = proxies_list; px; px = px->next) {
 		if (clrall) {
 			memset(&px->be_counters, 0, sizeof(px->be_counters));
 			memset(&px->fe_counters, 0, sizeof(px->fe_counters));
diff --git a/src/stick_table.c b/src/stick_table.c
index 6351143..bd0c828 100644
--- a/src/stick_table.c
+++ b/src/stick_table.c
@@ -3134,7 +3134,7 @@
 		case STAT_ST_INIT:
 			appctx->ctx.table.proxy = appctx->ctx.table.target;
 			if (!appctx->ctx.table.proxy)
-				appctx->ctx.table.proxy = proxy;
+				appctx->ctx.table.proxy = proxies_list;
 
 			appctx->ctx.table.entry = NULL;
 			appctx->st2 = STAT_ST_INFO;
