Nginx作為靜態(tài)資源web服務(wù)器(gzip伐弹,緩存,跨域榨为,防盜鏈)

一惨好、gzip

(1)配置語法

Syntax: gzip on|off;
Default:gzip off;
Context: http, server, location, if in location;

作用:壓縮傳輸

Syntax: gzip_comp_level level;
Default:gzip_comp_level 1;
Context: http, server, location;

作用:gzip壓縮比煌茴,最小1,處理速度最快日川;最大9蔓腐,但處理最慢(傳輸快但比較消耗cpu)

Syntax: gzip_http_version 1.0|1.1;
Default:gzip_http_version 1.1;
Context: http, server, location;

作用:控制gzip http協(xié)議的版本,當(dāng)前主流版本1.1

(2)示例演示
  • 步驟一
    opt/ app/code/images 下添加一張圖片bg.jpg龄句,用于演示圖片壓縮
    opt/ app/code/doc下添加一access.txt回论,用于演示文本壓縮
  • 步驟二
    vi/etc/nginx/conf.d/static_server.conf ,創(chuàng)建static_server.conf 配置文件,配置以下內(nèi)容:
static_server.conf配置.png
  • 步驟三
    瀏覽器訪問圖片,啟動(dòng)配置和不啟動(dòng)配置大小皆為1.09MB?? 說明配置并未生效分歇,暫時(shí)不知為何傀蓉。。卿樱。。硫椰。


    瀏覽器訪問結(jié)果.png

二繁调、瀏覽器緩存場(chǎng)景

(1)瀏覽器緩存原理
無緩存.png
有緩存.png

校驗(yàn)規(guī)則如下圖所示:


校驗(yàn)規(guī)則.png
  • Expires和Cache-Control類似,區(qū)別在于Expires適用于HTTP1.0版本靶草,而Cache-Control 適用于HTTP 1.1版本蹄胰。max-age用于定義本地緩存的有效時(shí)間。
  • 本地緩存失效后奕翔,優(yōu)先向服務(wù)器進(jìn)行Etag驗(yàn)證裕寨,Etag記錄的是一串字符串,Last-Modified記錄的是一個(gè)精確到秒的時(shí)間派继。
緩存機(jī)制示意圖
(2)配置語法expires

Syntax: expires [modified] time;
Default:expires off;
Context: http, server, location, if in location;

作用:添加 Cache-Control, Expires頭

(3)演示示例

先看一下服務(wù)器端未作緩存配置的情況下的請(qǐng)求結(jié)果宾袜。
下圖為清除緩存后首次請(qǐng)求的結(jié)果:狀態(tài)碼200。

未配置首次請(qǐng)求.png

下圖為刷新后的結(jié)果:狀態(tài)碼304驾窟。 我們發(fā)現(xiàn)庆猫,請(qǐng)求頭中多了一行Cache-Control:"max-age=0",這里需要注意了绅络,這個(gè)Cache-Control頭信息是瀏覽器加進(jìn)去的月培,而不是服務(wù)器返回的,max-age=0(或小于0)恩急,表示每次請(qǐng)求都需要去和服務(wù)器進(jìn)行校驗(yàn)杉畜,比較last-Modified,如果有更新則返回200,否則返回304衷恭。

未配置刷新.png

接下來在服務(wù)器端做緩存配置:

  • 步驟1
    touch /etc/nginx/conf.d/static_server.conf ,創(chuàng)建static_server.conf 配置文件
  • 步驟2
    vi /etc/nginx/conf.d/static_server.conf , 在static_server.conf 中配置以下內(nèi)容此叠,配置的緩存失效時(shí)間為24h
static_server.conf配置.png
  • 步驟3
    下圖為清除緩存后首次請(qǐng)求的結(jié)果:可以看到,響應(yīng)頭中被寫入了Cache-Control:"max-age=86400", 這說明我們的配置已經(jīng)成功了(86400的單位為秒随珠,等于我們配置的24h)拌蜘。
    配置后首次請(qǐng)求.png

下圖為刷新后的結(jié)果:這里需要注意的是杆烁,雖然我們?cè)诜?wù)端的配置成功寫入了響應(yīng)頭,但是客戶端不一定會(huì)遵循服務(wù)端配置简卧,這里瀏覽器使用了自己的Cache-Contorl:"max-age=0", 即每次請(qǐng)求都需要去和服務(wù)器校驗(yàn)Etag和Last-Modified;


配置后刷新.png

三兔魂、跨域

瀏覽器會(huì)去讀取服務(wù)器返回的Access-Confrol-Allow-Origin頭信息,判斷是否可以訪問举娩。默認(rèn)情況下田绑,瀏覽器禁止跨域訪問,因?yàn)榭缬蛟L問不安全机隙,容易出現(xiàn)CSRF攻擊(Cross-site request forgery桐绒,跨站請(qǐng)求偽造)。
但實(shí)際中出于一些業(yè)務(wù)需求芙代,需要允許跨站訪問吊奢。

(1)Nginx允許跨站訪問的配置語法:

Syntax:add_header name value [always];
Default:--;
Context: http, server, location, if in location;

(2)配置示例
location ~  .*\.(htm|html)$ {
   add_header Access-Control-Allow-Origin http://www.candy.com;
   add_header Access-Control-Allow-Methods GET,POST,PUT,DELETE,OPTIONS;
   root /opt/app/code;
}

