Apache網頁優化

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,即爲重定向
在這裏插入圖片描述
配置規則說明
在這裏插入圖片描述

相關文章
相關標籤/搜索