包含以下知识点:

1、 nginx前面有多层代理的情况下拿到客户端地址(实现白名单功能)

2、 /admin/不允许访问,/admin/userfiles/可以访问

location ^~ /admin/ {

	set $realip 0;
	set $flag 0;

    if ($http_x_forwarded_for ~ “^(\d+\.\d+\.\d+\.\d+)”) {
        set $realip $1;
    }
  
    if ($realip !~ 116.228.89.244|222.44.226.12) {
        set $flag “${flag}1”;
    }

    if ($uri !~ (/admin/userfiles/).*) {
        set $flag “${flag}1”;
    }

    if ($flag = “011”) {
        return 444;
    }

……..省略部分配置
}

黑名单

map $http_x_forwarded_for $ip_allowed {
        default allow;
        192.168.3.12 deny;
        192.168.21.3 deny;
    }

server指令内
    if ($ip_allowed = "deny") {
        return 444;
    }