Apache網頁優化及防盜鏈
阿新 • • 發佈:2021-08-10
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 這個圖片