51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

Nginx根据用户IP设置访问跳转

Nginx判断用户IP设置访问跳转

第一种方法

根据$remote_addr客户端IP地址判断,判断成功即返回301跳转,可以写正则,如果有大量不规则IP就很头疼了。
if ($remote_addr = 192.168.1.123) { return 301 https://blog.whsir.com; }

|-------|--------------------------------------------------------------------------| | 1 2 3 | if ($remote_addr = 192.168.1.123) { return 301 https://blog.whsir.com; } |

第二种方法

nginx通过lua实现,这方法是孔大神给的,将需要做301跳转的IP,直接写到/tmp/ip文件中,支持网段,一行一个,添加后不需要重启nginx,即时生效。

注意nginx要编译lua模块才可以使用,我的whsir一键包nginx已集成lua。
rpm -ivh http://mirrors.whsir.com/centos/whsir-release-centos.noarch.rpm yum install wnginx -y

|-----|------------------------------------------------------------------------------------------------| | 1 2 | rpm -ivh http://mirrors.whsir.com/centos/whsir-release-centos.noarch.rpm yum install wnginx -y |


set_by_lua $info ' local opt = ngx.var.remote_addr local file = io.popen("ip=" ..opt.. ";if grep -q $ip /tmp/ip;then echo $ip; exit 0;fi ; for net in $(grep / /tmp/ip);do [ $(ipcalc -n $ip/${net#*/}) = $(ipcalc -n $net) ] && echo $ip && break; done") content1 = file:read("*l") return content1 '; if ( $info = $remote_addr) { return 301 https://blog.whsir.com; }

|----------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | 1 2 3 4 5 6 7 8 9 10 | set_by_lua $info ' local opt = ngx.var.remote_addr local file = io.popen("ip=" ..opt.. ";if grep -q $ip /tmp/ip;then echo $ip; exit 0;fi ; for net in $(grep / /tmp/ip);do [ $(ipcalc -n $ip/${net#*/}) = $(ipcalc -n $net) ] && echo $ip && break; done") content1 = file:read("*l") return content1 '; if ( $info = $remote_addr) { return 301 https://blog.whsir.com; } |

赞(0)
未经允许不得转载:工具盒子 » Nginx根据用户IP设置访问跳转