1. 程式人生 > 其它 >Apache——網頁優化與安全

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		#設定跳轉動作

  

 

 

自古英雄多磨難