nginx之防盗链

Posted 月疯

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx之防盗链相关的知识,希望对你有一定的参考价值。

1、防盗链与http的referer

 

防盗链的配置:

防盗链配置:
valid_referers none |blocked|server_names|strings.....;

none,检测Referer头域不存在的情况
blocked,检测referer头域的值被防火墙或者代理服务器删除伪装的情况。这种情况该头域的值不以http://或https://开头
server_names,设置一个或者多个URL,检测Referer头域的值是否是这些URL中的某一个

在需要防盗链的location中配置

valid_referers 192.168.44.101;
if($invalid_referer)
    return 403;

使用curl测试
curl -I http://192.168.44.101/img/logo.png

带引用
curl -e "http://baidu.com" -I http://192.168.44.101/img/logo.png

nginx.conf配置文件:

 

#user  nobody;
worker_processes  1;

events
    worker_connections  1024;


http
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    keepalive_timeout  65;
   
   #2台反向代理负载均衡,默认轮训
   #按比例负载均衡
   upstream httpds
   server 192.168.208.200:80 weight=8;
   server 192.168.208.201:80 weight=2;
   server 192.168.208.202:8080 weight=1;

   
    server
        listen       80;
        server_name  localhost;


        location /
        
        #会被代理到这个地址,只写一个代理,需要写全名,配置外网

        #proxy_pass http://www.baidu.com;      

        #配置内网
        rewrite ^/([0-9]+)/index$           /index?number=$1 break;;
        proxy_pass http://https;
        

        
        location ~*/(js|image|css)
        #检测192.168.208.201的请求,如果检测是无效的,直接返回403
         valid_referers 192.168.208.201;
         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;
        

       

 

注意修改完nginx.conf,需要重载nginx。

systemctl reload nginx  

curl是nginx的工具,浏览器刷不出来的时候后,用curl来测试。

使用curl测试
curl -I http://192.168.208.101/img/logo.png

带引用
curl -e "http://baidu.com" -I http://192.168.208.101/img/logo.png 

 

 

 

以上是关于nginx之防盗链的主要内容,如果未能解决你的问题,请参考以下文章

nginx实践之静态资源web服务(防盗链)

Linux之nginx优化与防盗链

Nginx服务之防盗链功能

Nginx优化之压缩和防盗链

Web服务之Nginx优化与防盗链

LAMP架构之Nginx:nginx重定向+防盗链