防盜鏈 Apache網頁優化
一.Apache網頁優化概述
- 在企業中,部署Apache後只採用預設的配置引數,會引發網站很多問題,換言之預設配置是針對以前較低的伺服器配置的,以前的配置已經不適用當今網際網路時代
- 為了適應企業需求,就需要考慮如何提升Apache的效能與穩定性,這就是Apache優化的內容
① gzip 介紹
- 配置Apache的網頁壓縮功能,是使用gzip壓縮演算法來對網頁內容進行壓縮後再傳輸到客戶端瀏覽器
- 作用
• 降低了網路傳輸的位元組數,加快網頁載入的速度 • 節省流量,改善使用者的瀏覽體驗 • gzip與搜尋引擎的抓取工具有著更好的關係
② Apache的壓縮模組
Apache實現網頁壓縮的功能模組包括
• mod_ gzip 模組 • mod_ deflate 模組
Apache 1.x
沒有內建網頁壓縮技術,但可使用第三方mod_ gzip 模組執行壓縮
Apache 2.x
在開發的時候,內建了mod_ deflate 這個模組,取代mod_gzip
mod_ gzip 模組與mod_ deflate 模組
• 兩者均使用gzip壓縮演算法,運作原理類似 • mod_ deflate壓縮速度略快, 而mod_ gzip的壓縮比略高 • mod_ gzip對伺服器CPU的佔用要高一-些 • 高流量的伺服器,使用mod_ deflate可能會比mod gzip載入速度更快
③ 配置網頁的快取時間
通過mod_expire模組配置Apache,使網頁能在客戶端瀏覽器快取一段時間,以避免重複請求
啟用mod_expire模組後, 會自動生成頁面頭部資訊中的Expires標籤和Cache-Control標籤,客戶端瀏覽器根據標籤決定下次訪問是在本地機器的快取中獲取頁面不需要向伺服器再次發出請求,從而降低客戶端的訪問頻率和次數,達到減少不必要的流量和增加訪問速度的目的
④ 配置Apache實現防盜鏈
防盜鏈是防止別人的網站程式碼裡面盜用我們自己伺服器上的圖片、檔案、視訊等相關資源
如果別人盜用網站的這些靜態資源,明顯的是會增大伺服器的頻寬壓力
作為網站的維護人員,要杜絕伺服器的靜態資源被其他網站盜用
二.網頁壓縮
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.184.10 ,雙擊200訊息檢視響應頭中包含 Expires 項
方法二:
在Windows系統中依次安裝 Microsoft.NET4 和fiddler 軟體,開啟fiddler 軟體
選擇 inspectors —> 選擇 Headers
瀏覽器訪問 http://192.168.184.10 ,雙擊200訊息檢視 Expires 項
四、隱藏版本資訊
vim /usr/local/httpd/conf/httpd.conf
-----491行-----取消註釋
Include conf/extra/httpd-default.conf
五.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
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]”: 表示不區分大小寫字母 ———————————————— 版權宣告:本文為CSDN博主「W.scaler」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處連結及本宣告。 原文連結:https://blog.csdn.net/m0_55622296/article/details/117532706
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 這個圖片
注:為了測試,先另外開一臺虛擬機器,作為盜圖使者把環境準備一下
注:接下來,在原圖的伺服器進行配置