Web 進階——Apache(一)
- 一、Apache 優化
- 1.安裝 Apache
- 2.配置 Apache 保持連接、網頁傳輸壓縮、頁面快取時間
- 1)保持連接、長連接(Keep-alive)
- 2)網頁傳輸壓縮
- 3)頁面快取時間
- 3.配置 Apache 隱藏版本號
- 1)第一種方法
- 2)第二種方式
- 4.配置 Apache 防盜鏈
- 1)添加圖片
- 2)配置盜圖機器
- 3)訪問驗證
- 4)為 Apche 設定防盜鏈,防止 DaoTu 網站盜用
- 5.Apache 壓力測驗
一、Apache 優化
準備作業
| 主機名 | 作業系統 | IP地址 | 版本號 |
|---|---|---|---|
| Apache | CentOS 7.4 | 192.168.1.1 | httpd-2.2.17.tar.gz |
| DaoTu | CentOS 7.4 | 192.168.1.2 | httpd-2.2.17.tar.gz |
- 注意:配置防盜鏈的時候才需要用到 DaoTu 機器,
1.安裝 Apache
[root@Apache ~]# wget http://archive.apache.org/dist/httpd/httpd-2.2.17.tar.gz
[root@Apache ~]# yum -y install zlib-devel
[root@Apache ~]# tar zxf httpd-2.2.17.tar.gz -C /usr/src/
[root@Apache ~]# cd /usr/src/httpd-2.2.17/
[root@Apache httpd-2.2.17]# ./configure \
--prefix=/usr/local/httpd \
--enable-so \
--enable-rewrite \
--enable-cgi \
--enable-deflate \
--enable-expires && make && make install
注解:
--enable-deflate:啟用deflate模塊(需安裝zlib-devel依賴包)--enable-expires:啟用網頁快取過期時間模塊,

安裝后優化調整
[root@Apache httpd-2.2.17]# ln -s /usr/local/httpd/bin/* /usr/local/bin/ #優化執行路徑
[root@Apache ~]# httpd -v #查看httpd版本
[root@Apache ~]# sed -i '97s/^#//g' /usr/local/httpd/conf/httpd.conf #將 # 替換為空
[root@Apache ~]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd #復制啟動檔案
[root@Apache ~]# /etc/init.d/httpd start #啟動httpd服務
[root@Apache ~]# netstat -anpt | grep 80 #查看埠是否開啟

將 Apache 主機編譯好的,遠程復制到 DaoTu 機器中:
[root@Apache ~]# scp -r /usr/local/httpd/ root@192.168.1.2:/usr/local/httpd/
2.配置 Apache 保持連接、網頁傳輸壓縮、頁面快取時間
1)保持連接、長連接(Keep-alive)
- 開啟 Apache 服務端的長連接后,當客戶端請求完成之后,負責回傳給客戶端資料的行程并不會直接退出;
- 而是等待下一個請求的到來,這樣做的主要目的是減少了 TCP 的三次握手,
| 配置項 | 作用 |
|---|---|
KeepAlive On OFF | 是否打開保持連接功能 |
| MaxKeepAliveRequests | 一次 TCP 連接能夠傳輸的最大 HTTP 請求數量 |
| KeepAliveTimeout | 一次 TCP 連接多次 HTTP 請求之間的最大間隔時間 |
[root@Apache ~]# vim /usr/local/httpd/conf/extra/httpd-default.conf
16 KeepAlive On
23 MaxKeepAliveRequests 100
29 KeepAliveTimeout 20
[root@Apache ~]# sed -n '/httpd-default.conf/p' /usr/local/httpd/conf/httpd.conf
[root@Apache ~]# sed -i '/httpd-default.conf/s/^#//' /usr/local/httpd/conf/httpd.conf
[root@Apache ~]# sed -n '/httpd-default.conf/p' /usr/local/httpd/conf/httpd.conf
[root@Apache ~]# /etc/init.d/httpd restart
[root@Apache ~]# netstat -anpt | grep 80

訪問抓包驗證:

