Nginx中防盜鏈鏈接到的圖片,被循環調用失敗!

Q:Nginx中防盜鏈鏈接到的圖片,被循環調用失敗!

設置兩個web虛擬機web1和web2,web1有一個圖片img.html,web2的圖片img.html中的圖片是盜用web1的,現在web1設置防盜鏈接,成功阻止web2盜用圖片,但是在將web2的盜用訪問轉到主頁html下的2.jpg時,產生循環調用2.jpg且訪問失敗!

    Request URL: http://web2.devops.com/img.html   //img.html顯示
    Request Method: GET
    Status Code: 200 OK
    Remote Address: 192.168.226.128:80
    Referrer Policy: no-referrer-when-downgrade

    Request URL: http://web1.devops.com/1.jpg       //1.jpg顯示
    Request Method: GET
    Status Code: 302 Moved Temporarily
    Remote Address: 192.168.226.128:80
    Referrer Policy: no-referrer-when-downgrade

    Request URL: http://192.168.226.128/2.jpg       //2.jpg顯示
    Request Method: GET
    Status Code: 302 Moved Temporarily
    Remote Address: 192.168.226.128:80
    Referrer Policy: no-referrer-when-downgrade

A:

1.檢查圖片以及幾個img.html位置

    [root@min1 html]# ls
    2.jpg         index.html      ip    web1
    50x.html.bak  index.html.bak  port  web2


    [root@min1 web1]# pwd
    /usr/local/nginx/html/web1
    [root@min1 web1]# ls
    1.jpg  img.html  index.html


    [root@min1 web2]# pwd
    /usr/local/nginx/html/web2
    [root@min1 web2]# ls
    img.html  index.html

沒有問題!

2.檢查配置文件

     34     server {
     35         listen 80;
     36         server_name web1.devops.com;
     37         root html/web1;
     38 
     39         location ~ \.(jpg|jpeg|png)$ {
     40         valid_referers web1.devops.com;
     41         if ($invalid_referer) {
     42                 #return 404;
     43         rewrite ^/ http://192.168.226.128/2.jpg  break;
     44                         }
     45                 }
     46         }
     47     server {
     48         listen 80;
     49         server_name web2.devops.com;
     50         root html/web2;
     51         }

web1與web2配置正常。

3.若將rewrite註釋掉,return 打開,可以成功在Google瀏覽器成功返回404。所以防盜鏈功能成功生效。
4. 打開rewrite,使用谷歌瀏覽器測試網頁->(右鍵)檢查->network->刷新網頁->查看頁面調用方式,發現2.jpg確實被調用,調用語句沒有問題。
5. 檢查rewrite和2.jpg是否在web1中,若在web1中可能會被循環調用。
6. 檢查主頁192.168.226.128是否可以直接訪問?

    http://192.168.226.128
    顯示

    hello,this is the web1  //顯示正常!
    訪問網址http://192.168.226.128/2.jpg 失敗!

懷疑圖片鏈接有問題!

7.經檢查測試得知,是rewrite ^/ http://192.168.226.128/2.jpg break; 可知是這一句出了問題!

因爲用IP定向,若http中的server沒有一個專門指向此IP的,那麼會自動將IP匹配到第一個server,所以出現了循環調用的現象!

解決方案 :

①將web1與web2的server虛擬機放到localhost後面去,讓系統自動匹配到localhost的server中。

②爲訪問的IP單獨建立一個虛擬機。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章