Nginx防盜鏈與服務(wù)優(yōu)化配置的示例分析

      隱藏nginx版本號(hào)

      查看版本號(hào)

      方法一:curl命令

      可以在 CentOS 中使用命令 curl -I http://192.168.80.130 顯示響應(yīng)報(bào)文首部信息。

      curl -I http://192.168.80.130

      Nginx防盜鏈與服務(wù)優(yōu)化配置的示例分析

      方法二:在網(wǎng)頁(yè)中查看

      1. #切換至html目錄,拖一個(gè)圖片進(jìn)去
      cd /usr/local/nginx/html

      2. #在網(wǎng)頁(yè)中查看
      http://192.168.59.118/game.png

      Nginx防盜鏈與服務(wù)優(yōu)化配置的示例分析

      隱藏版本信息

      方法一:修改配置文件

      1.#修改配置文件 vim?/usr/local/nginx/conf/nginx.conf ? ????```handlebars http?{ ????include???????mime.types; ????default_type??application/octet-stream; ????server_tokens?off;????????????????????????#添加,關(guān)閉版本號(hào) ????...... } ? 2.#重啟nginx systemctl?restart?nginx ? 3.#查看版本是否被隱藏 curl?-I?http://192.168.80.130

      Nginx防盜鏈與服務(wù)優(yōu)化配置的示例分析

      Nginx防盜鏈與服務(wù)優(yōu)化配置的示例分析

      方法二: 修改源碼文件,重新編譯安裝

      可以自定義版本號(hào),可以讓人迷惑

      1.?#切換至nginx安裝包所在目錄 cd?/opt/ 2.?#停止nginx服務(wù) systemctl?stop?nginx.service 3.?#切換至安裝目錄 cd?nginx-1.12.0/ 4.?#切換至內(nèi)核目錄 cd?src/core/ 5.?#進(jìn)入配置文件 vim?nginx.h  #define?NGINX_VERSION??????"老鐵" #define?NGINX_VER??????????"666/"?NGINX_VERSION  6.?#切換至文件目錄 cd?../../  7.?#編譯 ./configure? --prefix=/usr/local/nginx? --user=nginx? --group=nginx? --with-http_stub_status_module  8.?#安裝 make?&&?make?install?-j4  9.?#將配置文件下的之前關(guān)閉版本信息開(kāi)啟 vim?/usr/local/nginx/conf/nginx.conf server_tokens?on;  10.?#重啟nginx systemctl?restart?nginx  11.?#查看版本信息 curl?-I?http://192.168.59.118

      修改用戶(hù)與組

      1.?#修改配置文件 vim?/usr/local/nginx/conf/nginx.conf  user??dayu?dayu;?#取消注釋?zhuān)薷挠脩?hù)為?dayu?,組為?dayu  2.?#創(chuàng)建非登錄用戶(hù) useradd?-s?/sbin/nologin?dayu  3.?#重啟服務(wù) systemctl?restart?nginx  4.?#查看是否修改成功 ps?aux?|?grep?nginx

      Nginx防盜鏈與服務(wù)優(yōu)化配置的示例分析

      Nginx防盜鏈與服務(wù)優(yōu)化配置的示例分析

      Nginx防盜鏈與服務(wù)優(yōu)化配置的示例分析

      緩存時(shí)間

      當(dāng)nginx將網(wǎng)頁(yè)數(shù)據(jù)返回給客戶(hù)端后,可設(shè)置緩存時(shí)間,以方便在日后進(jìn)行相同內(nèi)容的請(qǐng)求時(shí)直接返回,避免重復(fù)請(qǐng)求,加快了訪問(wèn)速度一般針對(duì)靜態(tài)網(wǎng)頁(yè)設(shè)置,對(duì)動(dòng)態(tài)網(wǎng)頁(yè)不設(shè)置緩存時(shí)間。

      1.?#修改配置文件 vim?/usr/local/nginx/conf/nginx.conf ????????#添加以下內(nèi)容 ????????location?~?.(jpg|png|bmp|gif)$?{ ????????????root???html; ????????????expires?1d; ????????}   2.?#查看是否有語(yǔ)法錯(cuò)誤 nginx?-t  3.?#重啟服務(wù) systemctl?restart?nginx.service?  4.#在網(wǎng)頁(yè)中查看服務(wù) http://192.168.80.130/good.jpg  ?Cahce-Control:max-age=86400?表示緩存時(shí)間是?86400?秒。 也就是緩存一天的時(shí)間,一天之內(nèi)瀏覽器訪問(wèn)這個(gè)頁(yè)面,都是用緩存中的數(shù)據(jù), 而不需要向?Nginx?服務(wù)器重新發(fā)出請(qǐng)求,減少了服務(wù)器的使用帶寬。

      Nginx防盜鏈與服務(wù)優(yōu)化配置的示例分析

      Nginx防盜鏈與服務(wù)優(yōu)化配置的示例分析

      日志分割

      隨著Nginx運(yùn)行時(shí)間的增加,產(chǎn)生的日志也會(huì)逐漸增加,為了方便掌握Nginx的運(yùn)行狀態(tài),需要時(shí)刻關(guān)注Nginx日志文件。太大的日志文件對(duì)監(jiān)控是一個(gè)大災(zāi)難,不便于分析排查,需要定期的進(jìn)行日志文件的切割。

      1.?#寫(xiě)腳本 vim?/usr/local/nginx/nginx_log.sh?  #!/bin/bash #this?is?for?divide?nginx?log d=$(date?+%F?-d?-1day)???????????????????????????????????????#顯示前一天的時(shí)間 path="/var/log/nginx"??? pid="/usr/local/nginx/logs/nginx.pid"  [?-d?$path?]?||mkdir?-p?$path????????????????????????????????#創(chuàng)建日志文件目錄 mv?/usr/local/nginx/logs/access.log?${path}/www.yxp.com-$d???#移動(dòng)并重命名日志文件 kill?-USR1?$(cat?$pid)???????????????????????????????????????#重建新日志文件 find?$path?-mtime?+30?-delete????????????????????????????????#刪除30天之前的日志文件  2.?#賦予權(quán)限 chmod?+x?/usr/local/nginx/nginx_log.sh?  3.?#計(jì)劃任務(wù) [root@localhost?nginx]#crontab?-e  30?1?*?*?*?/usr/local/nginx/nginx_log.sh

      Nginx防盜鏈與服務(wù)優(yōu)化配置的示例分析

      Nginx防盜鏈與服務(wù)優(yōu)化配置的示例分析

      Nginx防盜鏈與服務(wù)優(yōu)化配置的示例分析

      配置Nginx實(shí)現(xiàn)連接超時(shí)

      HTTP有一個(gè)KeepAlive模式,它告訴web服務(wù)器在處理完一個(gè)請(qǐng)求后保持這個(gè)TCP連接的打開(kāi)狀態(tài)。若接收到來(lái)自同一客戶(hù) 端的其它請(qǐng)求,服務(wù)端會(huì)利用這個(gè)未被關(guān)閉的連接,而不需要再建立一個(gè)連接。

      KeepAlive在一段時(shí)間內(nèi) 保持打開(kāi)狀態(tài),它們會(huì)在這段時(shí)間內(nèi)占用資源。占用過(guò)多就會(huì)影響性能。

      vim?/usr/?local/nginx/conf/nginx.?conf http?{ ...... keepalive_?timeout?65?180; client?header?timeout?80; client_?body_?timeout?80; ...... } systemctl?restart?nginx

      keepalive_ timeout

      • 指定KeepAlive的超時(shí)時(shí)間(timeout) 。指定每個(gè)TCP連接最多可以保持多長(zhǎng)時(shí)間,服務(wù)器將會(huì)在這個(gè)時(shí)間后關(guān)閉連接。

      • Nginx的默認(rèn)值是65秒,有些瀏覽器最多只保持60秒,所以可以設(shè)定為60秒。若將它設(shè)置為0,就禁止了keepalive 連接。

      • 第二個(gè)參數(shù)(可選的)指定了在響應(yīng)頭Keep-Alive: timeout=t ime中的time值。這個(gè)頭能夠讓一 些瀏覽器主動(dòng)關(guān)閉連接,這樣服務(wù)器就不必去關(guān)閉連接了。沒(méi)有這個(gè)參數(shù),Nginx 不會(huì)發(fā)送Keep- Alive 響應(yīng)頭。

      client_ header_ timeout

      客戶(hù)端向服務(wù)端發(fā)送-一個(gè)完整的request header 的超時(shí)時(shí)間。如果客戶(hù)端在指定時(shí)間內(nèi)沒(méi)有發(fā)送一個(gè)完整的request header, Nginx返回HTTP 408 (Request Timed Out) 。

      client_ body_ timeout

      指定客戶(hù)端與服務(wù)端建立連接后發(fā)送requestbody的超時(shí)時(shí)間。如果客戶(hù)端在指定時(shí)間內(nèi)沒(méi)有發(fā)送任何內(nèi)容,Nginx返回HTTP?408 (Request Timed Out )。

      Nginx防盜鏈與服務(wù)優(yōu)化配置的示例分析

      Nginx防盜鏈與服務(wù)優(yōu)化配置的示例分析

      更改Nginx運(yùn)行進(jìn)程數(shù)

      在高并發(fā)場(chǎng)景,需要啟動(dòng)更多的Nginx進(jìn)程以保證快速響應(yīng),以處理用戶(hù)的請(qǐng)求,避免造成阻塞

      更改進(jìn)程數(shù)的配置方法

      修改配置文件,修改進(jìn)程配置參數(shù)

      修改配置文件的worker_processes參數(shù)

      • 一般設(shè)為CPU的個(gè)數(shù)或者核數(shù)

      • 在高并發(fā)的情況下可設(shè)置為CPU個(gè)數(shù)或者核數(shù)的2倍

      增加進(jìn)程數(shù),可減少系統(tǒng)的開(kāi)銷(xiāo),提升服務(wù)速度

      使用ps aux查看運(yùn)行進(jìn)程數(shù)的變化情況

      [root@www?conf]#?cat?/proc/cpuinfo?|?grep?-c?"physical" 4 [root@www?conf]#?vi?nginx.conf worker_?processes?4; [root@www?conf]#?systemctl?restart?nginx [root@www?conf]#?ps?aux?|?grep?nginx

      默認(rèn)情況,Nginx的多個(gè)進(jìn)程可能跑在一 個(gè)CPU上,可以分配不同的進(jìn)程給不同的CPU處理,充分利用硬件多核多CPU。
      在一臺(tái)4核物理服務(wù)器,進(jìn)行配置,將進(jìn)程進(jìn)行分配。

      [root@www?conf]#?vi?nginx.conf worker_?processes?4; worker_?cpu_?affinity?0001?0010?0100?1000; ? 1代表CPU的位置

      Nginx防盜鏈與服務(wù)優(yōu)化配置的示例分析

      Nginx防盜鏈與服務(wù)優(yōu)化配置的示例分析

      Nginx防盜鏈與服務(wù)優(yōu)化配置的示例分析

      配置Nginx實(shí)現(xiàn)網(wǎng)頁(yè)優(yōu)化壓縮功能

      • Nginx的ngx_http_ gzip_module壓縮模塊提供對(duì)文件內(nèi)容壓縮的功能

      • 允許Nginx服務(wù)器將輸出內(nèi)容在發(fā)送客戶(hù)端之前進(jìn)行壓縮,以節(jié)約網(wǎng)站帶寬,提升用戶(hù)的訪問(wèn)體驗(yàn),默認(rèn)已經(jīng)安裝

      • 可在配置文件中加入相應(yīng)的壓縮功能參數(shù)對(duì)壓縮性能進(jìn)行優(yōu)化

      壓縮功能參數(shù)

      1.?#修改配置文件 ???gzip?on;??????????????????????????#取消注釋?zhuān)_(kāi)啟gzip壓縮功能 ???gzip_min_length?1k;??????????????#最小壓縮文件大小 ???gzip_buffers?4?16k;??????????????#壓縮緩沖區(qū),大小為4個(gè)16k緩沖區(qū) ???gzip_http_version?1.1;???????????#壓縮版本(默認(rèn)1.1,前端如果是squid2.5請(qǐng)使用1.0) ???gzip_comp_level?6;???????????????#壓縮比率 ???gzip_vary?on;????????????????????#支持前端緩存服務(wù)器存儲(chǔ)壓縮頁(yè)面 ???gzip_types?text/plain?text/javascript?application/x-javascript?text/css?text/xml?application/xml?application/xml+rss?image/jpg?image/jpeg?image/png?image/gif?application/x-httpd-php?application/javascript?application/json;???????#壓縮類(lèi)型,表示哪些網(wǎng)頁(yè)文檔啟用壓縮功能  2.?#重啟服務(wù) systemctl?restart?nginx.service?   3.?#網(wǎng)頁(yè)查看 http://192.168.59.118/game.png

      Nginx防盜鏈與服務(wù)優(yōu)化配置的示例分析

      Nginx防盜鏈與服務(wù)優(yōu)化配置的示例分析

      Nginx防盜鏈與服務(wù)優(yōu)化配置的示例分析

      Nginx防盜鏈與服務(wù)優(yōu)化配置的示例分析

      配置防盜鏈

      在企業(yè)網(wǎng)站服務(wù)中,一般都要配置防盜鏈功能,以避免網(wǎng)站內(nèi)容被非法盜用,造成經(jīng)濟(jì)損失,也避免了不必要的帶寬浪費(fèi)。

      Nginx 的防盜鏈功能也非常強(qiáng)大,在默認(rèn)情況下,只需要進(jìn)行很簡(jiǎn)單的配置,即可實(shí)現(xiàn)防盜鏈處理。

      vim?/usr/?local/nginx/conf/nginx.?conf http?{ ...... ???server?{ ?????...... ? ????location?~*?.?(jpglgiflswf)$?{ ? ??????valid_?referers?none?blocked?*?.?kgc.?com?kgc?.?com; ? ????????if?(?$invalid?referer?)?{ ? ????????rewrite?^/?http:?I?/www.?kgc.?com/error。pngi ? ???????????#return?403; ? ?????????} ? ??????} ? ??...... ? ???} }

      ~* . (jpgIgifIswf)$ :這段正則表達(dá)式表示匹配不區(qū)分大小寫(xiě),以.jpg或.gif 或.swf結(jié)尾的文件:
      ?
      valid_ referers :設(shè)置信任的網(wǎng)站,可以正常使用圖片:
      ?
      none:允許沒(méi)有http_refer的請(qǐng)求訪問(wèn)資源(根據(jù)Referer的定義,它的作用是指示一個(gè)請(qǐng)求是從哪里鏈接過(guò)來(lái)的,如果直接在瀏覽器的地址欄中輸入一個(gè)資源的URL地址,那么這種請(qǐng)求是不會(huì)包含Referer 字段的),如http:/ /www.dayu.com/ game.jpg
      ?
      我們使用http://www. dayu.com訪問(wèn)顯示的圖片,可以理解成http://www. dayu.com/game.jpg這個(gè)請(qǐng)求是從http://www. dayu.com這個(gè)鏈接過(guò)來(lái)的。
      ?
      blocked: 允許不是http://開(kāi)頭的, 不帶協(xié)議的請(qǐng)求訪問(wèn)資源;
      ?
      *.?dayu. com: 只允許來(lái)自指定域名的請(qǐng)求訪問(wèn)資源,如http://www. dayu.com
      ?
      if語(yǔ)句:如果鏈接的來(lái)源域名不在valid_ referers所列出的列表中,$invalid_ referer為true, 則執(zhí)行后面的操作,即進(jìn)行重寫(xiě)或返回403 頁(yè)面。

      Nginx防盜鏈與服務(wù)優(yōu)化配置的示例分析

      Nginx防盜鏈與服務(wù)優(yōu)化配置的示例分析

      第二臺(tái)機(jī)器配置內(nèi)容:

      Nginx防盜鏈與服務(wù)優(yōu)化配置的示例分析

      Nginx防盜鏈與服務(wù)優(yōu)化配置的示例分析

      Nginx防盜鏈與服務(wù)優(yōu)化配置的示例分析

      Nginx防盜鏈與服務(wù)優(yōu)化配置的示例分析

      Nginx防盜鏈與服務(wù)優(yōu)化配置的示例分析

      ?現(xiàn)在還是可以正常顯示的

      Nginx防盜鏈與服務(wù)優(yōu)化配置的示例分析

      現(xiàn)在防盜圖出現(xiàn)

      補(bǔ)充:面試題:用過(guò)哪些nginx的模塊和做過(guò)哪些優(yōu)化?

      gzip ? ? ? ### 網(wǎng)站數(shù)據(jù)壓縮
      rewrite ? ? ? ### 地址重寫(xiě)
      stub_ status ? ? ### ?統(tǒng)計(jì)nginx服務(wù)狀態(tài)
      ssl 支持https, ? ? ?### 得先用openss1或者TLS工具生成相關(guān)證書(shū)和私鑰文件。再在ssl模塊配置中調(diào)用證書(shū)和私鑰
      upstream ? ? ?### 使用nginx做反向代理web群集,定義群集服務(wù)器池
      stream ? ? ? ### 用于定義4層反向代理的
      auth_ basic ? ? ### 用戶(hù)認(rèn)證
      fastcgi ? ? ? ?### 轉(zhuǎn)發(fā)請(qǐng)求給php
      –with-模塊名 ? ? ? ### 開(kāi)啟模塊
      –without-模塊名 ? ? ### 禁用模塊
      ?
      隱藏版本號(hào) 、壓縮、緩存、防盜鏈、連續(xù)保持、優(yōu)化工作進(jìn)程和進(jìn)程連接數(shù)、日志分割、反向代理?

      ? 版權(quán)聲明
      THE END
      喜歡就支持一下吧
      點(diǎn)贊11 分享