欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

Apache深度優(yōu)化-創(chuàng)新互聯(lián)

博文大綱:

曲松ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書(shū)未來(lái)市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)公司的ssl證書(shū)銷(xiāo)售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書(shū)合作)期待與您的合作!
  • 一、開(kāi)啟apache的Gzip(deflate)功能
  • 二、開(kāi)啟expires緩存功能
  • 三、禁止Apache進(jìn)行目錄遍歷
  • 四、隱藏apache的版本信息
  • 五、apache日志切割
  • 六、配置防盜鏈

一、開(kāi)啟apache的Gzip(deflate)功能

gzip可以極大的加速網(wǎng)站,壓縮比率通常在40%~80%之間,在之前的版本中,Gizp是第三方壓縮工具,但是在Gzip 2版本后,Apache自己開(kāi)發(fā)了deflate模塊,用來(lái)實(shí)現(xiàn)壓縮功能。

如果要開(kāi)啟apache的壓縮功能,需要在編譯安裝apache時(shí),增加“--enable-deflate”配置項(xiàng),并且必須在主配置文件中打開(kāi)下面兩個(gè)模塊:

LoadModule deflate_module modules/mod_deflate.so
LoadModule headers_module modules/mod_headers.so

注意:如果在編譯安裝時(shí),沒(méi)有增加“--enable-deflate”選項(xiàng),可以使用DSO方式安裝此功能,如下:

[root@www ~]# cd /root/httpd-2.4.23/modules/filters/ #切換至apache 源碼包 mod_deflate 所在的目錄下
[root@www ~]#  /usr/local/http-2.4.23/bin/apxs -c -i -a mod_deflate.c #以 dso 的方式編譯安裝到 apache 中

如果報(bào)錯(cuò)如下:

Apache深度優(yōu)化

此報(bào)錯(cuò)是缺少zlib-devel的安裝包,直接執(zhí)行“yum -y install zlib-devl”進(jìn)行安裝即可,然后再次安裝deflate功能。

確認(rèn)安裝成功:

[root@www filters]# ll /usr/local/http-2.4.23/modules/mod_deflate.so  #檢查 mod_deflate 是否安裝,成功安裝這里會(huì)顯示出該文件

關(guān)于上面執(zhí)行的命令“/usr/local/http-2.4.23/bin/apxs -c -i -a mod_deflate.c”。

選項(xiàng)解釋如下:

  • -c:表示需要執(zhí)行編譯操作;
  • -i:表示需要執(zhí)行安裝操作,以安裝一個(gè)或多個(gè)動(dòng)態(tài)共享對(duì)象到服務(wù)器的modeles目錄中。
  • -a:此選項(xiàng)是自動(dòng)增加一個(gè)LoadModule 行到 httpd.conf 文件中,以啟用此模塊,或者,如果此行已經(jīng)存在,則啟用它。

安裝完成后,默認(rèn)是啟用了這兩個(gè)模塊的,但是檢查apache的主配置文件時(shí),可能會(huì)報(bào)錯(cuò),如下:

Apache深度優(yōu)化

解決辦法:需要在 LoadModule deflate_modulemodules/mod_deflate.so 配置項(xiàng)的前面加載 zlib.so。剛才yum安裝zlib時(shí),它默認(rèn)安裝在了/usr/lib64目錄下,所以在apache主配置文件中,在 LoadModule deflate_module modules/mod_deflate.so 這行的上一行添加 LoadFile /usr/lib64/libz.so 即可。

最后確認(rèn)開(kāi)啟壓縮功能(apache主配置文件中必須開(kāi)啟以下三行,這三行不一定在同一位置,但是LoadFile /usr/lib64/libz.so必須在那兩個(gè)之前):

LoadFile /usr/lib64/libz.so
LoadModule deflate_module modules/mod_deflate.so
LoadModule headers_module modules/mod_headers.so

至此,壓縮功能就開(kāi)啟了,接下來(lái)配置壓縮的功能。

在apache的主配置文件的末尾寫(xiě)入以下內(nèi)容(在添加代碼前最好先確定以下代碼是否存在):

