文章目錄
Apache網頁優化概述
在企業中,部署Apache後只採用默認的配置參數,會引起網站不少問題,換言之默認配置是針對之前較低的服務器配置的,之前的配置已經不適用當今互聯網時代
爲了適應企業需求,就須要考慮如何提高Apache的性能與穩定性,這就是Apache優化的內容
javascript
優化內容
配置網頁壓縮功能
配置網頁緩存 防止同一用戶頻繁鏈接服務端
工做模式的選擇與參數優化
配置隱藏版本號 由於不一樣版本號的漏洞不同,爲了防止黑客攻擊
配置防盜鏈
…
php
gzip介紹
配置Apache的網頁壓縮功能,是使用gzip壓縮算法來對網頁內容進行壓縮後再傳輸到客戶端瀏覽器css
做用
下降了網絡傳輸的字節數,加快網頁加載的速度
節省流量,改善用戶的瀏覽體驗
gzip與搜索引擎的抓取工具備着更好的關係
html
Apache的壓縮模塊
Apache實現網頁壓縮的功能模塊包括
mod_gzip 模塊
mod_deflate 模塊
Apache 1.x
沒有內建網頁壓縮技術,但可以使用第三方mod_gzip模塊執行壓縮
Apache 2.x
在開發的時候,內建了mod_deflate這個模塊,取代mod_gzip
附加:gzip佔用c pu比deflate高,說明接待的用戶數量比較少
java
mod_gzip模塊與mod_deflate模塊
二者均使用gzip壓縮算法,運做原理相似
mod_deflate壓縮速度略快,而mod_gzip的壓縮比略高
mod_gizp對服務器CPU佔用要高一些
高流量的服務器,使用mod_deflate可能會比mod_gzip加載速度更快
c++
配置網頁壓縮功能
1.啓用網頁壓縮功能的步驟
查看是否安裝mod_deflate模塊→修改配置文件啓用壓縮功能(註釋配置文件中#)→訪問測試
2.檢查是否已安裝mod_deflate模塊
3.在配置httpd.conf中配置開啓gzip功能
4.重啓Apache服務,再用火狐瀏覽器訪問測試網站
在瀏覽器中選擇「查看元素」能夠看到有「Accept-Encoding:gzip」表示壓縮已經生效
web
配置網頁壓縮
將所需軟件上傳到root目錄下
解壓縮文件
算法
傳輸三個依賴包文件apr-1.6.2.tar.gz apr-util-1.6.0.tar.gz httpd-2.4.29.tar.bz2 [root@serverl ~]# ls-lh 查看安裝包文件是否存在 -rw-r--r--. 1 root root 1071074 10月 13 13:58 apr-1.6.2.tar.gz -rw-r--r--. 1 root root 565507 10月 13 13:58 apr-util-1.6.0.tar.gz -rw-r--r--. 1 root root 6567926 10月 13 13:58 httpd-2.4.29.tar.bz2 解壓該文件 [root@serverl ~]# tar zxvf apr-1.6.2.tar.gz [root@serverl ~]# tar zxvf apr-util-1.6.0.tar.gz [root@serverl ~]# tar jxvf httpd-2.4.29.tar.bz2 將文件移動到其餘目錄 [root@serverl ~]# mv apr-1.6.2 httpd-2.4.29/srclib/apr [root@serverl ~]# mv apr-util-1.6.0 httpd-2.4.29/srclib/apr-util
安裝環境apache
[root@serverl ~]# yum -y install gcc gcc-c++ make zlib-devel pcre pcre-devel perl expat-devel
編譯安裝瀏覽器
[root@serverl httpd-2.4.29]# ./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi --enable-cgid --enable-deflate --enable-gzip [root@serverl httpd-2.4.29]# make && make install
編輯配置文件
[root@serverl httpd-2.4.29]# cd [root@serverl ~]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd [root@serverl ~]# vi /etc/init.d/httpd #!/bin/sh 添加一下兩行 # chkconfig: 35 80 20 //35級別自動運行 第85個啓動 第21個關閉 # description: apache server
優化路徑並修改主配置文件
[root@serverl ~]# ln -s /usr/local/httpd/conf/httpd.conf /etc/ [root@serverl ~]# ln -s /usr/local/httpd/bin/* /usr/bin/ [root@serverl ~]# vi /etc/httpd.conf ServerName www.example.com:80 ##去掉註釋
關閉防火牆與核心防禦
[root@serverl ~]# systemctl stop firewalld [root@serverl ~]# setenforce 0
開啓服務並開啓壓縮模塊
[root@serverl ~]# httpd -t 檢查語法是否有問題 Syntax OK [root@serverl ~]# apachectl -t 檢查語法是否有問題 Syntax OK [root@serverl ~]# systemctl start httpd [root@serverl ~]# netstat -anpt | grep httpd [root@serverl ~]# vi /etc/httpd.conf LoadModule deflate_module_modules/mod_deflate.so #去掉註釋
[root@serverl ~]# systemctl restart httpd 查看deflate是否打開 [root@serverl ~]# apachectl -D DUMP_MODULES | grep deflate deflate_module (shared) [root@serverl ~]# vi /etc/httpd.conf 最後一行添加: AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascript image/png image.jpg image/jpeg image/gif application/x-httpd-php application/x-javascript DeflateCompressionLevel 9 SetOutputFilter DEFLATE
重啓服務並設置測試頁
[root@serverl ~]# systemctl restart httpd [root@serverl ~]# cd /usr/local/httpd/htdocs/ [root@serverl htdocs]# ls -lh 總用量 4.0K -rw-r--r--. 1 root root 45 6月 12 2007 index.html vi index.html <html><body><h1>this is my web!</h1><img src=a.jpg / ></body></html>
將圖片拖入apache默認網頁文件夾內
客戶端測試並查看壓縮狀態
查看壓縮狀態
配置網頁的緩存時間
1.經過mod_expire模塊配置Apache,使網頁能在客戶端瀏覽器緩存一段時間,以免重複請求(客戶機中)
啓用mod_expire模塊後,會自動生成頁面頭部信息中的Expires標籤和Cache-Control標籤(緩存標籤),從而下降客戶端的訪問頻率和次數,達到減小沒必要要的流量和增長訪問速度的目的(服務端中)
2.啓用網頁緩存功能步驟
查看是否安裝mod_expire模塊→修改配置文件 啓用緩存功能→訪問測試
3.查看是否安裝了mod_expire模塊
/usr/local/apache/bin/apachectl -t -D DUMP_MODULES
若是輸出中沒有expires_module(static),則說明編譯時沒有安裝mod_expires
若是沒有安裝,須要從新編譯安裝
./configure --enable-expires…
make && make insatll
4.修改httpd.conf配置文件
啓用mod_expires模塊,並設置http協議下任意格式的文檔均60秒後過時
配置網頁緩存時間
查看是否安裝expires
[root@serverl ~]# apachectl -D DUMP_MODULES | grep expires
中止Apache服務,並添加安裝環境,進行編譯安裝
[root@serverl ~]# systemctl stop httpd [root@serverl ~]# cd httpd-2.4.29/ [root@serverl httpd-2.4.29]# ./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi --enable-cgid --enable-deflate --enable-gzip [root@serverl httpd-2.4.29]#make && make install
修改配置文件
[root@serverl ~]# vi /etc/httpd.conf LoadModule expires_module modules/mod_expires.so #取消註釋 在末尾添加如下內容 <IfModule mod_expires.c> ExpiresActive On ExpiresDefault "access pule 60 seconds" </IfModule>
查看配置是否出現問題,以及查看是否安裝了mod_expire模塊
[root@serverl ~]# apachectl -t Syntax OK [root@serverl ~]# httpd -t Syntax OK [root@serverl ~]# systemctl restart httpd [root@serverl ~]# apachectl -D DUMP_MODULES | grep expires expires_module (shared) //說明安裝了mod_expire模塊
客戶端測試並查看緩存時間
修改前
配置Apache隱藏版本信息
Apache的版本信息,透露了必定的漏洞信息,從而給網站帶來安全隱患
生產環境中要配置Apache隱藏版本信息
ServerTokens輸出格式
配置隱藏版本
修改配置文件
[root@serverl ~]# vi /etc/httpd.conf Include conf/extra/httpd-default.conf //去掉註釋
[root@serverl ~]# vi /usr/local/httpd/conf/extra/httpd-default.conf ServerTokens Full→ServerTokens prod 並在其後面添加一行 ServerTokens Prod Serversignature Off
重啓服務,並用客戶端登陸,並查看(修改先後對比發現版本號不見)
配置Apache實現防盜鏈
防盜鏈是防止別人的網站代碼裏面盜用咱們本身服務器上的圖片、文件、視頻等相關資源
若是別人盜用網站的這些靜態資源,明顯的是會增大服務器的帶寬壓力
做爲網站的維護人員,要杜絕服務器的靜態資源被其餘網站盜用
使用三臺主機模擬盜鏈
三臺主機配置與功能
盜鏈模擬步驟
1.兩臺主機配置測試頁面
2.盜鏈網站的測試網頁,盜用源主機網站目錄下的一個a.jpg文件
3.在Windows中訪問驗證
配置防盜鏈
再開一臺虛擬機(IP:20.0.0.10),安裝httpd服務,關閉防火牆和核心防禦
[root@server1 ~]# systemctl stop firewalld [root@server1 ~]# setenforce 0 [root@server1 ~]# yum -y install httpd
編輯默認網頁文件指向20.0.0.11的圖片文件
[root@server1 html]# vi index.html html><body><h1>server 2</h1><img src= http://20.0.0.11/a.jpg / ></body></html>
開啓服務
[root@server1 html]# systemctl start httpd
客戶端測試訪問20.0.0.10發現圖片是20.0.0.11服務器上的
當前效果圖(地址爲http://20.0.0.11/a.jpg)
此時咱們在源主機(IP:20.0.0.10)上配置防盜鏈配置
[root@serverl ~]# apachectl -D DUMP_MODULES | grep rewrite 修改如下配置 [root@serverl ~]# vi /etc/httpd.conf LoadModule rewrite_module modules/mod_rewrite.so //去掉註釋符號
源主機(IP:20.0.0.11)重啓服務,將error.png圖片上傳到默認網頁目錄裏
[root@serverl ~]# apachectl -D DUMP_MODULES | grep rewrite rewrite_module (shared) 修改如下配置 [root@serverl ~]# vi /etc/httpd.conf 添加如下內容 AllowOverride None RewriteEngine On RewriteCond %{ HTTP_REFERER} !^http://20.0.0.11$ [NC] RewriteCond %{ HTTP_REFERER} !^http://20.0.0.11/* [NC] RewriteCond %{ HTTP_REFERER} !^http://20.0.0.11/.*$ [NC] RewriteRule .*\.(gif|jpg|swf)$ http://20.0.0.11/error.png [R,NC]
客戶端測試20.0.0.十、20.0.0.11
其餘效果圖:發現出現了302,即爲重定向
配置規則說明