1. 程式人生 > 其它 >Apache網頁優化及防盜鏈

Apache網頁優化及防盜鏈

Apache網頁優化及防盜鏈

一、Apache網頁優化

1、Apache網頁優化概述

  • 在企業中,部署Apache後只採用預設的配置引數,會引發網站很多問題,換言之預設配置是針對以前較低的伺服器配置的,以前的配置已經不適用當今網際網路時代
  • 為了適應企業需求,就需要考慮如何提升Apache的效能與穩定性,這就是Apache優化的內容

2、優化內容

  • 配置網頁壓縮功能
  • 配置網頁快取
  • 工作模式的選擇與引數優化
  • 配置隱藏版本號
  • 配置防盜鏈
  • ......

3、gzip 介紹

(1)、概述

  • 配置Apache的網頁壓縮功能,是使用gzip壓縮演算法來對網頁內容進行壓縮後再傳輸到客戶端瀏覽器

(2)、作用

  • 降低了網路傳輸的位元組數,加快網頁載入的速度
  • 節省流量,改善使用者的瀏覽體驗
  • gzip與搜尋引擎的抓取工具有著更好的關係

4、 Apache的壓縮模組

(1)Apache的壓縮模組

  • mod_ gzip 模組
  • mod_ deflate 模組

(2)Apache 1.x

  • 沒有內建網頁壓縮技術,但可使用第三方mod_ gzip 模組執行壓縮

(3)Apache 2.x

  • 在開發的時候,內建了mod_ deflate 這個模組,取代mod_gzip

(4)mod_ gzip 模組與mod_ deflate 模組

  • 兩者均使用gzip壓縮演算法,運作原理類似
  • mod_ deflate壓縮速度略快, 而mod_ gzip的壓縮比略高
  • mod_ gzip對伺服器CPU的佔用要高一-些
  • 流量的伺服器,使用mod_deflate可能會比modgzip載入速度更快

二、網頁壓縮

1、檢查是否安裝mod_ deflate 模組

apachectl -t -D DUMP_MODULES | grep "deflate"

2、如果沒有安裝mod deflate 模組,重新編譯安裝Apache 新增mod deflate模組

systemctl stop httpd.service
cd /usr/local/httpd/conf
mv httpd.conf httpd.conf.bak

yum -y install gcc gcc-c++ pcre pcre-devel zlib-devel

cd 
/opt/httpd-2.4.29/ ./configure \ --prefix=/usr/local/httpd \ --enable-so \ --enable-rewrite \ --enable-charset-lite \ --enable-cgi \ --enable-deflate #加入mod deflate 模組 make && make install

3、配置mod_deflate 模組啟用

vim /usr/local/httpd/conf/httpd.conf


-- 52行--修改 Listen 192.168.80.10:80 -- 105行--取消註釋 LoadModule deflate_module modules/mod deflate.so #開啟mod_ deflate 模組 --197行--取消註釋,修改 ServerName www.kgc.com:80 --末行新增-- <IfModule mod_deflate.c> AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascript text/jpg text/png #代表對什麼樣的內容啟用gzip壓縮 DeflateCompressionLevel 9 #代表壓縮級別,範圍為1~9 SetOutputFilter DEFLATE #代表啟用deflate模組對本站點的輸出進行gzip壓縮 </IfModule>

4、檢查安裝情況,啟動服務

apachectl -t
#驗證配置檔案的配置是否正確.
apachectl -t -D DUMP_MODULES | grep "deflate"
#檢查mod_ deflate模組是否已安裝
deflate_module (shared)
#已安裝的正確結果
systemctl start httpd.service

5、測試mod deflate 壓縮是否生效

cd /usr/local/httpd/htdocs
先將game.jpg檔案傳到/usr/local/httpd/htdocs目錄下
vim
index.html
<html><body><h1>It works! It
works! It works! It works ! It
works!It works! It works! It
works! It works! It works! It
works! It works ! It works ! It 1
works!</h1>
<img src="game.jpg"/>
</body></html>
方法一:
在Linux系統中,開啟火狐瀏覽器,右擊點檢視元素
選擇網路--->選擇HTML、WS、其他
訪問http://192.168.80.10,雙擊200響應訊息檢視響應頭中包含Content-Encoding: gzip
方法二:
在Windows系統中依次安裝Microsoft.NET4和fiddler 軟體,開啟fiddler 軟體
選擇inspectors ---> 選擇Headers 
瀏覽器訪問http://192.168.80.10,雙擊200響應訊息檢視Content-Encoding: gzip

三、網頁快取

1、檢查是否安裝mod_expires 模組

apachectl -t -D DUMP MODULES | grep "expires"

2、如果沒有安裝mod_expires 模組,重新編譯安裝Apache 新增mod_expires 模組

systemctl stop httpd.service
cd /usr/local/httpd/conf
mv httpd.conf httpd.conf.bak1

yum -y install gcc gcc-c++ pcre pcre-devel zlib-devel
cd /opt/httpd-2.4.29/
./configure
--prefix=/usr/local/httpd \
--enable-so \
--enable-rewrite \
--enable-charset-lite \
--enable-cgi \
--enable-deflate \
--enable-expires
#加入mod_ expires 模組
make && make install

3、配置mod_expires模組啟用

