柚子快報(bào)激活碼778899分享:Apache網(wǎng)頁(yè)優(yōu)化
柚子快報(bào)激活碼778899分享:Apache網(wǎng)頁(yè)優(yōu)化
一、網(wǎng)頁(yè)壓縮與緩存
1.1網(wǎng)頁(yè)壓縮
????????網(wǎng)站訪問速度影響因素:應(yīng)用程序響應(yīng)速度、網(wǎng)絡(luò)帶寬、服務(wù)器性能、與客戶端之間網(wǎng)絡(luò)傳輸速度等。其中最重要的是=一個(gè)因素是Apache本身,因此提升Apache執(zhí)行速度(使用網(wǎng)頁(yè)壓縮)是性價(jià)比最高的選擇。
1.gzip介紹
????????一種流行的文件壓縮算法,大約可以減少70%以上的文件大小。利用Apache的gzip模塊可使用該算法對(duì)網(wǎng)頁(yè)內(nèi)容進(jìn)行壓縮后再傳輸給客戶端瀏覽器,從而加快網(wǎng)頁(yè)加載速度
2.HTTP壓縮過程
①服務(wù)器接收到HTTP請(qǐng)求后,先檢查瀏覽器是否支持壓縮(Accept-Encoding信息) ②如果支持,服務(wù)器將檢查請(qǐng)求文件的后綴,如HTML,CSS等靜態(tài)文件,服務(wù)器會(huì)在壓縮緩存目錄中查找是否存在最新的壓縮文件 ③如果不存在最新壓縮文件,服務(wù)器會(huì)返回未壓縮的請(qǐng)求文件,并在緩存目錄中存放該請(qǐng)求的壓縮文件 ④如果存在新壓縮文件,則直接返回請(qǐng)求的壓縮文件 ⑤如果請(qǐng)求是動(dòng)態(tài)文件,則服務(wù)器會(huì)動(dòng)態(tài)壓縮內(nèi)容并返回瀏覽器,但內(nèi)容不會(huì)存放到緩存目錄中
3.Apache的壓縮模塊
①Apache 1.x系列沒有內(nèi)江網(wǎng)頁(yè)壓縮技術(shù),使用的是第三方mod_gzip模塊進(jìn)行壓縮 ②2.x系列內(nèi)建了mod_deflate模塊來取代mod_gzip ③mod_gzip對(duì)服務(wù)器cpu占用更高,但壓縮效率更高
4.mod_deflate 模塊
檢查是否安裝有mod_deflate模塊
[root@www ~]# apachectl -t -D DUMP_MODULES | grep deflate
(1)安裝時(shí)啟用此功能
安裝時(shí)編譯 Apache 添加 mod_deflate 模塊
[root@apache ~]# tar zxf httpd-2.4.25.tar.gz
[root@apache ~]# cd httpd-2.4.25/
[root@apache ttpd-2.4.25]#./configure \
--prefix=/usr/local/httpd \
--enable-so --enable-rewrite \
--enable-charset-lite \
--enable-cgi --enable-deflate
[root@apache httpd-2.4.25]#make && make install
[root@apache httpd-2.4.25]#ln -s /usr/local/httpd/bin/* /usr/local/bin
[root@localhost htdocs]# vim /usr/local/httpd/conf/httpd.conf
LoadModule deflate_module modules/mod_deflate.so
AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascript text/jpg text/png
DeflateCompressionLevel 9
SetOutputFilter DEFLATE
(2)利用apxs為http擴(kuò)展此功能
如果有apache的源碼,可以重新編譯并安裝一次,新的模塊就會(huì)添加進(jìn)去,如果沒有源碼,或不想重新編譯,可以使用apxs擴(kuò)展此模塊,方法如下
[root@www ~]# yum -y install zlib-devel
[root@www ~]# cd httpd-2.4.25/modules/filters/
[root@www filters]# /usr/local/httpd/bin/apxs -i -c -a mod_deflate.c
備注:
-i 安裝
-c 編譯指定模塊
-a激活模塊
(3)配置 mod_deflate 模塊啟用
[root@apache~]# vim /usr/local/httpd/conf/httpd.conf
添加以下內(nèi)容:
LoadFile /usr/lib64/libz.so
LoadModule deflate_module modules/mod_deflate.so
DeflateCompressionLevel 6
SetOutputFilter DEFLATE
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/csstext/javascript application/x-javascript application/javascript application/json
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
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
備注:
DeflateCompressionLevel 9 #代表壓縮級(jí)別,范圍為1~9
SetOutputFilter DEFLATE #代表啟用deflate 模塊對(duì)本站點(diǎn)的輸出進(jìn)行g(shù)zip壓縮
備注:
可簡(jiǎn)化為如下代碼:
LoadFile /usr/lib64/libz.so
LoadModule deflate_module ????modules/mod_deflate.so
AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascript text/jpg text/png
DeflateCompressionLevel 9
SetOutputFilter DEFLATE
[root@www httpd-2.4.25]# httpd -t
[root@www httpd-2.4.25]# apachectl restart
[root@localhost httpd-2.4.25]# apachectl -t -D DUMP_MODULES | grep deflate
deflate_module (shared)
(4)測(cè)試 mod_deflate 壓縮模塊是否生效
訪問網(wǎng)站:
http://192.168.10.101/test1.php
注意:查看前面測(cè)試php的頁(yè)面
按F12可以打開,
1.2網(wǎng)頁(yè)緩存
1.配置 mod_expires 模塊啟用
[root@apache~]# vim /usr/local/httpd/conf/httpd.conf
LoadModule expires_module modules/mod_expires.so ##去掉前面的注釋
ExpiresActive On
ExpiresDefault "access plus 60 seconds"
備注:
ExpiresActive On:打開網(wǎng)頁(yè)緩存功能
ExpiresDefault "access plus 60 seconds" :設(shè)置緩存60秒
2.檢測(cè) httpd.conf 語法
[root@www ~]# apachectl -t
3.重啟 Apache 服務(wù)
[root@www ~]# apachectl restart
4.測(cè)試mod_expires 模塊
訪問網(wǎng)站:
http://192.168.10.101/test1.php
注意:查看前面測(cè)試php的頁(yè)面
二、隱藏版本信息
1.修改主配置文件
[root@www ~]# vim /usr/local/httpd/conf/httpd.conf
去掉前面的注釋符
Include conf/extra/httpd-default.conf
2.修改httpd-default.conf文件
[root@www ~]# vim /usr/local/httpd/conf/extra/httpd-default.conf
ServerTokens Prod
備注:
ServerTokens字段代表顯示格式,各種格式如下:
Prod Server:Apache
Major Server:Apache/2
Minor Server:Apache/2.4
OS Server: Apache/2.4.25 (Unix)
Full Server: Apache/2.4.25 (Unix) PHP/4.2.2 MyMod/1.2
3.重啟并測(cè)試
[root@www ~]# apachectl restart
查看響應(yīng)頭,Server字段只顯示Apache,不再顯示版本信息
三、防盜鏈
3.1配置防盜鏈
1.實(shí)驗(yàn)環(huán)境
2.將第一臺(tái)服務(wù)器直接克隆一個(gè),并修改IP地址為192.168.10.201
3.修改兩臺(tái)服務(wù)器的主機(jī)名
(1)服務(wù)器1
[root@www ~]# hostnamectl set-hostname apache1
[root@www ~]# bash
(2)服務(wù)器2
[root@www ~]# hostnamectl set-hostname apache2
[root@www ~]# bash
4.編寫帶有圖片的網(wǎng)頁(yè)(原圖網(wǎng)站)
將圖片文logo.jpg件拷貝到apache的網(wǎng)站根目錄下并修改網(wǎng)頁(yè)文件
[root@apache1 ~]# vim /usr/local/httpd/htdocs/index.html
It work!
5.用另一臺(tái)apache服務(wù)器盜鏈(盜圖網(wǎng)站)
在 www.accp.com 服務(wù)器,修改 index.html 文件,加入盜取圖片鏈接
[root@apache2 ~]# vim /usr/local/httpd/htdocs/index.html
dao lian
6.客戶端測(cè)試訪問
按F12查看
3.2為Apache1?防盜鏈設(shè)置
(1)配置 mod_rewrite 模塊啟用
[root@apache1 ~]# vim /usr/local/httpd/conf/httpd.conf
#去掉前面的注釋
LoadModule rewrite_module modules/mod_rewrite.so
#修改此網(wǎng)站訪問參數(shù)
AllowOverride None
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://benet.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://benet.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.benet.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.benet.com/$ [NC]
RewriteRule .*\.(gif|jpg|swf)$ http://www.benet.com/error.png
Require all granted
[root@apache1 ~]# systemctl restart httpd
備注:
AllowOverride ALL
通常利用Apache的rewrite模塊對(duì) URL 進(jìn)行重寫的時(shí)候, rewrite規(guī)則會(huì)寫在 .htaccess 文件里,這時(shí)就需要將AllowOverride 的參數(shù)設(shè)置為ALL。但要使 apache 能夠正常的讀取.htaccess 文件的內(nèi)容,就必須對(duì).htaccess 所在目錄進(jìn)行配置。從安全性考慮,根目錄的AllowOverride屬性一般都配置成不允許任何Override。如果AllowOverride 的參數(shù)設(shè)置為None,需要將rewrite規(guī)則直接寫在httpd的主配置文件中。
RewriteCond %{HTTP_REFERER} !^http://www.benet.com/.$ [NC] 的字段含義:
“%{HTTP REFERER}”:存放一個(gè)鏈接的URL,表示從哪個(gè)鏈接訪問所需的網(wǎng)頁(yè)?!?^”: 表示不以后面的字符串開頭?!?http://www.benet.com” : 是本網(wǎng)站的路徑,按整個(gè)字符串匹配?!?*$” : 表示以任意字符結(jié)尾?!癧NC]”: 表示不區(qū)分大小寫字母。
RewriteRule .*\.(gif|jpg|swf)$ http://www.benet.com/error.png的字段含義:
“.”: 表示匹配一個(gè)字符?!?”:表示匹配0 到多個(gè)字符,與“.”合起來的意思是匹配0到多次前面的任意字符,如果是1到多次匹配可以用“+”表示?!癨.”: 在這里的“\“是轉(zhuǎn)義符,”." 就代表符號(hào)“.”的意思。因?yàn)椤? ”在指令中是屬于規(guī)則字符,有相應(yīng)的含義,如果需要匹配,需要在前而加個(gè)轉(zhuǎn)義符"\”,其它規(guī)則字符如果需要匹配,也做同樣處理?!?gif|jpg|swf)”: 表示匹配“gif”、“jpg”、“swf"任意一個(gè), “$”表示結(jié)束。最后的規(guī)則是以“.gif”、 “.jpg”、 ".swf”結(jié)尾。
RewriteRule中不要添加png的格式,否則客戶端看不到error圖片
(2)檢測(cè) httpd.conf 語法
[root@apache1 ~]# apachectl -t
復(fù)制 error.png 這個(gè)圖片到benet站點(diǎn)的工作目錄 /usr/local/httpd/htdocs,再次訪問網(wǎng)站
柚子快報(bào)激活碼778899分享:Apache網(wǎng)頁(yè)優(yōu)化
精彩鏈接
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。