Nginx+Tomcat 環境下的防圖片盜鏈配置

  本來覺得是個挺簡單的事情,仔細看了下還是有一些細節需要注意的。網上基本都是僅nginx環境下的配置,這裏給一個用Nginx+Tomcat結構的配置及其簡要說明,主要有以下兩個步驟,選任意一個方案即可。


1. Nginx防盜鏈的配置

  a. 方法一:增加ngx_http_accesskey_module模塊,但是需要相應的配置,網上相關資料很多,不贅述。

         優點:控制的邏輯嚴密,非常可靠地解決方案。

        ■ 缺點:需要做較多的修改。

  b. 方法二:直接增加Refer的判斷,對於不符合設定的請求予以禁止。這裏有個地方需要注意,後端有Tomcat,所以還要加上proxy pass的相關配置。

        # 防止圖片盜鏈,只判斷refer是否爲本站
        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
            valid_referers none blocked    *.taoximao.com taoximao.com;
            if ($invalid_referer) {
                return 403;
            }
            # 要加上後端訪問的地址
            proxy_redirect     off;
            proxy_pass         http://web_server;
            proxy_set_header   Host             $host;
            proxy_set_header   X-Real-IP        $remote_addr;
            proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        }

        ■ 優點:配置相當簡單,也不用安裝其他模塊。

        ■ 缺點:無法防止別人僞造Refer信息,也就是說人家真的想去偷竊,稍微麻煩點還是阻止不了;另外還發現如果refer爲空還是能正常訪問到,控制放的很寬。


2. Tomcat禁止直接訪問的配置

(注:如果Tomcat還能直接訪問,其實Nginx的那個防盜鏈就沒意義了,加個端口就跳過配置了)

  a. 方法一:在Linux下配置iptables,將8080的端口禁止外網訪問即可,這樣就只能通過Nginx來訪問。網上很多資料,不贅述。

        ■ 優點:直接系統級別配置,與應用本身無關,高度可靠。

        ■ 缺點:額外配置,配置起來也有點麻煩。

  b. 方法二:直接配置Tomcat允許的訪問IP,精確到每個Host。只要修改tomcat下的conf/server.xml文件,在Host之間加上允許的訪問IP即可,直接訪問會返回403錯誤。

      <Host name="test1.taoximao.com"  appBase="webapps_test1"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">
        <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127.0.0.1" deny=""/>
      </Host>

        ■ 優點:配置簡單,實現的效果也能滿足需要。

        ■ 缺點:有時候會出現圖片不顯示。

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