1. 程式人生 > >Nginx配置靜態資源緩存時間及實現防盜鏈

Nginx配置靜態資源緩存時間及實現防盜鏈

上傳 驗證 val amp sin baseurl china 內容 def

  • 環境
    源主機:192.168.10.158
    系統:centos 7.4
    域名:www.wuxier.cn
    盜鏈主機:192.168.10.191(使用Nginx+Tomcat實現負載均衡、動靜分離的實驗主機,點我進行復盤)
    系統:centos 7.4
    域名:www.ajie.com 和 www.taobao.com

  • 創建軟件包存放目錄
  • [root@fudanwuxi ~]# mkdir /root/software
    [root@fudanwuxi ~]# cd /root/software/
    [root@fudanwuxi software]# rz
    rz waiting to receive.
    Starting zmodem transfer.  Press Ctrl+C to cancel.
    Transferring jdk-8u181-linux-x64.tar.gz...
      100%  181295 KB    7882 KB/sec    00:00:23       0 Errors   
    Transferring apache-tomcat-8.5.32.tar.gz...
      100%    9360 KB    9360 KB/sec    00:00:01       0 Errors  
    
    [root@fudanwuxi software]# 
    • 解壓JDK到/user/local/
    [root@fudanwuxi software]# tar xzvf jdk-8u181-linux-x64.tar.gz -C /usr/local/
    • 查看JAVA是否安裝成功
    [root@fudanwuxi software]# cd /usr/local/jdk1.8.0_181/bin/
    [root@fudanwuxi bin]# ./java -version
    java version "1.8.0_181"
    Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
    Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)
    [root@fudanwuxi bin]# 
    • 配置環境變量
    [root@fudanwuxi bin]# vi /etc/profile  #新增下面三行
    export JAVA_HOME=/usr/local/jdk1.8.0_181
    export CLASSPATH=.:$JAVA_HOME/lib
    export PATH=$PATH:$JAVA_HOME/bin
    
    [root@fudanwuxi bin]# source /etc/profile
    • 關閉selinux
    [root@fudanwuxi bin]# getenforce 
    Enforcing
    [root@fudanwuxi bin]# setenforce 0
    [root@fudanwuxi bin]# getenforce  
    Permissive
    • 安裝Nginx
    [root@fudanwuxi bin]# cd /etc/yum.repos.d/
    [root@fudanwuxi yum.repos.d]# vim nginx.repo
    [nginx]
    name=nginx repo
    baseurl=http://nginx.org/packages/centos/7/$basearch/
    gpgcheck=0
    enabled=1
    
    [root@fudanwuxi yum.repos.d]# yum install nginx
    [root@fudanwuxi yum.repos.d]# systemctl start nginx
    [root@fudanwuxi yum.repos.d]# systemctl enable nginx

    技術分享圖片

    • 隱藏Nginx版本號
    [root@fudanwuxi ~]# curl -I http://192.168.10.158
    HTTP/1.1 200 OK
    Server: nginx/1.14.0  #版本號
    Date: Thu, 23 Aug 2018 02:22:14 GMT
    Content-Type: text/html
    Content-Length: 612
    Last-Modified: Tue, 17 Apr 2018 15:48:00 GMT
    Connection: keep-alive
    ETag: "5ad61730-264"
    Accept-Ranges: bytes
    
    [root@fudanwuxi ~]# vi /etc/nginx/nginx.conf  
         21     server_tokens off;  #新增
         22     access_log  /var/log/nginx/access.log  main;
    
    [root@fudanwuxi ~]# systemctl restart nginx
    [root@fudanwuxi ~]# curl -I http://192.168.10.158
    HTTP/1.1 200 OK
    Server: nginx  #版本號隱藏了
    Date: Thu, 23 Aug 2018 02:24:46 GMT
    Content-Type: text/html
    Content-Length: 612
    Last-Modified: Tue, 17 Apr 2018 15:48:00 GMT
    Connection: keep-alive
    ETag: "5ad61730-264"
    Accept-Ranges: bytes
    • 在Nginx首頁添加一張圖片
    [root@fudanwuxi conf.d]# cd /usr/share/nginx/html/
    [root@fudanwuxi html]# rz
    rz waiting to receive.
    Starting zmodem transfer.  Press Ctrl+C to cancel.
    Transferring wuxier.jpg...
      100%       5 KB       5 KB/sec    00:00:01       0 Errors  
    
    [root@fudanwuxi html]# cp index.html index.html.bak
    [root@fudanwuxi html]# vi index.html  #在首頁中添加剛上傳的圖片
         13 <body>
         14 <img src=http://192.168.10.158/wuxier.jpg>  #新增,wuxier.jpg就是剛上傳的圖片
         15 <h1>Welcome to nginx!</h1>
         16 <p>If you see this page, the nginx web server is successfully installed and
         17 working. Further configuration is required.</p>
         18 
         19 <p>For online documentation and support please refer to
         20 <a href="http://nginx.org/">nginx.org</a>.<br/>
         21 Commercial support is available at
         22 <a href="http://nginx.com/">nginx.com</a>.</p>
         23 
         24 <p><em>Thank you for using nginx.</em></p>
         25 </body>
    • 配置靜態資源緩存時間
    [root@fudanwuxi html]# vim /etc/nginx/conf.d/default.conf  #新增以下內容
        location ~ .*\.(gif|jpg|png|jpeg|bmp|ico|css)$ {
            root   /usr/share/nginx/html;
            expires 2d;
    }
    [root@fudanwuxi html]# systemctl restart nginx 

    技術分享圖片

    • 修改windows的hosts文件

    • 修改虛擬主機 www.wuxier.cn 的配置文件
    [root@fudanwuxi conf.d]# pwd
    /etc/nginx/conf.d
    [root@fudanwuxi conf.d]# cp default.conf wuxier.conf
    [root@fudanwuxi conf.d]# ll
    total 8
    -rw-r--r--. 1 root root 1206 Aug 23 10:53 default.conf
    -rw-r--r--. 1 root root  283 Aug 23 12:12 wuxier.conf
    
    [root@fudanwuxi conf.d]# cat wuxier.conf 
    server {
        listen       80;
        server_name  www.wuxier.cn;
    
        location / {
            root   /usr/share/nginx/html;
            index  index.html index.htm;
        }
    
        location ~ .*\.(gif|jpg|png|jpeg|bmp|ico|css)$ {
            root   /usr/share/nginx/html;
            expires 2d;
        }
    
    }
    [root@fudanwuxi conf.d]# systemctl restart nginx 

    技術分享圖片

    • 驗證
    • 當訪問的是taobao1時,如下圖

    技術分享圖片
    技術分享圖片

    • 當訪問的是taobao2時,如下圖

    技術分享圖片

    • 源主機防盜鏈配置
    [root@fudanwuxi conf.d]# cat wuxier.conf    
    server {
        listen       80;
        server_name  www.wuxier.cn;
    
        location / {
            root   /usr/share/nginx/html;
            index  index.html index.htm;
        }
    
    #    location ~ .*\.(gif|jpg|png|jpeg|bmp|ico|css)$ {
    #        root   /usr/share/nginx/html;
    #        autoindex on;
    #        expires 2d;
    #    }
    
        location ~*\.(jpg|png|gif|jpeg)$ {
               root  /usr/share/nginx/html;  #圖片路徑
               valid_referers none blocked  *.wuxier.cn  wuxier.cn  *.ajie.com  ajie.com;  #可以訪問圖片的白名單
               if ($invalid_referer) {  #如果來路不是指定的白名單來路,則返回下面的圖片
               rewrite ^/ https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1535013233040&di=64a20c24bd1e4906ad2eb7205fe3abec&imgtype=0&src=http%3A%2F%2Fd.hiphotos.baidu.com%2Fexp%2Fw%3D480%2Fsign%3D7953092ec195d143da76e52b43f18296%2F8ad4b31c8701a18bbc22f762972f07082938fed6.jpg; 
                    }
                    }
    
    }
    [root@fudanwuxi conf.d]# 
    [root@fudanwuxi html]# systemctl restart nginx
    • 防盜鏈結果驗證
    • 當訪問taobao1的時候,因為taobao1之前是使用了 www.wuxier.cn/wuxier.jgp 圖片,所以會返回盜鏈的圖片,如下圖

    技術分享圖片

    • 當訪問taobao2的時候,如下圖

    技術分享圖片

    • 當訪問 www.wuxier.cn 的時候,如下圖(白名單)

    技術分享圖片

    • 當訪問 www.ajie.com 的時候,如下圖(白名單)

    技術分享圖片

    • 當從配置文件wuxier.conf中將*ajie.com和ajie.com從白名單中刪除後,再進行訪問
    [root@fudanwuxi conf.d]# vim /etc/nginx/conf.d/wuxier.conf 
    server {
        listen       80;
        server_name  www.wuxier.cn;
    
        location / {
            root   /usr/share/nginx/html;
            index  index.html index.htm;
        }
    
    #    location ~ .*\.(gif|jpg|png|jpeg|bmp|ico|css)$ {
    #        root   /usr/share/nginx/html;
    #        autoindex on;
    #        expires 2d;
    #    }
    
        location ~*\.(jpg|png|gif|jpeg)$ {
               root  /usr/share/nginx/html;
               valid_referers none blocked  *.wuxier.cn  wuxier.cn;  #將*.ajie.com和ajie.com刪除
               if ($invalid_referer) {
               rewrite ^/ https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1535013233040&di=64a20c24bd1e4906ad2eb7205fe3abec&imgtype=0&src=http%3A%2F%2Fd.hiphotos.baidu.com%2Fexp%2Fw%3D480%2Fsign%3D7953092ec195d143da76e52b43f18296%2F8ad4b31c8701a18bbc22f762972f07082938fed6.jpg; 
                    }
                    }
    
    }
    [root@fudanwuxi conf.d]# 

    訪問結果如下
    技術分享圖片

    Nginx配置靜態資源緩存時間及實現防盜鏈