以上配置表示允許來自http://www.candy.com的GET,POST,PUT,DELETE,OPTIONS跨域請(qǐng)求。

location ~  .*\.(htm|html)$ {
   add_header Access-Control-Allow-Origin *;
   add_header Access-Control-Allow-Methods GET,POST,PUT,DELETE,OPTIONS;
   root /opt/app/code;
}

以上配置表示允許所有站點(diǎn)的請(qǐng)求纹烹。

四页滚、防盜鏈

防止網(wǎng)站資源被盜用。首要方式:區(qū)別哪些請(qǐng)求是非正常的用戶請(qǐng)求铺呵。

(1)什么是 HTTP_REFERER

HTTP Referer是header的一部分裹驰,當(dāng)瀏覽器向web服務(wù)器發(fā)送請(qǐng)求的時(shí)候,一般會(huì)帶上Referer片挂,告訴服務(wù)器我是從哪個(gè)頁面鏈接過來的幻林,服務(wù)器基此可以獲得一些信息用于處理。以下演示什么是http_referer音念。
新建test_refer.html 文件沪饺,該html中訪問了一張圖片


新建test_refer.html.png

瀏覽器訪問test_refer.html,可以看到發(fā)起了兩個(gè)請(qǐng)求


瀏覽器訪問結(jié)果.png

tail -f /var/log/nginx/access.log 查看訪問日志闷愤,可以看到兩條請(qǐng)求日志随闽,第一條請(qǐng)求請(qǐng)求的是test_refer頁面, $http_referer變量值為 空 肝谭;第二條請(qǐng)求請(qǐng)求的是圖片掘宪,$http_referer變量值為http://192.168.122.1/test_refer.html, 表明該請(qǐng)求是從哪里過來的。

access.log.png

(2)http_refer防盜鏈配置模塊語法

Syntax:valid_referers none | blocked | server_names | string...;
Default:--;
Context: server, location;

  • 步驟一攘烛,攜帶 refer信息的請(qǐng)求
    curl -e "http://www.baidu.com" -I http://192.168.122.1/bg.jpg, ( 其中-e參數(shù)表示來源網(wǎng)址, - I參數(shù)表示只看頭信息數(shù)據(jù))
    以下為生成的日志信息魏滚,可以看到,狀態(tài)為200坟漱,refer 為 http://www.baidu.com

    access.log.png

  • 步驟二, 修改配置文件
    修改配置vi /etc/nginx/conf.d/default.conf(注意鼠次,if 后要加空格)

default.conf.png

配置釋意:
valid_referers 后面接允許訪問的refer信息類型
none 表示允許沒有帶refer 信息的請(qǐng)求
blocked 表示允許referer信息不是標(biāo)準(zhǔn)的http:// 域名的訪問
192.168.122.1 表示只允許通過該ip的請(qǐng)求
若請(qǐng)求頭不滿足valid_referers中的設(shè)置,則 $invalid_referer的值為1,返回403腥寇。

  • 步驟三成翩,攜帶 refer信息的請(qǐng)求

重新執(zhí)行curl -e "http://www.baidu.com" -I http://192.168.122.1/bg.jpg, 返回結(jié)果403,說明配置生效了赦役。

百度403.png

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末麻敌,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子掂摔,更是在濱河造成了極大的恐慌术羔,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,270評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件乙漓,死亡現(xiàn)場(chǎng)離奇詭異级历,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)叭披,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門寥殖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人涩蜘,你說我怎么就攤上這事嚼贡。” “怎么了皱坛?”我有些...
    開封第一講書人閱讀 165,630評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵编曼,是天一觀的道長(zhǎng)豆巨。 經(jīng)常有香客問我剩辟,道長(zhǎng),這世上最難降的妖魔是什么往扔? 我笑而不...
    開封第一講書人閱讀 58,906評(píng)論 1 295
  • 正文 為了忘掉前任贩猎,我火速辦了婚禮,結(jié)果婚禮上萍膛,老公的妹妹穿的比我還像新娘吭服。我一直安慰自己,他們只是感情好蝗罗,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,928評(píng)論 6 392
  • 文/花漫 我一把揭開白布艇棕。 她就那樣靜靜地躺著,像睡著了一般串塑。 火紅的嫁衣襯著肌膚如雪沼琉。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,718評(píng)論 1 305
  • 那天桩匪,我揣著相機(jī)與錄音打瘪,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛闺骚,可吹牛的內(nèi)容都是我干的彩扔。 我是一名探鬼主播,決...
    沈念sama閱讀 40,442評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼僻爽,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼虫碉!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起进泼,我...
    開封第一講書人閱讀 39,345評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤蔗衡,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后乳绕,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體绞惦,經(jīng)...
    沈念sama閱讀 45,802評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,984評(píng)論 3 337
  • 正文 我和宋清朗相戀三年洋措,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了济蝉。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,117評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡菠发,死狀恐怖王滤,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情滓鸠,我是刑警寧澤雁乡,帶...
    沈念sama閱讀 35,810評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站糜俗,受9級(jí)特大地震影響踱稍,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜悠抹,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,462評(píng)論 3 331
  • 文/蒙蒙 一珠月、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧楔敌,春花似錦啤挎、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至勺卢,卻和暖如春伙判,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背值漫。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工澳腹, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留织盼,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,377評(píng)論 3 373
  • 正文 我出身青樓酱塔,卻偏偏與公主長(zhǎng)得像沥邻,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子羊娃,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,060評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容