Nginx lua获取真实IP

来自Linux78|wiki
Bob讨论 | 贡献2019年11月15日 (五) 17:09的版本 (创建页面,内容为“在使用openresty的时候发现如果在openresty上面再加上一成代理,则lua获取不到真实的IP地址,最开始使用:ngx.var.remote_addr 获取IP…”)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)

在使用openresty的时候发现如果在openresty上面再加上一成代理,则lua获取不到真实的IP地址,最开始使用:ngx.var.remote_addr 获取IP

最后解决方案:

1:在代理服务器上配置

   location /services {
           proxy_set_header        X-Real-IP       $remote_addr;
           proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
           proxy_pass   http://192.168.110.98/services;
       }

2:lua获取ip:

local headers=ngx.req.get_headers()
local ip=headers["X-REAL-IP"] or headers["X_FORWARDED_FOR"] or ngx.var.remote_addr or "0.0.0.0"