1. 程式人生 > >Apache網頁優化與安全優化(網頁壓縮;網頁緩存;網頁防盜鏈;隱藏版本信息)

Apache網頁優化與安全優化(網頁壓縮;網頁緩存;網頁防盜鏈;隱藏版本信息)

信任站點 響應 win ef6 生效 傳輸 window 重要 move

1,網頁壓縮

網站的訪問速度是由多個因素所共同決定的包括:

1)應用程序的響應速度

2)網絡帶寬

3)服務器性能

4)與客戶端之間的網絡傳輸速度等等

其中最重要的就是Apache本身的響應速度,因此提升網站性能第一個需要著手進行處理的便是盡可能地提升Apache的執行速度,使用網頁壓縮可以提升應用程序的速度,而且不需要任何成本.

Apache的壓縮模塊

Apache2.x內建了mod_deflate這個模塊,使用gzip壓縮算法。mod_deflate可使用DeflateCompressionLevel指令來設置壓縮級別。該指令的值可為1至(壓縮速度最快,壓縮質量最低)9(壓縮速度最慢,壓縮質量最高)之間的整數,其默認值為6(壓縮速度和壓縮質量較為平衡的值)

(1)首先編譯安裝Apache源碼包

yum –y remove httpd #編譯安裝前將系統自帶的httpd刪掉

tar xzvf httpd-2.4.2.tar.gz -C /opt #解壓源碼包

tar xzvf apr-util-1.4.1.tar.gz -C /opt #解壓依賴包

tar xzvf apr-1.4.6.tar.gz -C /opt #解壓依賴包,支持apache上層應用跨平臺,提供底層接口庫,有效緩解並發連接進程數

cp -R apr-util-1.4.1/ httpd-2.4.2/srclib/apr-util

cp -R apr-util-1.4.1/ httpd-2.4.2/srclib/apr-util

yum -y install gcc gcc-c++ pcre pcre-devel zlib-devel #安裝組件包 構建編譯環境

cd httpd-2.4.2/ #進入到httpd目錄下進行配置,編譯安裝

./configure \

--prefix=/usr/local/httpd \ #指定httpd安裝目錄

--enable-deflate \ #加入mod_deflate模塊

--enable-so \

--enable-rewrite \

--enable-charset-lite \

--enable-cgi

make && make install #進行編譯安裝

cd /uar/local/httpd

grep -v "#" bin/apachectl >/etc/init.d/httpd #優化啟動方式,可以使用service命令管理apache服務

vim /etc/init.d/httpd

#!/bin/bash

#chkconfig:2345 85 35 #在apache啟動腳本裏加入必要註釋

#description:Apache is a web server

chmod 755 /etc/init.d/httpd

技術分享圖片

chkconfig --add httpd #設置apache服務開機自啟

chkconfig httpd on

ln -s /usr/local/httpd/conf/httpd.conf /etc/httpd.conf #在/etc目錄下生成一個apache主配置文件的鏈接,方便管理。

(2)搭建一個web站點www.benet.com,並搭建一個DNS服務,解析域名。

vim /etc/httpd.conf

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

vim /etc/named.conf

技術分享圖片

vim /etc/named.rfc1912.zones

技術分享圖片

技術分享圖片

技術分享圖片

service named start

可以修改apache站點首頁內容,加入圖片信息,

vim /usr/local/httpd/htdocs/index.html

技術分享圖片

技術分享圖片

使用瀏覽器輸 入www.benet.com訪問網頁,然後使用抓包工具Fiddler進行抓包,

在沒啟用mod_deflate模塊之前顯示內容未進行壓縮

技術分享圖片

技術分享圖片

(3)配置mod_ deflate模塊啟用


編譯安裝完成後,mod_deflate模塊需要在httpd.conf文件裏啟用才能生效

vim /etc/httpd.conf

LoadModule filter_module modules/mod_filter.so

LoadModule headers_module modules/mod_headers.so #開啟模塊服務

LoadModule deflate_module modules/mod_deflate.so

技術分享圖片

在httpd.conf配置文件末尾,加入mod_deflate的配置項。

<IfModule mod_deflate.c>

AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascript #第一行代表對什麽樣的內容啟用gzip壓縮

DeflateCompressionLevel 9 #第二行代表壓縮級別

SetOutputFilter DEFLATE #第三行代表啟用deflate模塊壓對本站點的輸出進行gzip壓縮

</IfModule>

技術分享圖片

配置文件修改完成之後可以檢測是否啟用mod_deflate模塊,然後啟動apache服務

cd /usr/local/httpd/bin

./apachectl –t –D DUMP_MODULES | grep “deflate”

技術分享圖片

service httpd start

(4)測試mod_deflate壓縮是否生效

打開Fiddler抓包工具,用瀏覽器訪問Apache服務器的頁面,可以看到響應頭中包含有Content-Encoding:gzip,表示壓縮已經生效

技術分享圖片

2,網頁緩存

網頁緩存是將一部分經常不會改變或變動很少的頁面緩存,下次瀏覽器再次訪問這些頁面時,不需要再次去下載這些頁面,從而提高了用戶的訪問速度。

Apache的mod_exprices模塊會自動生成頁面頭部信息中的Express標簽和Cache-Control標簽,客戶端瀏覽器根據標簽決定下次訪問是在本地機器的緩存中獲取頁面,不需要向服務器發出請求,從而降低客戶端的訪問頻率和次數,達到減少不必要的流量和增加訪問速度的目的。

配置mod_exprices模塊的步驟與mod_deflate模塊相似。

