<div dir="ltr">Hi List,<div class="gmail_quote"><div dir="ltr"><div><br></div><div>How to get x_forwarded_for sent in the request in NGINX module (NAXSI in particular):</div><div><br></div><div>My attempt:</div><div><br></div>ngx_log_error(NGX_LOG_ERR, req->connection->log,<br>              0, "test %s", (char *)req->headers_in.x_forwarded_for.elts);<br><div><br></div><div>The bigger problem I am trying to solve with NAXSI is this:</div><div><br></div><div><a href="https://stackoverflow.com/questions/59453729/naxsi-blacklist-and-whitelist-setup-with-nginx" target="_blank">https://stackoverflow.com/questions/59453729/naxsi-blacklist-and-whitelist-setup-with-nginx</a></div><div><br></div><div>I want to simply create a map and check if X-forwarded-for is on the whitelist and if yes, always allow it.<br></div><div><br></div><div>Above does not work. Prints garabge. Why it is (void *) ???</div><br>Debugging it:<br><br>$1 = (ngx_http_request_t *) 0xa44df0<br>(gdb) p req->headers_<br>headers_in   headers_out  <br>(gdb) p req->headers_in <br>$2 = {headers = {last = 0xa44e60, part = {elts = 0xad4d10, nelts = 7, next = 0x0}, size = 48, nalloc = 20, <br>    pool = 0xa44da0}, host = 0xad4d10, connection = 0x0, if_modified_since = 0x0, if_unmodified_since = 0x0, <br>  if_match = 0x0, if_none_match = 0x0, user_agent = 0xad4d70, referer = 0x0, content_length = 0x0, <br>  content_range = 0x0, content_type = 0x0, range = 0x0, if_range = 0x0, transfer_encoding = 0x0, te = 0x0, <br>  expect = 0x0, upgrade = 0x0, accept_encoding = 0x0, via = 0x0, authorization = 0x0, keep_alive = 0x0, <br>  x_forwarded_for = {elts = 0xa45b98, nelts = 1, size = 8, nalloc = 1, pool = 0xa44da0}, x_real_ip = 0x0, user = {<br>    len = 0, data = 0x0}, passwd = {len = 0, data = 0x0}, cookies = {elts = 0x0, nelts = 0, size = 0, nalloc = 0, <br>    pool = 0x0}, server = {len = 32, data = 0xa449a9 "<a href="http://domain.com" target="_blank">domain.com</a>"}, content_length_n = -1, <br>  keep_alive_n = -1, connection_type = 2, chunked = 0, msie = 0, msie6 = 0, opera = 0, gecko = 0, chrome = 0, <br>  safari = 0, konqueror = 0}<br>(gdb) p req->headers_in.x_forwarded_for <br>$3 = {elts = 0xa45b98, nelts = 1, size = 8, nalloc = 1, pool = 0xa44da0}<br>(gdb) p req->headers_in.x_forwarded_for .elts <br>$4 = (void *) 0xa45b98<br>(gdb) p req->headers_in.x_forwarded_for.elts <br><div>$5 = (void *) 0xa45b98</div><div><br></div><div>What structure is this? Linked List? Why the elts point to garbage, when I know the Loadbalancer added the X-Forwarded-for header with value.</div><div><br></div><div><br></div><div>Thanks,<br></div></div>
</div></div>