Nginx作為靜態資源web服務-控制瀏覽器緩存、防盜鏈
圖書推薦
正文內容
1. 瀏覽器緩存簡介
瀏覽器緩存遵循HTTP協議定義的緩存機制(如:Expires;Cache-control等)。
當瀏覽器無緩存時,請求響應流程
當瀏覽器有緩存時,請求響應流程
瀏覽器緩存校驗過期機制瀏覽器請求流程
2. Nginx控制瀏覽器緩存配置
ngx_http_headers_module語法
本配置項可以控制HTTP響應中的「Expires」和「Cache-Control」頭信息,(起到控制頁面緩存的作用)。
「Expires」頭信息中的過期時間為當前系統時間與您設定的 time 值時間的和。如果指定了 modified 參數,則過期時間為文件的最後修改時間與您設定的 time 值時間的和。
「Cache-Control」頭信息的內容取決於指定 time 的符號。可以在time值中使用正數或負數。
當 time 為負數,「Cache-Control: no-cache」;
當 time 為正數或0,「Cache-Control: max-age=time」,單位是秒。
參數用於指定「Expires」的值為 1 January, 1970, 00:00:01 GMT。
參數用於指定「Expires」的值為 「Thu, 31 Dec 2037 23:55:55 GMT」,「Cache-Control」 的值為10 年。
參數令對「Expires」 和 「Cache-Control」響應頭信息的添加或修改失效。
3. 應用實例
1. vim /etc/nginx/conf.d/static.conf
2. nginx -s reload 重新載入nginx配置文件3. 創建 /vagrant/doc/hello.txt 文件4. 通過curl訪問 192.168.33.88/hello.txt,查看http響應頭信息
重點查看 和 兩個欄位,可見,hello.txt 的緩存時間為1天。
二、防盜鏈
目的:防止資源被盜用
思路:區別哪些請求是非正常的用戶請求
1. 基於http_refer防盜鏈配置模塊
ngx_http_referer_module
語法
:請求頭中沒有 Referer 欄位
:請求頭中雖然存在「Referer」欄位,但是它的值已經被防火牆或代理伺服器刪除;這些值是不以「http://」或「https://」開頭的字元串;
:「Referer」請求頭欄位包含該伺服器名稱
任意字元串:定義一個伺服器名稱和一個可選的URI前綴。伺服器名開始或結尾可以有 「*」 。檢查時,「Referer」欄位中的伺服器埠會被忽略。
正則表達式:字元串必須以開頭,值得注意的是,正則表達式匹配的是在「http://」或「https://」之後的內容。
示例
2. 應用實例
1. vim conf.d/static.conf
2. nginx -s reload 重新載入nginx配置文件3. 創建文件4. 使用 curl進行訪問測試
不帶referer,可以正常訪問
referer為 ,返回403
referer以 開頭或 結尾,可以正常訪問
referer為 ,可以正常訪問
referer為 ,返回403
referer為 ,可以正常訪問
以上是文章全部內容,歡迎關注「PHP自學中心」,導航欄里已經給大家整理了基礎知識題,筆試題,視頻教程等,有需要的可以查看查看
![](https://pic.pimg.tw/zzuyanan/1488615166-1259157397.png)
![](https://pic.pimg.tw/zzuyanan/1482887990-2595557020.jpg)
※VMware虛擬機安裝CentOS 7並搭建Lamp伺服器環境
TAG:PHP自學中心 |