vim /usr/local/httpd/conf/httpd.conf
--52行--修改
Listen 192. 198.80.10:80
--111行--取消註釋
LoadModule expires_ module modules/mod_expires.so
#開啟mod_expires模組
--199行--取消註釋,修改
ServerName www.kgc.com:80
--末行新增--
<IfModule mod_expires.c>
ExpiresActive On
#打T開網頁快取功能
ExpiresDefault "access plus 60 seconds"
#設定快取60秒
</ IfModule>

4、檢查安裝情況,啟動服務

apachectl -t
#驗證配置檔案的配置是否正確
apachectl -t -D DUMP_MODULES | grep "expires"
#檢查mod_ deflate模組是否已安裝
deflate_module (shared)
#已安裝的正確結果
systemctl start httpd.service

5、測試快取是否生效

cat /usr/local/httpd/htdocs/index.html
方法一-:
在Linux系統中,開啟火狐瀏覽器,右擊點檢視元素
選擇網路--->選擇HTML、WS、其他
訪問http://192.168.80.10,雙擊200訊息檢視響應頭中包含Expires項
方法二:
在Windows系統中依次安裝Microsoft. NET4和fiddler 軟體,開啟fiddler 軟體
選擇inspectors --->選擇Headers
瀏覽器訪問http://192.168.80.10 ,雙擊200訊息檢視Expires 項

四.隱藏版本資訊

vim /usr/local/httpd/conf/httpd.conf
--491行--取消註釋
Include conf/extra/httpd-default.conf

vim /usr/local/httpd/conf/extra/httpd-default.conf
--55行--修改
ServerTokens Prod
#將原本的Full改為Prod,只顯示名稱,沒有版本
#ServerTokens表示Server回送給客戶端的響應頭域是否包含關於伺服器OS型別和編譯過的模組描述資訊。
systemctl restart httpd.service

瀏覽器訪問http://192.168.80.10,雙擊200消 息檢視Server項

結果圖

五、Apache 防盜鏈

  • 防盜鏈是防止別人的網站程式碼裡面盜用我們自己伺服器上的圖片、檔案、視訊等相關資源
  • 如果別人盜用網站的這些靜態資源,明顯的是會增大伺服器的頻寬壓力
  • 作為網站的維護人員,要杜絕伺服器的靜態資源被其他網站盜用

1、檢查是否安裝mod_rewrite模組

apachectl -t -D DUMP_MODULES | grep " rewrite"

2、如果沒有安裝mod_rewrite 模組,重新編譯安裝Apache新增mod_rewrite模組

systemctl stop httpd.service
cd /usr/local/httpd/conf
mv httpd.conf httpd.conf.bak2 

yum -y install gcc gcc-c++ pcre pcre-devel zlib-devel
cd /opt/httpd-2.4.29/
./configure \
--prefix=/usr/local/httpd \
--enable-so \
--enable-rewrite \
#加入mod rewrite 模組
--enable-charset-lite \
--enable-cgi \
--enable-deflate \
--enable-expires

make && make install

3、配置mod_rewrite 模組啟用

vim /usr/local/httpd/conf/httpd.conf
--157行--取消註釋
LoadModule rewrite_module modules/mod_rewrite.so
--224行--
<Directory "/usr/local/httpd/htdocs">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted

Rewri teEngine On             # 開啟rewrite功能,加入mode_ rewrite模組內容
RewriteCond %{HTTP_REFERER} !^http://kgc.com/。*$ [NC] # 設定匹配規則
RewriteCond %{HTTP_REFERER} !^http://kgc. com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.kgc.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} ! ^http://www.kgc.com/$ [NC]
RewriteRule .*\.(gif | jpg | swf)$ http://www.kgc.com/error.png  #設定跳轉動作
</Directory>
RewriteCond %{HTTP_ REFERER} !^http: //www. kgc.com/ .$ [NC] 的欄位含 義:
“%{HTTP_REFERER}": 存放一一個連結的URL,表示從哪個連結訪問所需的網頁
“!^”: 表示不以後面的字串開頭
“http://www. kgc.com” : 是本網站的路徑,按整個字串匹配
“.$”: 表示以任意字元結尾
“[NC]”: 表示不區分大小寫字母
RewriteRule .* \ . (gifljpg Iswf)$ http; //www. kgc .com/error.png的欄位含義:
“.”: 表示匹配一個字元
“*”: 表示匹配0到多個字元,與“.”合起來的意思是匹配0到多次前面的任意字元,如果是1到多次匹配可以用“+”表示
“\ .”: 在這裡的“\”是轉義符,". “就代表符號“. “的意思。因為“. “在指令中是屬於規則字元,有相應的含義,如果需要匹配,需要在前面加個轉義符”\”,其它規則字元如果需要匹配,也做同樣處理
“(gifljpgIswf)” :表示匹配"gif”、“jpg”、 “swf"任意一 個,“$”表示結束。最後的規則是以“.gif"、 “.jpg”“.swf"結尾,前面是1到多個字元的字串,也就是匹配圖片型別的檔案
"http: / /www. kge. com/error.png”:表示轉發到這個路徑。

整個配置的含義是: 使用本網站以外的網站域名訪問本站的圖片檔案時,顯示error.png 這個圖片