<IfModule mod_deflate.c>         <!--deflate模塊配置-->
DeflateCompressionLevel 6     <!--壓縮等級(jí)范圍0-9,數(shù)字越大,壓縮比越高,建議取中,否則會(huì)加大CPU的壓力-->
SetOutputFilter DEFLATE     <!--設(shè)置輸出過(guò)濾器,對(duì)輸出啟用壓縮,就像一個(gè)開(kāi)關(guān)一樣,告訴apache對(duì)傳輸?shù)綖g覽器的內(nèi)容進(jìn)行壓縮-->
AddOutputFilterByType DEFLATE text/*
<!--設(shè)置對(duì)文件是對(duì)文本的內(nèi)容進(jìn)行壓縮,如text/html  text/css text/plain等-->
AddOutputFilterByType  DEFLATE  application/ms*  application/vnd* application/postscript application/javascript application/x-javascript 
<!--對(duì)JavaScript文件進(jìn)行壓縮-->
AddOutputFilterByType DEFLATE application/x-httpd-php application/x-httpd-fastphp
<!--對(duì)php類(lèi)型的文件進(jìn)行壓縮-->
SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary
<!--設(shè)置圖片類(lèi)型不進(jìn)行壓縮,圖片壓縮后的大小可能超過(guò)原來(lái)的大小,而且可能會(huì)失真,所以不對(duì)圖片進(jìn)行壓縮。注:?號(hào)表示不會(huì)捕獲()里的內(nèi)容了-->
SetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary
<!--同上,就是設(shè)置不對(duì) exe,tgz,gz 等的文件進(jìn)行壓縮-->
SetEnvIfNoCase Request_URI .(?:pdf|mov|avi|mp3|mp4|rm)$ no-gzip dont-vary 
<!--同上就是設(shè)置不對(duì) pdf,avi,mp3 等的文件進(jìn)行壓縮-->
</IfModule>
<!--以下是設(shè)置壓縮信息的日志輸出-->
DeflateFilterNote Input input_info      <!--聲明輸入流的 byte 數(shù)量-->
DeflateFilterNote Output output_info     <!--聲明輸出流的 byte 數(shù)量-->
DeflateFilterNote Ratio ratio_info     <!--聲明壓縮的百分比-->
LogFormat '"%r" %{output_info}n/%{input_info}n (%{ratio_info}n%%)' deflate    <!--聲明日志格式-->
CustomLog logs/deflate_log.log deflate    <!--指定日志的存放路徑-->

可根據(jù)上面的配置,定義自己需要的壓縮項(xiàng)目,要壓縮的文件類(lèi)型根據(jù)自己所需要的配置即可(注:除了圖片之外,flash 的 swf 文件也是不用啟用 GZip 壓縮的。)。

去除注釋后的代碼如下:

<IfModule mod_deflate.c>         
DeflateCompressionLevel 6  
SetOutputFilter DEFLATE  
AddOutputFilterByType DEFLATE text/*
AddOutputFilterByType  DEFLATE  application/ms*  application/vnd* application/postscript application/javascript application/x-javascript 
AddOutputFilterByType DEFLATE application/x-httpd-php application/x-httpd-fastphp
SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI .(?:pdf|mov|avi|mp3|mp4|rm)$ no-gzip dont-vary 
</IfModule>
DeflateFilterNote Input input_info   
DeflateFilterNote Output output_info   
DeflateFilterNote Ratio ratio_info  
LogFormat '"%r" %{output_info}n/%{input_info}n (%{ratio_info}n%%)' deflate 
CustomLog logs/deflate_log.log deflate

修改完成后,保存退出并且重啟http服務(wù),使用谷歌瀏覽器訪問(wèn)(在訪問(wèn)前按“F12”),即可看到壓縮相關(guān)的信息(最好修改網(wǎng)頁(yè)的文件,使其大一些,否則不會(huì)啟用壓縮,看不到效果),如下:

Apache深度優(yōu)化

查看壓縮信息產(chǎn)生的日志:

[root@apache http-2.4.23]# cat logs/deflate_log.log      #查看壓縮日志
"GET / HTTP/1.1" 74/4545 (1%)    #74表示壓縮后的大小,4545表示壓縮前的大小,末尾的括號(hào)中是壓縮率
"GET / HTTP/1.1" 74/4545 (1%)
"-" -/- (-%)
[root@apache http-2.4.23]# ll htdocs/index.html     #可以查看網(wǎng)頁(yè)的大小是否為壓縮前的大小“4545”
-rw-r--r--. 1 root root 4545 10月 12 23:00 htdocs/index.html

壓縮方面的優(yōu)化,至此結(jié)束。

二、開(kāi)啟expires緩存功能

expires功能可以較少20%~30%左右的重復(fù)請(qǐng)求,讓重復(fù)的用戶對(duì)指定的頁(yè)面請(qǐng)求結(jié)果都cache在本地,而無(wú)需向服務(wù)器發(fā)出請(qǐng)求。但是經(jīng)常發(fā)生更改的文件不建議這么做。

1、在沒(méi)有緩存機(jī)制的情況下,先查看以下獲取的響應(yīng)報(bào)文。

[root@apache htdocs]# curl -I 127.0.0.1/test.jpg      #訪問(wèn)一個(gè)圖片
HTTP/1.1 200 OK
Date: Sun, 13 Oct 2019 02:10:34 GMT
Server: Apache/2.4.23 (Unix)
Last-Modified: Mon, 22 Jul 2019 05:55:51 GMT
ETag: "415bf-58e3eba7687c0"
Accept-Ranges: bytes
Content-Length: 267711
Content-Type: image/jpeg            #這就是內(nèi)容的格式,在定義緩存機(jī)制時(shí)的類(lèi)型就是根據(jù)這來(lái)定義的
#可以看到,上面沒(méi)有出現(xiàn)cache等相關(guān)字樣

2、配置expires緩存功能:

[root@apache htdocs]# vim /usr/local/http-2.4.23/conf/httpd.conf     #編輯主配置文件
                       ..................#省略部分內(nèi)容
LoadModule expires_module modules/mod_expires.so     #去掉此行注釋符號(hào)
#然后在配置文件的末尾添加以下expires規(guī)則
<IfModule mod_expires.c>
ExpiresActive On            #開(kāi)啟緩存機(jī)制
#以下是定義各種類(lèi)型的文件緩存多長(zhǎng)時(shí)間
ExpiresByType text/css "now plus 1 month"
ExpiresByType application/x-javascript "now plus 5 day"
ExpiresByType image/jpeg "access plus 30 days"   #這里將圖片的緩存時(shí)間設(shè)置為30天
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/bmp "access plus 1 month"
ExpiresByType image/x-icon "access plus 1 month"
ExpiresByType image/png "access plus 1 minute"
ExpiresByType application/x-shockwave-flash "access plus 1 month"
ExpiresDefault "now plus 0 minute"    #這行表示上面沒(méi)有定義的,則不進(jìn)行緩存。
</IfModule>
#寫(xiě)入后,保存退出即可。
[root@apache htdocs]# apachectl -t         #測(cè)試配置文件是否有誤
Syntax OK
[root@apache htdocs]# apachectl restart      #重啟apache,以便剛才的更改生效
無(wú)注釋的配置文件如下:
LoadModule expires_module modules/mod_expires.so
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType text/css "now plus 1 month"
ExpiresByType application/x-javascript "now plus 5 day"
ExpiresByType image/jpeg "access plus 30 days"
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/bmp "access plus 1 month"
ExpiresByType image/x-icon "access plus 1 month"
ExpiresByType image/png "access plus 1 minute"
ExpiresByType application/x-shockwave-flash "access plus 1 month"
ExpiresDefault "now plus 0 minute"
</IfModule>
緩存機(jī)制的配置格式:ExpiresByType type/encoding "<base> [plus] {<num><type>}"

1、其中<base>是下列之一:

  • access(相對(duì)于客戶端訪問(wèn)的時(shí)間)
  • now(相當(dāng)于access)
  • modification(相對(duì)于最后一次修改源文件后的緩存時(shí)間)
    2、該plus關(guān)鍵字是可選的。num 應(yīng)該是整數(shù)值,并且type是以下之一:
  • years
  • months
  • weeks
  • days
  • hours
  • minutes
  • seconds

也可以使用以下格式來(lái)定義緩存機(jī)制:

ExpiresByType image/jpeg A2592000   #表示圖片的緩存是1個(gè)月
ExpiresByType text/html M604800    #表示HTML文檔的有效期是最后修改時(shí)刻后的一星期

如果使用“A”(等同于access)“M”(等同于modification)來(lái)定義緩存有效期,那么只能以秒來(lái)計(jì)算。
結(jié)論:expires模塊可以將到期日期設(shè)置為相對(duì)于上次修改源文件的時(shí)間,還是相對(duì)于客戶端訪問(wèn)的時(shí)間。

3、進(jìn)行訪問(wèn)測(cè)試,查看是否有緩存機(jī)制:

[root@apache htdocs]# curl -I 127.0.0.1/test.jpg    #訪問(wèn)某個(gè)圖片
HTTP/1.1 200 OK
Date: Sun, 13 Oct 2019 02:16:44 GMT
Server: Apache/2.4.23 (Unix)
Last-Modified: Mon, 22 Jul 2019 05:55:51 GMT
ETag: "415bf-58e3eba7687c0"
Accept-Ranges: bytes
Content-Length: 267711
Cache-Control: max-age=2592000       #這就是緩存的時(shí)間,單位是秒
Expires: Tue, 12 Nov 2019 02:16:44 GMT
Content-Type: image/jpeg

關(guān)于緩存的配置格式,可以閱讀其官方文檔進(jìn)行詳細(xì)了解。

三、禁止Apache進(jìn)行目錄遍歷

當(dāng)web服務(wù)器收到請(qǐng)求報(bào)文時(shí),會(huì)自動(dòng)在網(wǎng)頁(yè)根目錄下尋找index.html文件,那么,如果沒(méi)有這個(gè)文件呢?

[root@apache htdocs]# ls    #確認(rèn)web服務(wù)器的網(wǎng)頁(yè)根目錄沒(méi)有index.html文件
a.sh  images  test.jpg

客戶端就會(huì)看到以下界面:

Apache深度優(yōu)化

可以看到,如果沒(méi)有index.html文件,那么我們的網(wǎng)頁(yè)結(jié)構(gòu)就直接暴露給了client,這樣多少會(huì)存在一些隱患,所以,怎么解決呢?

解決方法如下:

[root@apache htdocs]# vim ../conf/httpd.conf     #編輯主配置文件
Options Indexes FollowSymLinks      #定位到這行
#更改如下:
Options  FollowSymLinks         #將中間的Indexes刪除即可保存退出
[root@apache htdocs]# apachectl restart        #重啟apache以便生效

Indexes 的作用就是當(dāng)該目錄下沒(méi)有 index.html 文件時(shí),就顯示目錄結(jié)構(gòu)。

客戶端再次訪問(wèn):
Apache深度優(yōu)化

OK!??!看到的是403頁(yè)面。

四、隱藏apache的版本信息

[root@apache htdocs]# curl -I 127.0.0.1    #查看默認(rèn)apache的狀態(tài)信息
HTTP/1.1 403 Forbidden
Date: Sun, 13 Oct 2019 03:08:39 GMT
'Server: Apache/2.4.23 (Unix) '     #可以看到apache的詳細(xì)版本信息
Content-Type: text/html; charset=iso-8859-1

若想隱藏,須進(jìn)行以下操作:

[root@apache htdocs]# cd ../conf/
[root@apache conf]# vim httpd.conf     #編輯主配置文件
Include conf/extra/httpd-default.conf       #去掉此行前的注釋符號(hào)后保存退出
[root@apache conf]# pwd       #查看當(dāng)前工作路徑
/usr/local/http-2.4.23/conf
[root@apache conf]# vim extra/httpd-default.conf    #編輯此文件
#找到下面這兩行:
ServerTokens Full
ServerSignature Off
#更改如下:
ServerTokens Prod
ServerSignature On
#更改后保存退出
[root@apache conf]# apachectl restart     #重啟服務(wù),以便更改生效
[root@apache conf]# curl -I 127.0.0.1     #再次訪問(wèn)查看
HTTP/1.1 403 Forbidden
Date: Sun, 13 Oct 2019 03:19:17 GMT
Server: Apache           #發(fā)現(xiàn)只有apache了,而沒(méi)有了詳細(xì)的版本
Content-Type: text/html; charset=iso-8859-1

如果你需要徹底將版本之類(lèi)的信息進(jìn)行改頭換面,你就需要在編譯之前做準(zhǔn)備或者進(jìn)行重新編譯了。在重新編譯時(shí),修改apache的源碼包下 include 目錄下的 ap_release.h 配置文件

#define AP_SERVER_BASEVENDOR "Apache Software Foundation" #服務(wù)的供應(yīng)商名稱(chēng)
#define AP_SERVER_BASEPROJECT "Apache HTTP Server" #服務(wù)的項(xiàng)目名稱(chēng)
#define AP_SERVER_BASEPRODUCT "Apache" #服務(wù)的產(chǎn)品名
#define AP_SERVER_MAJORVERSION_NUMBER 2 #主要版本號(hào)
#define AP_SERVER_MINORVERSION_NUMBER 4 #小版本號(hào)
#define AP_SERVER_PATCHLEVEL_NUMBER 23 #補(bǔ)丁級(jí)別
#define AP_SERVER_DEVBUILD_BOOLEAN 0 #

上述列出的行,可以修改成自己想要的,然后編譯安裝之后,客戶端就徹底不知道你的版本號(hào)了。

五、apache日志切割

隨著網(wǎng)站的訪問(wèn)量越來(lái)越大,web server產(chǎn)生的日志文件也會(huì)越來(lái)越大,如果不進(jìn)行分割,必定會(huì)有一定程度的不方便。因此,管理好這些海量的日志對(duì)網(wǎng)站的意義是很大的。

日志分割共兩種方法。

方法1:使用rotatelogs(apache自帶的工具)按天分割日志,每隔一天記錄一個(gè)日志

[root@apache conf]# vim httpd.conf   #編輯主配置文件
#將以下兩行配置注釋掉(去除默認(rèn)的日志記錄)
#ErrorLog "logs/error_log"
#CustomLog "logs/access_log" common
#然后最好在CustomLog "logs/access_log" common配置的下一行添加如下內(nèi)容(以下內(nèi)容不可以直接復(fù)制,請(qǐng)看下面的解釋?zhuān)?ErrorLog "|/usr/local/http-2.4.23/bin/rotatelogs -l logs/error_%Y-%m-%d.log 86400"
CustomLog "|/usr/local/http-2.4.23/bin/rotatelogs -l logs/access_%Y-%m-%d.log 86400" combined
#添加后,保存退出即可

上面兩行的配置項(xiàng),必須在<IfModule log_config_module> </IfModule>標(biāo)簽中寫(xiě)入。這就是我為什么說(shuō)最好寫(xiě)在CustomLog "logs/access_log" common配置的下一行的原因,因?yàn)檫@行就在該標(biāo)簽中,寫(xiě)在它的下一行,錯(cuò)不了。

在上面添加的內(nèi)容中,86400為輪轉(zhuǎn)的時(shí)間,單位是秒(也就是一天生成一個(gè)日志文件);
需要注意我這里的rotatelogs命令的絕對(duì)路徑,需根據(jù)自己的實(shí)際安裝路徑來(lái)定,不要直接復(fù)制。

[root@apache conf]# apachectl restart    #重啟服務(wù),以便更改生效
[root@apache conf]# ls ../logs/   #查看日志文件,會(huì)發(fā)現(xiàn)沒(méi)有access的切割日志
access_log  'error_2019-10-13.log'  error_log  httpd.pid
#此時(shí),原來(lái)的access_log和error_log日志文件已經(jīng)可以刪除了
#沒(méi)有access的切割日志是因?yàn)楦暮筮€沒(méi)有訪問(wèn)過(guò)
[root@apache conf]# curl 127.0.0.1 &> /dev/null    #訪問(wèn)一下
[root@apache conf]# ls ../logs/    #再次查看,就有了
'access_2019-10-13.log  error_2019-10-13.log'  httpd.pid
access_log             error_log

由于 apache 自帶的日志輪詢工具 rotatelogs,據(jù)說(shuō)在進(jìn)行日志切割時(shí)容易丟日志,因此我們通常使用 cronolog (也就是方法2)進(jìn)行日志輪詢。

方法2:使用cronolog為每一天建立一個(gè)新的日志

同樣需要注釋掉主配置文件中的下面兩行:

#ErrorLog "logs/error_log"
#CustomLog "logs/access_log" common

下載我提供的cronolog源碼包

[root@apache src]# rz           #使用xshell上傳我提供的源碼包
#進(jìn)行編譯安裝
[root@apache src]# tar zxf cronolog-1.6.2.tar.gz   
[root@apache src]# cd cronolog-1.6.2/
[root@apache cronolog-1.6.2]# ./configure && make && make install
[root@apache conf]# pwd      #切換工作路徑至此
/usr/local/http-2.4.23/conf
[root@apache conf]# vim httpd.conf     #編輯主配置文件
#將方法1中寫(xiě)入的日志切割配置項(xiàng)刪除,寫(xiě)入下面的兩行配置
ErrorLog "|/usr/local/sbin/cronolog logs/error-%Y-%m-%d.log"
CustomLog "|/usr/local/sbin/cronolog logs/access-%Y-%m-%d.log" combined
#寫(xiě)完保存退出即可
[root@apache logs]# ls    #為了避免混亂,我移走了原有的日志文件
httpd.pid
[root@apache logs]# apachectl restart   #重啟
[root@apache logs]# curl 127.0.0.1 &> /dev/null    #訪問(wèn)一下,以便生成訪問(wèn)日志文件
[root@apache logs]# ls     #查看確認(rèn),
access-2019-10-13.log  error-2019-10-13.log  httpd.pid

至此,即可實(shí)現(xiàn)了每天的日志文件分開(kāi)單獨(dú)存放。

如果 Apache 中有多個(gè)虛擬主機(jī),最好每個(gè)虛擬主機(jī)中放置一個(gè)這樣的代碼,并將日志文件名改成不同的名字。

3、附加

如果網(wǎng)站訪問(wèn)量實(shí)在過(guò)于龐大,那么我們可能更需要的是將日志按小時(shí)分割,然后按小時(shí)分割的日志存放在一個(gè)目錄中,也就是說(shuō),每天對(duì)應(yīng)一個(gè)目錄,這個(gè) 目錄下存放的是當(dāng)天產(chǎn)生的按小時(shí)分割的日志。

實(shí)現(xiàn)如下:

只需將方法2中寫(xiě)入的兩行配置項(xiàng),更改為如下即可:

[root@apache conf]# vim httpd.conf    #更改如下
ErrorLog "|/usr/local/sbin/cronolog logs/error_%Y-%m-%d/error_log.%H"
CustomLog "|/usr/local/sbin/cronolog logs/access_%Y-%m-%d/access_log.%H" combined
[root@apache conf]# apachectl restart    #重啟
[root@apache logs]# curl 127.0.0.1      #訪問(wèn)一下
[root@apache http-2.4.23]# pwd     #切換工作路徑
/usr/local/http-2.4.23  
[root@apache http-2.4.23]# tree logs/      #使用tree命令查看
logs/
|-- access_2019-10-13    #訪問(wèn)的日志日期
|   `-- access_log.12         #12點(diǎn)產(chǎn)生的
|-- error_2019-10-13      #錯(cuò)誤的日志日期
|   `-- error_log.12          #也是12點(diǎn)產(chǎn)生的
`-- httpd.pid

注意:以上兩個(gè)管道日志文件程序還有一點(diǎn)不同之處是使用 cronolog 時(shí)如果日志是放在某個(gè)不存在的路徑則會(huì)自動(dòng)創(chuàng)建目錄,而使用 rotatelogs 時(shí)不能自動(dòng)創(chuàng)建,這一點(diǎn)要特別注意

六、配置防盜鏈

有時(shí)候,你的網(wǎng)站莫名其妙的訪問(wèn)量變大,不要高興的太早,有可能是被別人盜鏈了。
舉個(gè)例子:比如你搭了個(gè)論壇,里面有些熱點(diǎn)圖片、視頻;然后別人將他網(wǎng)站上訪問(wèn)圖片的地址重定向到你的 論壇上,這樣他的服務(wù)器就可以空閑出來(lái)了;也就是說(shuō)別人訪問(wèn)他網(wǎng)站的圖片視頻,消耗的卻是你服務(wù)器的資源。

如果解決這個(gè)問(wèn)題,需要借助apache的rewrite模塊,配置如下:

[root@apache conf]# vim httpd.conf      #編輯主配置文件
#確認(rèn)有以下的配置項(xiàng),并且去掉注釋?zhuān)魶](méi)有下面這行,則需安裝rewrite模塊
LoadModule rewrite_module modules/mod_rewrite.so

開(kāi)啟rewrite模塊后,找到自己網(wǎng)站對(duì)應(yīng)的配置文件(如主配置文件或虛擬主機(jī)配置文件中),在末尾加入以下代碼:

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://test.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://test.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.test.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.test.com$ [NC]
RewriteRule .*\.(gif|jpg|swf)$ http://www.test.com/about/nolink.png [R,NC,L]

相關(guān)選項(xiàng)解釋如下:

  • RewriteEngine On:?jiǎn)⒂胷ewrite,必須寫(xiě)上;
  • RewriteCond......:在寫(xiě)RewriteRule之前,可以有一條或多條,用于測(cè)試rewrite的匹配條件,具體寫(xiě)法,后面再聊;
  • .RewriteRule:配置規(guī)則;
  • %{HTTP_REFERER}:服務(wù)器變量,http referer是header的一部分,當(dāng)瀏覽器向web服務(wù)器發(fā)送請(qǐng)求的時(shí)候,一般會(huì)帶上referer,告訴服務(wù)器是我是從哪個(gè)頁(yè)面鏈接過(guò)來(lái)的,服務(wù)器就借此可以獲取一些信息用于處理,比如從我主頁(yè)上鏈接到一個(gè)朋友那里,他的服務(wù)器就可以從http referer中統(tǒng)計(jì)出每天有多少用戶點(diǎn)擊我主頁(yè)上的鏈接訪問(wèn)他的網(wǎng)站;
  • [ NC]指的是不區(qū)分大小寫(xiě),[R]強(qiáng)制重定向 redirect;
  • 字母 L 表示如果能匹配本條規(guī)則,那么本條規(guī)則是最后一條(Last),忽略之后的規(guī)則;
  • RewriteCond %{HTTP_REFERER} !^$:這行配置項(xiàng)作用是允許空“HTTP_REFERER”的訪問(wèn),就是用戶直接在瀏覽器輸入U(xiǎn)RL訪問(wèn)該資源,而不是通過(guò)鏈接訪問(wèn)的。
  • RewriteCond %{HTTP_REFERER} !test.com/.$ [NC]和RewriteCond %{HTTP_REFERER} !www.test.com/.$ [NC]是設(shè)置允許訪問(wèn)的HTTP來(lái)源,包括網(wǎng)站自身。
  • RewriteRule .*.(gif|jpg|swf)$ http://www.test.com/about/nolink.png [R,NC,L] 的作用是將不滿足referer條件的訪問(wèn)重定向至nolink.png, nolink.png 位于允許“盜鏈”的目錄 about中,要相當(dāng)注意,不然,警告信息和圖片將無(wú)法在對(duì)方網(wǎng)站上顯示。

注意:測(cè)試時(shí)注意清除緩存。

小結(jié):

Apache深度優(yōu)化

1、紅色部分: 表示自己的信任站點(diǎn)。對(duì)我的站點(diǎn)來(lái)說(shuō),設(shè)置為 http://www.test.com 和http://test.com
2.、綠色部分: 要保護(hù)文件的擴(kuò)展名(以|分開(kāi))。表示以這些為擴(kuò)展名的文件,必須通過(guò)紅色標(biāo)注的網(wǎng)址引用,才可以訪問(wèn)。
3、藍(lán)色部分: 定義被盜鏈時(shí)替代的圖片,讓所有盜鏈 jpg、gif、swf 等文件的網(wǎng)頁(yè),顯示網(wǎng)頁(yè)文檔根目錄下的 about/ nolink.png 文件。 注意:替換顯示的圖片不要放在設(shè)置防盜鏈的目錄中,并
且該圖片文件體積越小越好。當(dāng)然你也可以不設(shè)置替換圖片,而是使用這條語(yǔ)句即可:RewriteRule .*.(gif|jpg|png)$ - [F]
注:[F] (強(qiáng)制 URL 為被禁止的 forbidden),強(qiáng)制當(dāng)前 URL 為被禁止的,即,立即反饋一個(gè) HTTP 響應(yīng)代碼 403(被禁止的)。

對(duì)上述的防盜鏈進(jìn)行測(cè)試:
我這里有A( www.test.com ) 和B( www.daolian.com ) 兩臺(tái)服務(wù)器,其中B服務(wù)器的index.html首頁(yè)文件如下:

[root@localhost html]# cat index.html     #B 服務(wù)器的首頁(yè)文件是個(gè)鏈接,指向了A服務(wù)器的test.jpg文件。
<a >link</a>

client直接訪問(wèn)A服務(wù)器的test.jpg文件時(shí)(其URL和B服務(wù)器的超鏈接地址一樣),得到以下美女一枚:

Apache深度優(yōu)化

但是如果通過(guò)B服務(wù)器的超鏈接來(lái)訪問(wèn)呢?請(qǐng)繼續(xù)看下去。

Apache深度優(yōu)化

What???怎么是只二哈,不應(yīng)該是一枚美女嗎?并且它的URL也不是我們B服務(wù)器指定的超鏈接地址了。
Apache深度優(yōu)化

這就是我們A服務(wù)器的防盜鏈配置生效了!??!

利用rewrite實(shí)現(xiàn)Apache防盜鏈小結(jié)

通過(guò)判斷referer變量的值,來(lái)判斷圖片或資源的引用是否合法,只有在根據(jù)配置符合設(shè)定需求范圍內(nèi)的referer,這樣的網(wǎng)站內(nèi)容,才能調(diào)用訪問(wèn)指定的資源內(nèi)容,從而實(shí)現(xiàn)了資源被網(wǎng)站盜鏈的目的。需要注意的是:是所有的用戶代理(瀏覽器)都會(huì)設(shè)置referer變量,而且有的還可以手工修改erferer,referer是可以被偽造的,上面的配置只是一種簡(jiǎn)單的防護(hù)手段。應(yīng)付一般的盜鏈足矣。

當(dāng)網(wǎng)站被盜鏈,一般可以采取以下措施:

  • 對(duì)本站的圖片、視頻、音頻等文件標(biāo)上自己的站名品牌或者相關(guān)水印;
  • 設(shè)置防火墻,從源頭IP進(jìn)行控制
  • 設(shè)置防盜鏈(根據(jù)referer機(jī)制)

網(wǎng)站被非法盜鏈?zhǔn)褂?,?huì)導(dǎo)致網(wǎng)站帶寬成本加大以及服務(wù)器壓力加大,嚴(yán)重時(shí)會(huì)導(dǎo)致巨額的網(wǎng)站及正常用戶訪問(wèn)受到影響。

好了,防盜鏈至此就實(shí)現(xiàn)了。

———————— 本文至此結(jié)束,感謝閱讀 ————————

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

名稱(chēng)欄目:Apache深度優(yōu)化-創(chuàng)新互聯(lián)
網(wǎng)站網(wǎng)址:http://chinadenli.net/article8/dojeop.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google微信小程序、小程序開(kāi)發(fā)網(wǎng)站設(shè)計(jì)、品牌網(wǎng)站建設(shè)、面包屑導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)