第六节:Nginx常用案例(反盗链、限速、黑名单、跨域等等)

发布时间 2023-07-21 09:52:22作者: Yaopengfei

 

三. 常用场景

1. 防盗链

 直接输入地址,没有referer字段,所以匹配了后面的none或blocked,不跳转。通过搜索引擎打开的含有referer字段,走后面的匹配规则。  

 none 代表没有referer

 blocked 代表有referer,但是被防火墙或代理给去除了。

配置如下:

worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       8080;
        server_name  test2.cneasy.cn;
        location /{
            valid_referers none blocked *.cneasy.cn;
            if ($invalid_referer) {
                return 403;
            }
            root   html;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

    }
}

2. 下载限速

配置如下:

location / {
    limit_rate 1m; //限制每秒下载速度
    limit_rate_after 30m; // 超过30秒之后再下载
}

3. IP黑名单

(1). 基本语法

# 屏蔽单个ip访问
deny 192.168.0.1;
# 允许单个ip访问
allow 192.168.0.1;
# 屏蔽所有ip访问
deny all;
# 允许所有ip访问
allow all;
#屏蔽整个段即从123.0.0.1到123.255.255.254访问的命令
deny 123.0.0.0/8
#屏蔽IP段即从123.45.0.1到123.45.255.254访问的命令
deny 124.45.0.0/16
#屏蔽IP段即从123.45.6.1到123.45.6.254访问的命令
deny 123.45.6.0/24

(2). 作用范围问题

 A. http{}语句块,所有网站

 B. server{}语句块,单个网站

 C. server下location语句块,单个网站下的某个映射规则

配置如下:

worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;    
    #1. 作用于所有网站
    deny 192.168.3.9;
    server {
        listen       8080;
        server_name   localhost;
        #2.作用于单个网站
        #deny 192.168.3.9;
        location / {
            #3. 作用于单个网站下的某个规则
            #deny 192.168.3.9;
            proxy_pass http://localhost:9001;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

效果如下:

(3). 可以配置成文件,通过include引入。 

 在nginx.conf所在的目录下新建denyIp.conf,在里面编写禁止IP的代码。

denyIp.conf配置

deny 192.168.3.9;
deny 192.168.137.1;

nginx.conf配置

worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;    
    #1. 作用于所有网站
    include denyIp.conf;
    server {
        listen       8080;
        server_name   localhost;
        #2.作用于单个网站
        #include denyIp.conf;
        location / {
            #3. 作用于单个网站下的某个规则
            #include denyIp.conf;
            proxy_pass http://localhost:9001;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}