nginx 主配置文件http段:
$ cat PATH_NGINX/catconf/nginx.conf
...
geo $ipaddr $ip_whitelist{
default 0;
include white_ip.conf;
}
...
白名单:
$ cat PATH_NGINX/conf/white_ip.conf
...
221.176.33.0/24 1;
10.0.0.0/8 1;
192.168.0.0/24 1;
114.114.114.114 1;
...
server 段:
server {
...
set $ipaddr $http_cdn_src_ip;
if ($ipaddr = "") {
set $ipaddr $remote_addr;
}
if ($ip_whitelist = 0){
return 444;
}
...
}
http_cdn_src_ip : 进过CDN是你客户端的出口IP,如果不进过CDN,此参数是空值。
remote_addr: 代表客户端的IP,但它的值不是由客户端提供的,而是服务端根据客户端的ip指定的,当你的浏览器访问某个网站时,假设中间没有任何代理,那么网站的web服务器(Nginx,Apache等)就会把remote_addr设为你的机器IP,如果你用了某个代理,那么你的浏览器会先访问这个代理,然后再由这个代理转发到网站,这样web服务器就会把remote_addr设为这台代理机器的IP(出口IP)
网友评论