Apache——網頁優化與安全
Apache——網頁優化與安全
1、Apache 網頁優化概述
2、網頁壓縮
3、網頁快取
4、隱藏版本資訊
5、Apache 防盜鏈
1、Apache 網頁優化概述:
- 企業中,部署Apache後只採用預設的配置引數,會引發網站很多問題,換言之預設配置是針對以前較低的伺服器配置的,以前的配置已經不適用當今網際網路時代
- 為了適應企業需求,就需要考慮如何提升Apache的效能與穩定性,這就是Apache優化的內容
gzip 介紹:
配置Apache的網頁壓縮功能,是使用gzip壓縮演算法來對網頁內容進行壓縮後再傳輸到客戶端瀏覽器 作用: 降低了網路傳輸的位元組數,加快網頁載入的速度 節省流量,改善使用者的瀏覽體驗 gzip與搜尋殷勤的抓取工具有著更好的關係
Apache的壓縮模組:
功能模組:
mod_gzip模組 mod_deflate模組
Apache 1.x
沒有內建網頁壓縮技術,但可使用第三方mod_gzip模組執行壓縮
Apache 2.x
在開發的時候,內建了mod_deflate這個模組,取代了mod_gzip
兩者比較:
兩者均使用gzip壓縮演算法,執行原理相似 mod_deflate壓縮速度略快,而mod_gzip的壓縮比略高 mod_gzip對伺服器CPU的佔用要高一些 高流量的伺服器,使用mod_deflate可能會比mod_gzip載入速度更快
2、網頁壓縮:
a)檢查是否安裝mod_ deflate 模組
apachectl -t -D DUMP_MODULES | grep "deflate"
b)如果沒有安裝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
c)配置 mod_deflate 模組啟用
vim /usr/local/httpd/conf/httpd.conf
-----52行-----修改
Listen 20.0.0.20:80
-----105行-----取消註釋
LoadModule deflate_module modules/mod_deflate.so #開啟mod_deflate 模組
-----199行-----取消註釋,修改
ServerName www.lvbu.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>
d)檢查安裝情況,啟動服務
apachectl -t #驗證配置檔案的配置是否正確 apachectl -t -D DUMP_MODULES | grep "deflate" #檢查 mod_deflate 模組是否已安裝 deflate_module (shared) #已安裝的正確結果 systemctl start httpd.service
e)測試 mod_deflate 壓縮是否生效
cd /usr/local/httpd/htdocs
先將圖片.jpg檔案傳到/usr/local/httpd/htdocs目錄下
vim index.html <meta charset="utf-8"> <html><body><h1> 愛情受過傷,為愛跳過鴨綠江!</h1> <img src="lic.png"/> </body></html> systemctl restart httpd.service
方法一:
在Linux系統中,開啟火狐瀏覽器,右擊點檢視元素
選擇 網路→重新載入→選擇 HTML、WS、其他
訪問 http://192.168.184.10 ,檢視響應頭中包含 Content-Encoding: gzip
進入虛擬機器進行驗證
方法二: 在虛擬機器Windows系統中依次安裝 Microsoft.NET4 和fiddler 軟體,開啟fiddler 軟體 win10僅需安裝fiddler.exe,無腦安裝 選擇 inspectors —> 選擇 Headers 瀏覽器訪問 http://192.168.184.10 ,雙擊200響應訊息檢視 Content-Encoding: gzip
3、網頁快取:
a)檢查是否安裝 mod_expires 模組
apachectl -t -D DUMP_MODULES | grep "expires"
b)如果沒有安裝mod_expires 模組,重新編譯安裝 Apache 新增 mod_expires模組
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 \ --enable-charset-lite \ --enable-cgi \ --enable-deflate \ --enable-expires #加入mod_expires 模組 make && make install
c)配置 mod_expires 模組啟用
vim /usr/local/httpd/conf/httpd.conf
-----52行-----修改
Listen 20.0.0.20:80
-----111行-----取消註釋
LoadModule expires_module modules/mod_expires.so #開啟mod_expires 模組
-----199行-----取消註釋,修改
ServerName www.lvbu.com:80
-----末行新增-----
<IfModule mod_expires.c> ExpiresActive On #開啟網頁快取功能 ExpiresDefault "access plus 60 seconds" #設定快取60秒 </IfModule>
d)檢查安裝情況,啟動服務
apachectl -t #驗證配置檔案的配置是否正確 apachectl -t -D DUMP_MODULES | grep "expires" #檢查 mod_deflate 模組是否已安裝 expires_module (shared) #已安裝的正確結果 systemctl start httpd.service
e)測試快取是否生效
cat /usr/local/httpd/htdocs/index.html
方法一:
在Linux系統中,開啟火狐瀏覽器,右擊點檢視元素
選擇 網路 —> 選擇 HTML、WS、其他
訪問 http://20.0.0.14 ,雙擊200訊息檢視響應頭中包含 Expires 項
方法二:
在Windows系統中依次安裝 Microsoft.NET4 和fiddler 軟體,開啟fiddler 軟體
選擇 inspectors —> 選擇 Headers
瀏覽器訪問 http://20.0.0.14 ,雙擊200訊息檢視 Expires 項
4、隱藏版本資訊:
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 start httpd.service
5、Apache防盜鏈:
防盜鏈是防止別人的網站程式碼裡面盜用我們自己伺服器上的圖片、檔案、視訊等相關資源
如果別人盜用網站的這些靜態資源,明顯的是會增大伺服器的頻寬壓力
作為網站的維護人員,要杜絕伺服器的靜態資源被其他網站盜用
防盜鏈過程:
a)檢查是否安裝 mod_rewrite 模組
pachectl -t -D DUMP_MODULES | grep "rewrite"
b)如果沒有安裝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 \ --enable-charset-lite \ --enable-cgi \ --enable-deflate \ --enable-expires make && make install
c)配置 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 RewriteEngine On #開啟 rewrite 功能,加入 mode_rewrite 模組內容 RewriteCond %{HTTP_REFERER} !^http://lvbu.com/.*$ [NC] #設定匹配規則 RewriteCond %{HTTP_REFERER} !^http://lvbu.com$ [NC] RewriteCond %{HTTP_REFERER} !^http://www.lvbu.com/.*$ [NC] RewriteCond %{HTTP_REFERER} !^http://www.lvbu.com/$ [NC] RewriteRule .*\.(gif|jpg|lvbu)$ http://www.lvbu.com/error.png #設定跳轉動作
自古英雄多磨難