2)網頁傳輸壓縮
客戶端在請求 httpd 服務器資料后,httpd 服務器在回傳資料包給客戶端時,會先對回傳的資料進行壓縮,壓縮之后再傳輸,
作用:
- 配置 Apache 的網頁壓縮功能,是使用 Gzip 壓縮演算法來對 Apache 服務器發布的網頁內容進行壓縮后再傳輸到客戶端瀏覽器,
- 通常在 CPU 有空閑,網站帶寬占用高時,會啟動壓縮,
優勢:
- 加快網頁加載的速度,改善用戶的瀏覽體驗,
- 降低網路傳輸帶寬,服務器節省流量,
- 網頁壓縮有利于搜索引擎的抓取,
方式:Apache 能實作網頁壓縮功能的模塊有 mod_gzip 模塊和 mod_deflate 模塊,
| 配置項 | 作用 |
|---|---|
| AddOutputFilterByType DEFLATE test/html test/plain test/css test/xml test/javascript | 對什么格式的內容啟用壓縮 |
| DeflateCompressionLevel 9 | 壓縮級別為 9,范圍是 1-9,數字大壓縮率高 |
| SetOutputFilter DEFLATE | 啟動 deflate 壓縮方式 |
[root@Apache ~]# apachectl -D DUMP_MODULES | grep deflate
[root@Apache ~]# cat <<END >> /usr/local/httpd/conf/httpd.conf
AddOutputFilterByType DEFLATE test/html test/plain test/css test/xml test/javascript
DeflateCompressionLevel 9
SetOutputFilter DEFLATE
END
[root@Apache ~]# /etc/init.d/httpd restart
[root@Apache ~]# netstat -anpt | grep 80

訪問并抓包驗證:

3)頁面快取時間
- 通過
mod_expires模塊配置 Apache,使網頁能在客戶端瀏覽器快取一段時間,以避免重復請求,減輕服務端作業壓力, - 啟動
mod_expires模塊后,會自動生成頁面頭部資訊中的 Expires 標簽和 CacheControl 標簽; - 從而降低客戶端的訪問頻率和次數,達到減少不必要的流量和增加訪問速度的目的,
[root@Apache ~]# apachectl -D DUMP_MODULES | grep expires
[root@Apache ~]# cat <<END >> /usr/local/httpd/conf/httpd.conf
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 60 seconds"
</IfModule>
END
[root@Apache ~]# /etc/init.d/httpd restart
[root@Apache ~]# netstat -anpt | grep 80

訪問并抓包驗證:

3.配置 Apache 隱藏版本號
1)第一種方法
- ServerTokens Prod:顯示最少的資訊(默認是 Full 顯示完整資訊)
- ServerSignature Off:生成頁面的頁腳,
[root@Apache ~]# sed -n '/^Server/p' /usr/local/httpd/conf/extra/httpd-default.conf
[root@Apache ~]# sed -i 's/ServerTokens Full/ServerTokens Prod/' /usr/local/httpd/conf/extra/httpd-default.conf
[root@Apache ~]# sed -i 's/ServerSignature On/ServerSignature Off/' /usr/local/httpd/conf/extra/httpd-default.conf
[root@Apache ~]# sed -n '/^Server/p' /usr/local/httpd/conf/extra/httpd-default.conf
[root@Apache ~]# /etc/init.d/httpd restart
[root@Apache ~]# netstat -anpt | grep 80

訪問并抓包驗證:

2)第二種方式
如果是源代碼編譯安裝,還可以用修改源代碼編譯的方式:
- 進入 Apache 的原始碼目錄下的
include目錄,編輯ap_release.h這個檔案,然后重新編譯安裝即可,
[root@Apache ~]# vim /usr/src/httpd-2.2.17/include/ap_release.h
將:
42 #define AP_SERVER_BASEVENDOR "Apache Software Foundation"
43 #define AP_SERVER_BASEPROJECT "Apache HTTP Server"
44 #define AP_SERVER_BASEPRODUCT "Apache"
46 #define AP_SERVER_MAJORVERSION_NUMBER 2
47 #define AP_SERVER_MINORVERSION_NUMBER 2
48 #define AP_SERVER_PATCHLEVEL_NUMBER 17
修改為:
42 #define AP_SERVER_BASEVENDOR "Coco"
43 #define AP_SERVER_BASEPROJECT "Coco"
44 #define AP_SERVER_BASEPRODUCT "CSDN 愿許浪盡天涯"
46 #define AP_SERVER_MAJORVERSION_NUMBER 8
47 #define AP_SERVER_MINORVERSION_NUMBER 8
48 #define AP_SERVER_PATCHLEVEL_NUMBER 8
[root@Apache ~]# cat /usr/local/httpd/build/config.nice
[root@Apache ~]# cd /usr/src/httpd-2.2.17/
[root@Apache httpd-2.2.17]# ./configure \
--prefix=/usr/local/httpd \
--enable-so \
--enable-rewrite \
--enable-cgi \
--enable-deflate \
--enable-expires && make clean && make && make install