在啟用mod_exprices模塊功能之前,可以打開瀏覽器輸入www.benet.com訪問網頁,使用Fiddler抓包工具先抓取數據包,查看是否緩存設置expires項,可以和啟用mod_exprices模塊之後進行對比

技術分享圖片

(1)安裝mod_ exprices模塊

以剛才安裝的apache源碼包為基礎,首先關閉apache服務,加入mod_exprices模塊重新進行編譯安裝
























service htted stop

cd /opt/httpd-2.4.2/

./configure \

--prefix=/usr/local/httpd \

--enable-deflate \ # 加入mod_deflate模塊

--enable-expires \ #加入mod_exprices模塊

--enable-so \

--enable-rewrite \

--enable-charset-lite \

--enable-cgi

Make && make install #編譯安裝

(2)配置mod_exprices模塊

vim /etc/httpd.conf

LoadModule expires_module modules/mod_expires.so #開啟mod_exprices模塊

在httpd.conf末尾添加mod_exprices模塊設置項

<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 60 seconds" #添加緩存時間60秒
</IfModule>

技術分享圖片

技術分享圖片





然後重新啟動apache服務

service httpd restart

(3)測試緩存是否生效

打開Fiddler抓包工具,用瀏覽器訪問Apache服務器的頁面,可以看到響應頭中包含有expires項,說明緩存已經在工作

技術分享圖片

技術分享圖片

3,防盜鏈

Apache的默認設置除了可以對性能進行優化外,還需要對安全性進行相應的設置,

如果一個網站中沒有其頁面中所說的圖片信息,那麽它完全可以鏈接到其他網站的圖片信息上。這樣。沒有任何資源的網站利用了別的網站的資源來展示給瀏覽者,提高了自己的訪問量,而大部分瀏覽者又不容易發現。一些不良網站為了不增加成本而擴充自己的站點內容,經常盜用其他網站的鏈接,一方面損害了源網站的合法利益,另一方面又加重了服務器的負擔,因此我們需要設置防盜鏈

準備環境:

1)客戶端使用Windows系統,IP地址192.168.30.100 搭建盜鏈網站www.test.com

2)源主機redhat6.5系統,IP地址192.168.30.15 搭建源網站www.benet.com

(1)在客戶端搭建盜鏈網站www.test.com,並在hosts文件中加入以上IP地址與域名的映射關系

開啟internet信息服務管理器

技術分享圖片

打開IIS,進行站點設定

技術分享圖片

新建一個文件,編寫html格式,將圖片信息指向源主機,並將文件格式修改為html格式,放入站點wwwroot

技術分享圖片

技術分享圖片

技術分享圖片

在hosts文件中加入映射關系

技術分享圖片

在瀏覽器中分別輸入www.benet.com,www.test.com進行訪問,可以看到圖片內容沒有差異,

技術分享圖片

技術分享圖片

使用Fiddler抓包工具抓取數據,可以看到先對www.test.com請求,然後對www.benet.com/abc.jpg請求,說明盜鏈成功









技術分享圖片

(2)apache防盜鏈配置

如果沒有安裝mod_rewrite模塊,需要停止apache服務,重新編譯安裝,在參數中加入mod_rewrite模塊。

cd httpd-2.4.2/

./configure \

--prefix=/usr/local/httpd \

--enable-deflate \

--enable-so \

--enable-rewrite \ #加入mod_rewrite模塊

--enable-charset-lite \

--enable-cgi

Make && make install

(3)配置mod_rewrite模塊啟用

vim /etc/httpd.conf

技術分享圖片

在站點目錄結尾加入rewrite設定

<Directory "/usr/local/httpd/htdocs">

………………………………………………..

RewriteEngine On

RewriteCond %{HTTP_REFERER} !^http://benet.com/.*$ [NC]

RewriteCond %{HTTP_REFERER} !^http://benet.com/$ [NC]

RewriteCond %{HTTP_REFERER} !^http://www.benet.com/.*$ [NC]

RewriteCond %{HTTP_REFERER} !^http://www.benet.com/$ [NC]

RewriteRule .*\.(gif|jpg|swf)$ http://www.benet.com/error.png

</Directory >

最終的匹配結果為:第二,三,四,五行的信任的站點,能夠使用網站的圖片;除了信任站點以外的站點,如果直接訪問以gif,jpg,swf結尾的文件將跳轉到重定向頁面。

技術分享圖片

重新啟動apache服務

(4)測試mod_rewrite重定向是否生效

清除瀏覽器的緩存,避免從本地讀取緩存內容,將error.png這個圖片移動到站點目錄/usr/local/httpd/htdocs ,再次訪問網站,如下圖所示

技術分享圖片

技術分享圖片

4,隱藏版本信息

一般情況下,軟件的漏洞信息和特定的版本是相關的,因此軟件的版本號對×××者來說是很有價值的,用Fiddler抓包工具可以看到apache的版本,

技術分享圖片

如果×××或別有用心的人得到apache的版本信息,就會有針對性地進行×××,給網站造成很大的損失,所以我們要隱藏apache的版本號,減少受×××的風險,保護服務器安全運行。

修改httpd.conf配置文件,使httpd-default.conf文件生效,它裏面包含了是否返回版本信息的內容。

技術分享圖片

然後修改httpd-default.conf文件

技術分享圖片

技術分享圖片

重新啟動apache服務,再次訪問網頁,使用Fiddler抓包工具抓取數據包,可以看到版本信息已經隱藏。

技術分享圖片

Apache網頁優化與安全優化(網頁壓縮;網頁緩存;網頁防盜鏈;隱藏版本信息)