Skip to content

Commit 3947fdf

Browse files
committed
Lua script to render an unmodified X-Forwarded-For header
1 parent 74e52e5 commit 3947fdf

File tree

3 files changed

+21
-3
lines changed

3 files changed

+21
-3
lines changed

inner-proxy/conf/conf.d/default.conf

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,11 @@ server {
1515
}
1616

1717
location / {
18-
proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;
19-
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
20-
proxy_set_header X-Real-IP $remote_addr;
18+
proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;
19+
proxy_set_header X-Forwarded-For $realip_add_x_forwarded_for;
20+
proxy_set_header X-Bad-Forwarded-For $proxy_add_x_forwarded_for;
21+
proxy_set_header X-Real-IP $remote_addr;
22+
2123
proxy_pass http://backend;
2224
}
2325
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
local _M = {}
2+
3+
function _M.run()
4+
if (ngx.var.http_x_forwarded_for == "" or ngx.var.http_x_forwarded_for == nil) then
5+
ngx.var.realip_add_x_forwarded_for = ngx.var.realip_remote_addr
6+
else
7+
ngx.var.realip_add_x_forwarded_for = ngx.var.http_x_forwarded_for .. ", " .. ngx.var.realip_remote_addr
8+
end
9+
end
10+
11+
return _M

inner-proxy/conf/nginx.conf

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,11 @@ http {
3030
set_real_ip_from 10.20.30.2/32;
3131
real_ip_header X-Forwarded-For;
3232

33+
map $request $realip_add_x_forwarded_for { default ""; }
34+
access_by_lua_block {
35+
require("realip-x-forwarded-for").run()
36+
}
37+
3338
# Include the rest of the configuration
3439
include conf.d/*.conf;
3540
}

0 commit comments

Comments
 (0)