[root@Apache ~]# /etc/init.d/httpd stop
[root@Apache ~]# /etc/init.d/httpd start
[root@Apache ~]# netstat -anpt | grep 80
[root@Apache ~]# httpd -v

訪問并抓包驗證:

總結:
- 第一種方法雖然說可以隱藏版本號,但是不能隱藏服務名;而第二種方法不但可以隱藏服務名,還可以自定義版本號,
4.配置 Apache 防盜鏈
- 防盜鏈就是防止別人盜用服務器中的圖片、檔案、視頻等相關資源,可以通過 Apache 提供的
rewrite模塊進行優化,
1)添加圖片
[root@Apache ~]# vim /usr/local/httpd/htdocs/index.html
<html>
<body>
<h1>It works!</h1>
<img src="./1.jpg"/>
</body>
</html>
[root@Apache ~]# cd /usr/local/httpd/htdocs/
[root@Apache htdocs]# ls
1.jpg index.html
[root@Apache htdocs]# /etc/init.d/httpd start
[root@Apache htdocs]# netstat -anpt | grep 80

2)配置盜圖機器
[root@DaoTu ~]# vim /usr/local/httpd/htdocs/index.htm
<html>
<body>
<h1>It works!</h1>
<img src="http://192.168.1.1/1.jpg"/>
</body>
</html>
[root@DaoTu ~]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
[root@DaoTu ~]# /etc/init.d/httpd start
[root@DaoTu ~]# netstat -anpt | grep 80

3)訪問驗證


4)為 Apche 設定防盜鏈,防止 DaoTu 網站盜用
| 配置項 | 作用 |
|---|---|
| RewriteEngine On | 打開網頁重寫功能 |
| RewriteCond | 設定匹配規則 |
| RewriteRule | 設定跳轉動作 |
Rewrite 的規則:%{HTTP_REFERER} 瀏覽 header 中鏈接欄位,存放一個連接的 URL,代表是從哪個鏈接訪問所需的頁面,
!^:不以某個欄位開頭,.*$:以任意字符結尾,NC:不區分大小寫,R:強制跳轉,- 規則匹配:如果回應變數的值匹配所設定的規則,則逐條往下處理;如果不匹配,則后面的規則不再繼續匹配,
[root@localhost htdocs]# vim /usr/local/httpd/conf/httpd.conf
131 <Directory "/usr/local/httpd/htdocs">
添加如下:
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://192.168.1.1/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://192.168.1.1$ [NC]
RewriteRule .*\(gif|jpg|swf\)$ http://192.168.1.1/2.png [R,NC]
</Directory>
[root@Apache htdocs]# ls
1.jpg 2.png index.html
[root@Apache htdocs]# /etc/init.d/httpd restart
[root@Apache htdocs]# netstat -anpt | grep 80
[root@Apache htdocs]# /etc/init.d/httpd restart

訪問驗證:


5.Apache 壓力測驗
- Apache 附帶了壓力測驗工具 ab,非常容易使用,并且完全可以模擬各種條件對 Web 服務器發起測驗請求,
- 在進行性能調整優化程序中,可用 ab 壓力測驗工具進行優化效果的測驗,
語法:ab -n 請求數總和 -c 并發用戶數 網站網址
| 主要引數 | 作用 |
|---|---|
| Time taken for tests | 表示所有這些請求被處理完成所花費的總時間, |
| Failed requests | 表示失敗的請求數量, |
| Transfer rete | 表示這些請求在單位時間內從服務器獲取的資料長度, |
測驗:
[root@Apache ~]# /usr/local/httpd/bin/ab -n 1000 -c 200 http://192.168.1.1/

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/277779.html
標籤:其他
上一篇:基本命令 Linux作業系統與實訓 CentOS 7.4 & RHEL 7.4
下一篇:Linux配置網路詳細筆記
