🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 简介 在实际的环境中的多数情况下,我们会使用CDN,真实用户的IP将会被存放在`header`头中,所以我们需要进行特别的配置以获取用户的真实IP地址。 openstar默认是将realip模块([http_realip_module](http://nginx.org/en/docs/http/ngx_http_realip_module.html))编译进去的,所以建议直接配置使用该模块即可。 关于 http_realip_module 的使用可以简单参考一下 ``` set_real_ip_from   192.168.3.0/24; set_real_ip_from   100.100.0.0/16; real_ip_header     X-Real-IP; real_ip_recursive on; 可以配置的位置:http, server, location 根据自己的情况进行配置 ``` 另外`openstar`安全网关提供的这个realip模块是完全基于lua实现,接下来了解一下该模块是怎么使用的。 ## 入口 ![](https://img.kancloud.cn/4d/95/4d958b99c67e271c21f5dde0c4a1fb21_944x635.png) ## 主界面 查看现有配置获取用户真实ip的规则 ![](https://img.kancloud.cn/1f/d9/1fd9d1d642140c76dd44b9b5a9f7ae40_976x509.png) 如果使用了 nginx 的 realip 模块,就可以将`配置获取用户真实IP` 开关设置为:关闭 * 配置获取用户真实ip开关:该开关是控制是否启用该模块 ## 添加: ![](https://img.kancloud.cn/f6/58/f65827d5d75ba02540831028a63a2a7d_755x379.png) * 域名:配置需要从`header`头中进行获取用户真实ip的域名 该域名一定是完整的域名,不能是正则表达式那种形式的域名!!! 同域名管理中一样的域名才可以 ``` www.bac.com #合法 *.bac.com # 不合法 ``` * 规则 ![](https://img.kancloud.cn/86/af/86af9698786f6df96098403a621f2e54_402x269.png) 第一个参数:匹配的具体内容,可以是字符串、数组、字典 第二个参数:匹配的类型(等于、包含、数组、字典、开头[扩展]列表、结尾[扩展]列表...) 这里匹配符建议只用(等于、数组、字典、ip段) 第三个参数:是否取反的标记(可以省略) 规则 配置是等于xxxx,取反为true,则表示 不等于,以此类推 这里json规则的编写,参考右边的json例子,json配置说明 * ips:配置直连IP信息 等于匹配:当仅仅只有一个来源ip时使用【特殊用法:当需要匹配任意ip时,内容写 * 】 ![](https://img.kancloud.cn/f8/b2/f8b2dfc7141b8a79d68bf33ab3001f88_305x186.png) 字典匹配:当有超过500个IP时,使用(复杂度是 1) ![](https://img.kancloud.cn/2b/43/2b43d571660f6da1a2ad1aa6e1efb71e_375x292.png) 数组匹配:当有多个IP匹配时(小于500个)复杂度是 n ![](https://img.kancloud.cn/89/90/89902af13b7dbfbc34a077cbf421ba38_379x270.png) ip段匹配:匹配的ip是cidr形式 ![](https://img.kancloud.cn/b9/68/b9682b57e4bed9bed84479603b3b85dd_365x295.png) 如:192.168.1.2/32 ; 192.168.1.0/24 ... * realipfrom:http头名称 这里需要注意的是,不区分大小写,header头中的 **横线 要换成 下划线** 常见存放IP的头:`X-Real-IP` `X-Forwarded-For` ,配置就可以是:`x_real_ip`和`x_forwarded_for`(可以不分大小写的) 注:当需要`nginx`支持下划线的`header`头时,需要配置 `underscores_in_headers on;` http://nginx.org/en/docs/http/ngx_http_core_module.html#underscores_in_headers ## 删除: 删除该条配置,立刻生效 ## 编辑: 同 添加一样 ,对规则进行 编辑修改修改 ## 保存: 保存该模块规则到服务器json配置文件(防止重启后配置丢失) 注:Slave 会自动保存配置到json文件!!!