http
文本編碼協定
無狀态(cookie,session)
http協定實作的程式
靜态(httpd, nginx, lighttpd)
動态 (IIS, tomcat, jetty, jboss, resin, websphere, weblogic, oc4j)
用戶端工具 (telnet, elinks, curl) 純文字協定通路工具
HTTPD配置(端口、别名、通路控制、MPM、keep-alive、dso、DocumentRoot、DirectoryIndex、預設字元集、虛拟主機、mod_deflate子產品、HTTPS配置)
HTTPD工具(htpasswd, apxs, rotatelogs, suexec),HTTPD壓力測試(ab, webbench, http_load, jmeter, loadrunner, tcpcopy)
ASF: Apache Software Foundation Apache 軟體基金會
FSF: Free Software Foundaton 自由軟體基金會
ASF賴以起家的是: httpd<命名:apache>
http協定實作
<a href="https://s1.51cto.com/wyfs02/M01/A5/F1/wKioL1nGAorCbsyuAABNkUlff-I109.png" target="_blank"></a>
Http特性
子產品化設計:DSO(Dynamic Share Object)
MPM機制(Multipurpose Process Modules) 多路處理子產品
<a href="https://s2.51cto.com/wyfs02/M01/A5/F2/wKioL1nGBMnRyCk4AAA6_JWepBQ481.png" target="_blank"></a>
HTTP安裝
1
2
<code># yum info httpd </code><code>//The Apache HTTP Server is a powerful, efficient, and extensible</code>
<code> </code><code>//強大、高效、可擴充</code>
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<code>/etc/httpd </code><code>//ServerRoot </code>
<code>/etc/httpd/conf.d </code><code>//配置片段目錄</code>
<code>/etc/httpd/conf/httpd.conf </code><code>//主配置</code>
<code>/etc/httpd/logs </code><code>//日志目錄</code>
<code>/etc/httpd/modules </code><code>//子產品目錄</code>
<code>/etc/httpd/run </code><code>//運作中的程序的資料</code>
<code>/etc/rc.d/init.d/httpd </code><code>//服務腳本</code>
<code>/etc/sysconfig/httpd </code><code>//服務腳本配置</code>
<code>/usr/lib/httpd/modules</code>
<code>/usr/lib/httpd/modules/mod_actions.so </code><code>//DSO機制,動态共享對象</code>
<code>/usr/sbin/apachectl </code><code>//apachectl程式</code>
<code>/usr/sbin/httpd </code><code>//MPM為IO,串行響應的程序</code>
<code>/usr/sbin/httpd.event </code><code>//MPM為複用I/O模型,并行響應的程序 <2.2的httpd,event不成熟></code>
<code>/usr/sbin/httpd.worker </code><code>//MPM.............................</code>
<code> </code><code>//ps axu | fgrep httpd可檢視</code>
<code> </code>
<code>/usr/share/doc/httpd-</code><code>2.2</code><code>.</code><code>15</code> <code>//<DOCUMENTATION></code>
<code>/usr/share/doc/httpd-</code><code>2.2</code><code>.</code><code>15</code><code>/ABOUT_APACHE</code>
<code>/usr/share/doc/httpd-</code><code>2.2</code><code>.</code><code>15</code><code>/CHANGES</code>
<code>/usr/share/doc/httpd-</code><code>2.2</code><code>.</code><code>15</code><code>/LICENSE</code>
<code>/usr/share/doc/httpd-</code><code>2.2</code><code>.</code><code>15</code><code>/NOTICE</code>
<code>/usr/share/doc/httpd-</code><code>2.2</code><code>.</code><code>15</code><code>/README</code>
<code>/usr/share/doc/httpd-</code><code>2.2</code><code>.</code><code>15</code><code>/VERSIONING</code>
<code>/usr/share/man/man8/apachectl.</code><code>8</code><code>.gz </code><code>//<MAN Document></code>
<code>/usr/share/man/man8/htcacheclean.</code><code>8</code><code>.gz</code>
<code>/usr/share/man/man8/httpd.</code><code>8</code><code>.gz</code>
<code>/usr/share/man/man8/rotatelogs.</code><code>8</code><code>.gz</code>
<code>/usr/share/man/man8/suexec.</code><code>8</code><code>.gz</code>
<code>/</code><code>var</code><code>/cache/mod_proxy </code><code>//<緩存目錄></code>
<code>/</code><code>var</code><code>/lib/dav </code><code>//<程式運作中的資料></code>
<code>/</code><code>var</code><code>/log/httpd </code><code>//《日志目錄》</code>
<code>/</code><code>var</code><code>/run/httpd </code><code>//《運作中的httpd程序的資料》</code>
<code>/</code><code>var</code><code>/www/error/ </code><code>//錯誤頁面html網頁存放目錄</code>
<code>/</code><code>var</code><code>/www/html </code><code>//DocuRoot目錄,資源路徑的根映射的位置</code>
httpd配置檔案
<code>/etc/httpd/conf/httpd.conf </code>
<code>//首次配置需要備份檔案:</code>
<code># cp -v /etc/httpd/conf/httpd.conf{,.bak}</code>
配置檔案格式
<code># fgrep </code><code>'Section'</code> <code>/etc/httpd/conf/httpd.conf </code>
<code>### Section </code><code>1</code><code>: Global Environment </code><code>//全局環境:定義httpd通用功能特性</code>
<code>### Section </code><code>2</code><code>: </code><code>'Main'</code> <code>server configuration </code><code>//主配置段:一個伺服器提供單個站點</code>
<code>### Section </code><code>3</code><code>: Virtual Hosts </code><code>//虛拟主機:一個伺服器提供多個站點</code>
配置指令格式
<code>Directive(指令) Value(值)</code>
<code>指令:不區分大小寫</code>
<code>值:可能區分大小寫</code>
HTTPD配置及應用
+++++++++++++++++++++++++++++++++++++++++++++++++++++
1、port
<a href="https://s4.51cto.com/wyfs02/M01/A5/F3/wKioL1nGEIXiFWx9AABJwQ7Ayig334.png" target="_blank"></a>
使用示例
<a href="https://s5.51cto.com/wyfs02/M02/A6/0D/wKioL1nIhaTRFaz9AAAIYtg1n1g421.png" target="_blank"></a>
<a href="https://s1.51cto.com/wyfs02/M00/A6/0D/wKioL1nIhfHzZSWqAAAPIppT6aM771.png" target="_blank"></a>
2、持久和非持久連接配接
<a href="https://s2.51cto.com/wyfs02/M02/A5/F3/wKioL1nGFBuAuIhuAABhmikUVC8768.png" target="_blank"></a>
//并發通路量過大場景,時間或數量限制過大時,可能會導緻後續的請求被[拒絕服務],可以關閉或調整時間或數量限制
不同版本對應的特性
<a href="https://s5.51cto.com/wyfs02/M00/07/42/wKiom1nGFOeh6vyWAAAfaGoyrT8485.png" target="_blank"></a>
<預設配置:關閉持久連接配接功能
<a href="https://s2.51cto.com/wyfs02/M01/A6/0D/wKioL1nIh3DAI1KHAAATdCDm22s468.png" target="_blank"></a>
<a href="https://s3.51cto.com/wyfs02/M01/A5/F4/wKioL1nGHKSDFU1IAAAVPI4lK98555.png" target="_blank"></a>
重載并驗證
<code># service httpd reload</code>
<a href="https://s2.51cto.com/wyfs02/M02/A6/0D/wKioL1nIiKijcLdVAAASrAEe48Q168.png" target="_blank"></a>
<a href="https://s3.51cto.com/wyfs02/M00/07/5C/wKiom1nIiOTSEWkYAAANCKUq52I281.png" target="_blank"></a>
<修改配置:開啟持久連接配接功能
<a href="https://s3.51cto.com/wyfs02/M02/A6/0D/wKioL1nIh_Px-qjrAAANo6fi6f8286.png" target="_blank"></a>
<a href="https://s4.51cto.com/wyfs02/M01/A6/0D/wKioL1nIiTGh1kMXAAAS35pFY5M018.png" target="_blank"></a>
<a href="https://s4.51cto.com/wyfs02/M02/07/5C/wKiom1nIiWyhiAk0AAARA2pI_E8029.png" target="_blank"></a>
3、MPM 并發響應模型Multipath Process Module
<code>10</code><code>多種[适用在多種平台之上]</code>
<code>Linux: prefork, worker, event</code>
<code>編譯時,一次隻能編譯單個子產品</code>
1)檢視目前使用的子產品
2)檢視裝載的子產品
3)更換MPM
<code>更改為worker</code>
<code># awk </code><code>'$1 != "#" && $0 !~ /^[[:space:]]*$/{print}'</code> <code>/etc/sysconfig/httpd </code>
<code>#HTTPD=/usr/sbin/httpd.worker</code>
<code>HTTPD=/usr/sbin/httpd.worker</code>
<code>#OPTIONS=</code>
<code>#HTTPD_LANG=C</code>
<code>#PIDFILE=/</code><code>var</code><code>/run/httpd/httpd.pid</code>
<code># service httpd restart</code>
<code># ps axu | fgrep httpd</code>
<code>root </code><code>20183</code> <code>0.0</code> <code>1.4</code> <code>11716</code> <code>3560</code> <code>? Ss </code><code>22</code><code>:</code><code>02</code> <code>0</code><code>:</code><code>00</code> <code>/usr/sbin/httpd.worker</code>
<code>apache </code><code>20298</code> <code>0.0</code> <code>1.2</code> <code>289448</code> <code>3000</code> <code>? Sl </code><code>22</code><code>:</code><code>02</code> <code>0</code><code>:</code><code>00</code> <code>/usr/sbin/httpd.worker</code>
<code>更改為event</code>
<code>HTTPD=/usr/sbin/httpd.event</code>
<code>root </code><code>20360</code> <code>0.6</code> <code>1.4</code> <code>12184</code> <code>3556</code> <code>? Ss </code><code>22</code><code>:</code><code>04</code> <code>0</code><code>:</code><code>00</code> <code>/usr/sbin/httpd.event</code>
<code>apache </code><code>20363</code> <code>0.0</code> <code>1.1</code> <code>289916</code> <code>2916</code> <code>? Sl </code><code>22</code><code>:</code><code>04</code> <code>0</code><code>:</code><code>00</code> <code>/usr/sbin/httpd.event</code>
<code>apache </code><code>20364</code> <code>0.0</code> <code>1.1</code> <code>289916</code> <code>2904</code> <code>? Sl </code><code>22</code><code>:</code><code>04</code> <code>0</code><code>:</code><code>00</code> <code>/usr/sbin/httpd.event</code>
<code>apache </code><code>20365</code> <code>0.0</code> <code>1.1</code> <code>289916</code> <code>2904</code> <code>? Sl </code><code>22</code><code>:</code><code>04</code> <code>0</code><code>:</code><code>00</code> <code>/usr/sbin/httpd.event</code>
MPM配置詳解 /etc/httpd/conf/httpd.conf <網站的承載能力有一定影響>
<code># prefork MPM</code>
<code># StartServers: 啟動伺服器後,預留的程序數</code>
<code># MinSpareServers: minimum number of server processes which are kept spare</code>
<code># MaxSpareServers: maximum number of server processes which are kept spare</code>
<code># ServerLimit: 伺服器的生命周期内為MaxClients準備的最大值</code>
<code># MaxClients: 最大并發數</code>
<code># MaxRequestsPerChild: 每個程序最大響應請求數</code>
<code><IfModule prefork.c></code>
<code>StartServers </code><code>8</code>
<code>MinSpareServers </code><code>5</code>
<code>MaxSpareServers </code><code>20</code>
<code>ServerLimit </code><code>256</code>
<code>MaxClients </code><code>256</code>
<code>MaxRequestsPerChild </code><code>4000</code>
<code></IfModule></code>
<code># worker MPM</code>
<code># StartServers: 啟動服務預留程序數</code>
<code># MaxClients: 最大并發數</code>
<code># MinSpareThreads: 最小并發數</code>
<code># MaxSpareThreads: maximum number of worker threads which are kept spare</code>
<code># ThreadsPerChild: 每個程序内的線程數</code>
<code># MaxRequestsPerChild: 每個線程最多響應請求數</code>
<code><IfModule worker.c></code>
<code>StartServers </code><code>4</code>
<code>MaxClients </code><code>300</code>
<code>MinSpareThreads </code><code>25</code>
<code>MaxSpareThreads </code><code>75</code>
<code>ThreadsPerChild </code><code>25</code>
<code>MaxRequestsPerChild </code><code>0</code> <code>//0表示沒有上限</code>
<code>配置:影響網站的承載能力</code>
PV承載量= \(每秒請求資源數 * 86400 \)/每個頁面的資源數 //滿載工作
考慮:全天滿負荷運作?帶寬使用大小?
帶寬:每個PV消耗多少KB * PV承載量
<a href="https://s2.51cto.com/wyfs02/M00/A5/F5/wKioL1nGLMfjEKBjAAANd0uJf_A673.png" target="_blank"></a>
<a href="https://s2.51cto.com/wyfs02/M00/07/44/wKiom1nGL4jRu4i9AAA9jjEn8G0576.png" target="_blank"></a>
<code>檢視此子產品已經被裝載</code>
<code># httpd -M | fgrep deflate_module</code>
<code>deflate_module (shared)</code>
<code>禁用 </code>
<code># vim /etc/httpd/conf/httpd.conf</code>
<code>#LoadModule deflate_module modules/mod_deflate.so</code>
<code>重載 </code>
<code>檢視 </code>
<code>Syntax OK</code>
4、URL資源路徑映射之一:DocRoot <資源路徑的根映射為檔案系統的哪個目錄>
<a href="https://s5.51cto.com/wyfs02/M02/A5/FC/wKioL1nHGlzzHj3cAAAyVpT-8NM686.png" target="_blank"></a>
使用示例:
<code># setenforing </code><code>0</code>
<code># iptables -F</code>
<code># cat > /</code><code>var</code><code>/www/html/index.html << EOF</code>
<code><html></code>
<code> </code><code><head></code>
<code> </code><code><title>MageEdu</title></code>
<code> </code><code></head></code>
<code> </code><code><body></code>
<code> </code><code><h1>Hello</h1></code>
<code> </code><code><p> <a href=</code><code>"https://s5.51cto.com/wyfs02/M00/07/31/wKiom1nEuS7Tii_KAAA2TqP_0qY316.png"</code><code>>haha</p></code>
<code> </code><code></body></code>
<code></html></code>
<code>EOF </code>
<code># httpd -t && service httpd reload</code>
<code># yum install elinks</code>
<code># elinks -dump </code><code>127.0</code><code>.</code><code>0.1</code>
<code>抓取後退出</code>
<code> </code><code>Hello</code>
<code> </code><code>[</code><code>1</code><code>]haha</code>
<code>References</code>
<code> </code><code>Visible links</code>
<code> </code><code>1</code><code>. https:</code><code>//s5.51cto.com/wyfs02/M00/07/31/wKiom1nEuS7Tii_KAAA2TqP_0qY316.png</code>
<code>修改配置/etc/httpd/conf/httpd.conf</code>
<code>DocumentRoot </code><code>"/www/htdocs"</code>
<code># install -d /www/htdocs</code>
<code># cat > /www/htdocs/index.html << EOF</code>
<code>hello everyone</code>
<code>EOF</code>
<code># </code>
<code># curl </code><code>127.0</code><code>.</code><code>0.1</code>
5、站點通路控制
<a href="https://s2.51cto.com/wyfs02/M00/07/4B/wKiom1nHG-HTeSFDAAAx19QdQxM760.png" target="_blank"></a>
6、預設首頁面
DirectoryIndex index.html index.html.var
自左向右,依次比對給出目錄下的檔案,存在時,顯示
7、檔案系統路徑通路控制
7、1基于來源位址
<a href="https://s2.51cto.com/wyfs02/M02/07/4B/wKiom1nHJwvgq3XBAAA3KzUNan8877.png" target="_blank"></a>
>>>>>>>>>>>>>>>>>>>>>>>>Indexes<下載下傳站使用>
<a href="https://s3.51cto.com/wyfs02/M02/07/5D/wKiom1nIlBXzjrlOAABDNoyn5hw042.png" target="_blank"></a>
<a href="https://s1.51cto.com/wyfs02/M02/A6/0E/wKioL1nIlAPzwaFfAABUTJ7yPvk292.png-wh_500x0-wm_3-wmp_4-s_1225018712.png" target="_blank"></a>
>>>>>>>>>>>>>>>>>>>>>>>>FollowSymlinks
>>>>>>>>>>>>>>>>>>>>>>>>來源位址通路控制
<a href="https://s4.51cto.com/wyfs02/M00/07/5D/wKiom1nIl1GhbHJ2AAA8OH01J1I158.png" target="_blank"></a>
7、2使用者通路控制
安全域:認證後方能通路的目錄,應該用名稱辨別
定義在/etc/httpd/conf/httpd.conf檔案中
<a href="https://s4.51cto.com/wyfs02/M00/A6/00/wKioL1nHdruh4nagAAAtf6v6xVg314.png" target="_blank"></a>
<a href="https://s3.51cto.com/wyfs02/M01/A6/00/wKioL1nHduSiRbvtAAAsLxUtCpg318.png" target="_blank"></a>
<a href="https://s2.51cto.com/wyfs02/M00/A6/00/wKioL1nHdx2jiTBoAAAPVD_7idk175.png" target="_blank"></a>
1)基于使用者認證
2)基于組認證
<a href="https://s3.51cto.com/wyfs02/M02/07/50/wKiom1nHf87zcSnJAABL0Zd7V2Y959.png" target="_blank"></a>
1、建立目錄,使之能通路
<code># install -d /www/htdocs/admin</code>
<code># echo </code><code>"hello"</code> <code>> /www/htdocs/admin/index.html</code>
2、添加配置
<code><Directory </code><code>"/www/htdocs/admin"</code><code>></code>
<code> </code><code>Options None</code>
<code> </code><code>AllowOverride None</code>
<code> </code><code>AuthType Basic</code>
<code> </code><code>AuthName </code><code>"Administrator private"</code>
<code> </code><code>AuthUserFile </code><code>"/etc/httpd/conf.d/.htpasswd"</code>
<code> </code><code>Require valid-user</code>
<code><</code><code>/Directory</code><code>></code>
<code># httpd -t</code>
<code># htpasswd -c -m /etc/httpd/conf.d/.htpasswd tom</code>
<code># htpasswd -m /etc/httpd/conf.d/.htpasswd obama</code>
<a href="https://s2.51cto.com/wyfs02/M02/07/50/wKiom1nHfo3g62I2AAAQNIADtmg463.png" target="_blank"></a>
3、添加組配置
<code> </code><code>AuthGroupFile </code><code>"/etc/httpd/conf.d/.htgroup"</code>
<code> </code><code>Require group weblogic</code>
8、日志設定
錯誤日志
<a href="https://s2.51cto.com/wyfs02/M02/A6/01/wKioL1nHgS7yiVA6AAAlYTNCGs8312.png" target="_blank"></a>
1、日志為連結路徑
<a href="https://s2.51cto.com/wyfs02/M01/A6/01/wKioL1nHgYeRj6pbAAAQgnS4U0E351.png" target="_blank"></a>
通路日志
<a href="https://s4.51cto.com/wyfs02/M01/A6/01/wKioL1nHg9PR78svAAAeM2HTegM648.png" target="_blank"></a>
<code>官方:httpd.apache.org http:</code><code>//httpd.apache.org/docs/2.2/mod/mod_log_config.html#logformat</code>
<code>Documetation --> </code><code>2.2</code> <code>--> 日志檔案</code>
<a href="https://s5.51cto.com/wyfs02/M01/07/87/wKiom1nLNdDghQHBAACf2dDfjHM007.png" target="_blank"></a>
9、路徑别名
<a href="https://s1.51cto.com/wyfs02/M02/A6/01/wKioL1nHhkmTXn0IAABCCcHuxLE068.png" target="_blank"></a>
39
40
41
42
43
44
45
46
47
<code>##預設配置</code>
<code># setenforce </code><code>0</code>
<code>添加别名</code>
<code>##注意配置檔案中URL和路徑後必須同時存在是否有/</code>
<code>Alias /bbs/ </code><code>"/web/htdocs/"</code>
<code># install -d /web/htdocs</code>
<code># cat > /web/htdocs/index.html</code>
<code>Test Page</code>
<code># cat /web/htdocs/index.html</code>
<code>##注意通路有無/的差別</code>
<code># curl </code><code>127.0</code><code>.</code><code>1.1</code><code>/bbs</code>
<code><!DOCTYPE HTML PUBLIC </code><code>"-//IETF//DTD HTML 2.0//EN"</code><code>></code>
<code><html><head></code>
<code><title></code><code>404</code> <code>Not Found</title></code>
<code></head><body></code>
<code><h1>Not Found</h1></code>
<code><p>The requested URL /bbs was not found on </code><code>this</code> <code>server.</p></code>
<code><hr></code>
<code><address>Apache/</code><code>2.2</code><code>.</code><code>15</code> <code>(CentOS) Server at </code><code>127.0</code><code>.</code><code>1.1</code> <code>Port </code><code>80</code><code></address></code>
<code></body></html></code>
<code># curl </code><code>127.0</code><code>.</code><code>1.1</code><code>/bbs/</code>
10、字元集設定
<a href="https://s5.51cto.com/wyfs02/M01/A6/01/wKioL1nHiiWSa5pRAAAb0_1AkwU456.png" target="_blank"></a>
11、虛拟主機
虛拟主機的類型
<a href="https://s5.51cto.com/wyfs02/M01/07/50/wKiom1nHjeeio3eJAAAa9hWjeVw439.png" target="_blank"></a>
基于名稱完成不同虛拟主機的識别
封裝時: HTTP首部、TCP首部、IP首部、幀首部..
Host: 浏覽器鍵入的主機名 //"應用層首部"中附加,非通信子網
配置前提
<a href="https://s2.51cto.com/wyfs02/M02/A6/01/wKioL1nHkOKTEcimAAAUv9kDovg522.png" target="_blank"></a>
虛拟主機配置格式
<a href="https://s3.51cto.com/wyfs02/M02/07/50/wKiom1nHkVzgBUthAAAwP9tuwwM958.png" target="_blank"></a>
<a href="https://s5.51cto.com/wyfs02/M02/07/5D/wKiom1nIl_6QqCByAABMflu_ujY997.png" target="_blank"></a>
以下為編輯配置檔案及執行的額外的指令
1、基于IP,配置虛拟主機(不易記,IP需要購買)
<a href="https://s4.51cto.com/wyfs02/M00/07/5E/wKiom1nImiiRebu3AAAppFlVa1g724.png" target="_blank"></a>
<a href="https://s3.51cto.com/wyfs02/M00/A6/0F/wKioL1nImlmQLMbnAAAKEy07BP4823.png" target="_blank"></a>
2、基于端口,配置虛拟主機(用的少)
<a href="https://s5.51cto.com/wyfs02/M02/A6/0F/wKioL1nImvXxHiGAAAAPYr98WKA023.png" target="_blank"></a>
3、基于Host,配置虛拟主機(在應用層封裝Host首部即可)
<a href="https://s2.51cto.com/wyfs02/M00/A6/0F/wKioL1nIm-vj2sTmAAAj9BGugGA278.png" target="_blank"></a>
<a href="https://s3.51cto.com/wyfs02/M00/A6/0F/wKioL1nInMPQQZPSAAAP6f97n8M346.png" target="_blank"></a>
<a href="https://s2.51cto.com/wyfs02/M02/07/5E/wKiom1nInP_jW2U6AAA3NO8Hz0I411.png" target="_blank"></a>
12、内置的status頁面,顯示基本的程序資訊,handler過濾使用者的請求
<a href="https://s4.51cto.com/wyfs02/M00/A6/10/wKioL1nIoyWQx5q3AABZFdeoNGs870.png" target="_blank"></a>
基于使用者的通路控制
13、mod_deflate 子產品
通過此子產品的功能,在輸出時,過濾出純文字檔案壓縮後響應給用戶端
壓縮後響應:節約網絡帶寬,消耗CPU時鐘周期,提升使用者體驗
web伺服器從本地磁盤加載内容:輸入
将加載後的内容,響應給用戶端:輸出
<a href="https://s5.51cto.com/wyfs02/M01/07/82/wKiom1nLBjSikkwPAAAQ__nXBHw224.png" target="_blank"></a>
配置指令解析
SetOutputFilter DEFLATE //調用輸出過濾器: DEFLATE壓縮過濾器
DEFLATE可以基于MIME類型過濾,隻對過濾出來的純文字檔案,且大小達到一定值時才有必要壓縮
DeflateCompressionlevel 9 //壓縮比
BrowserMatch ^Mozilla/4 gzip-only-text/html //比對到指定浏覽器不壓縮
1、啟動httpd服務程序,在Windows和Linux中分别測試
<a href="https://s1.51cto.com/wyfs02/M00/07/82/wKiom1nLCgngcIjSAAAxURHkOfc789.png" target="_blank"></a>
<a href="https://s2.51cto.com/wyfs02/M01/A6/34/wKioL1nLCeHgoDQKAAAbPnSOGxU292.png" target="_blank"></a>
2、檢視是否啟用mod_deflate.so子產品
<code># httpd -M | fgrep deflate</code>
<code> </code><code>deflate_module (shared)</code>
3、添加壓縮指令
<code>備份配置檔案</code>
<code> </code><code># cp -v /etc/httpd/conf/httpd.conf{,.bak}</code>
<code>在配置檔案中添加如下指令</code>
<code> </code><code># 調用DEFLATE壓縮過濾器,隻對輸出過濾</code>
<code> </code><code>SetOutputFilter DEFLATE </code>
<code> </code><code># DEFLATE過濾器,過濾出指定的MIME類型,僅對這些MIME類型的純文字檔案進行壓縮</code>
<code> </code><code>AddOutputFilterByType DEFLATE text/plain </code>
<code> </code><code>AddOutputFilterByType DEFLATE text/html</code>
<code> </code><code>AddOutputFilterByType DEFLATE application/xhtml+xml</code>
<code> </code><code>AddOutputFilterByType DEFLATE text/xml</code>
<code> </code><code>AddOutputFilterByType DEFLATE application/xml</code>
<code> </code><code>AddOutputFilterByType DEFLATE application/x-javascript</code>
<code> </code><code>AddOutputFilterByType DEFLATE text/javascript</code>
<code> </code><code>AddOutputFilterByType DEFLATE text/css</code>
<code> </code><code># 壓縮級别(</code><code>0</code><code>-</code><code>9</code><code>),級别越高越消耗cpu時鐘周期</code>
<code> </code><code>DeflateCompressionLevel </code><code>9</code>
<code> </code><code># 正則比對此浏覽器不壓縮</code>
<code> </code><code>BrowserMatch ^Mozilla/</code><code>4</code> <code>gzip-only-text/html</code>
<code> </code><code>BrowserMatch ^Mozilla/</code><code>4</code><code>\.</code><code>0</code><code>[</code><code>678</code><code>] no-gzip</code>
<code> </code><code>BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html </code>
4、測試并啟動
<a href="https://s5.51cto.com/wyfs02/M02/A6/34/wKioL1nLCvmT0SuHAAAF84zvd0U956.png" target="_blank"></a>
5、測試是否激活此功能
Linux測試
<a href="https://s3.51cto.com/wyfs02/M00/A6/34/wKioL1nLC3iDQik_AAAhKyH1ufc645.png" target="_blank"></a>
<a href="https://s3.51cto.com/wyfs02/M02/07/83/wKiom1nLC7fA2or_AAApAsmkPCA061.png" target="_blank"></a>
Windows測試
<a href="https://s3.51cto.com/wyfs02/M02/07/83/wKiom1nLC_DDCxR5AABAPyFMopA544.png" target="_blank"></a>
14、HTTPS配置
安全:通過密鑰交換得來的對稱密鑰加密要發送的資料
加密的過程:需要消耗CPU時鐘周期
SSL handshark需要消耗大量時間[降低使用者體驗]
HTTPD事務
HTTPS事務
<a href="https://s4.51cto.com/wyfs02/M01/07/84/wKiom1nLFDyST-nCAAAtr-bXdzA406.png" target="_blank"></a>
SSL Hankshark
HTTPS流程
<code>1</code><code>、確定openssl程式存在</code>
<code>[root@localhost ~]# rpm -q --whatprovides `which openssl`</code>
<code>openssl-</code><code>1.0</code><code>.1e-</code><code>57</code><code>.el6.i686</code>
<code>[root@localhost ~]# rpm -ql openssl</code>
<code>/usr/lib/libcrypto.so.</code><code>10</code>
<code>/usr/lib/libssl.so.</code><code>10</code>
<code>/usr/bin/openssl</code>
<code>[root@localhost ~]# rpm -qi openssl </code><code>//A general purpose cryptography library with TLS implementation</code>
<code>在客戶機間實作安全的通信,SSL/TLS的實作</code>
1、建立CA
<a href="https://s1.51cto.com/wyfs02/M01/07/84/wKiom1nLF5eAgsO0AAB5pBy81-4316.png" target="_blank"></a>
2、在HTTP伺服器上生成請求
<a href="https://s4.51cto.com/wyfs02/M02/07/85/wKiom1nLGOijheIHAABr7zg4rHY193.png" target="_blank"></a>
3、送出請求
<code>scp指令是ssh用戶端指令</code>
<code># which scp</code>
<code>/usr/local/dropbear/bin/scp</code>
<code># rpm -q --whatprovides /usr/bin/scp</code>
<code>openssh-clients-</code><code>5</code><code>.3p1-</code><code>122</code><code>.el6.i686</code>
<code># rpm -ql openssh-clients | grep bin</code>
<code>/usr/bin/.ssh.hmac</code>
<code>/usr/bin/scp </code>
<code>/usr/bin/sftp </code><code>//安全ftp</code>
<code>/usr/bin/slogin</code>
<code>/usr/bin/ssh </code><code>//</code>
<code>/usr/bin/ssh-add </code>
<code>/usr/bin/ssh-agent</code>
<code>/usr/bin/ssh-copy-id</code>
<code>/usr/bin/ssh-keyscan</code>
<a href="https://s4.51cto.com/wyfs02/M01/A6/36/wKioL1nLGgzhjcQIAAAINtvZEnI971.png" target="_blank"></a>
5、獲驗證書
<a href="https://s2.51cto.com/wyfs02/M00/A6/37/wKioL1nLG2fyIgUBAAAMu8k_47s837.png" target="_blank"></a>
6、配置Httpd支援https
<a href="https://s1.51cto.com/wyfs02/M01/07/85/wKiom1nLHBewTVpqAAARLU5L5X8622.png" target="_blank"></a>
7、配置檔案(/etc/httpd/conf.d/ssl.conf)中添加如下内容
<a href="https://s3.51cto.com/wyfs02/M02/07/85/wKiom1nLHYThjxACAAAZIgRNyjA809.png" target="_blank"></a>
<a href="https://s5.51cto.com/wyfs02/M01/07/85/wKiom1nLHeXSMrNVAAAEvZZs6-E800.png" target="_blank"></a>
8、測試https通路相應的主機
Windows測試不用google測試:将CA公鑰導入信任的頒發機構
Google對數字簽名為SHA1,不會通過認證
<a href="https://s4.51cto.com/wyfs02/M00/07/85/wKiom1nLH06hL9seAAAMJzY8bto016.png" target="_blank"></a>
<a href="https://s1.51cto.com/wyfs02/M01/A6/37/wKioL1nLIPeA9snJAAKTBtsgGV4978.png" target="_blank"></a>
Linux測試:
<a href="https://s2.51cto.com/wyfs02/M02/07/86/wKiom1nLJTTTn-67AAAKncM7cvY184.png" target="_blank"></a>
15、用戶端工具
curl指令 A utility for getting files from remote servers (FTP, HTTP, and others)
<a href="https://s2.51cto.com/wyfs02/M01/A6/38/wKioL1nLMK3zLoNlAAAX4AreS1c935.png" target="_blank"></a>
<a href="https://s5.51cto.com/wyfs02/M01/A6/38/wKioL1nLMMSAfIO_AABdVcjAT8A244.png" target="_blank"></a>
<a href="https://s1.51cto.com/wyfs02/M02/07/86/wKiom1nLMReyBaEIAAAYqDYKfcA240.png" target="_blank"></a>
<a href="https://s5.51cto.com/wyfs02/M00/07/86/wKiom1nLMSzzyVekAABHE7Cm2s8642.png" target="_blank"></a>
<a href="https://s3.51cto.com/wyfs02/M02/A6/38/wKioL1nLMT-BmF1aAAA5y7Z3DXA964.png" target="_blank"></a>
elinks指令 A text-mode Web browser
<a href="https://s3.51cto.com/wyfs02/M00/07/86/wKiom1nLM1XgP0HSAAAtA8NbQbE985.png" target="_blank"></a>
telnet指令 connects to a host using the TELNET protocol
<a href="https://s5.51cto.com/wyfs02/M01/A6/38/wKioL1nLM6ahRlSVAAAVMXqp0DI043.png" target="_blank"></a>
16、HTTPD相關的工具
<code>[root@localhost ~]# rpm -ql httpd | grep bin</code>
<code>/usr/sbin/apachectl </code><code>//LSB腳本,驗證# file /usr/sbin/apachectl</code>
<code>/usr/sbin/httpd </code><code>//prefork</code>
<code>/usr/sbin/httpd.event </code><code>//event</code>
<code>/usr/sbin/httpd.worker </code><code>//worker</code>
<code>/usr/sbin/rotatelogs </code><code>//日志滾動程式</code>
<code>/usr/sbin/suexec </code><code>//臨時切換httpd程序的屬主,讀取apache使用者沒有權限讀取的檔案</code>
<code>[root@localhost ~]# rpm -ql httpd-tools</code>
<code>/usr/bin/ab </code><code>//httpd内置的壓力測試工具</code>
<code>/usr/bin/htdbm</code>
<code>/usr/bin/htdigest</code>
<code>/usr/bin/htpasswd </code><code>//basic認證基于檔案實作時,用到時生成密碼的工具</code>
<code>/usr/bin/logresolve</code>
htpasswd指令的使用
<a href="https://s2.51cto.com/wyfs02/M02/07/89/wKiom1nLTq6Qf3Z8AAAcmExxwhQ121.png" target="_blank"></a>
apachectl指令的使用 apache control
<a href="https://s2.51cto.com/wyfs02/M01/A6/3B/wKioL1nLTwTy5POPAAAQnMbmtKQ182.png" target="_blank"></a>
apxs指令 apache extend tools httpd-devel提供(develop 開發元件)
編譯安裝第3方子產品或自己的子產品,需要借助apxs (速率限制、ddos攻擊防止、php基于子產品)
rotatelogs 日志滾動工具
<a href="https://s3.51cto.com/wyfs02/M00/07/8A/wKiom1nLUBnz3V9-AAALZjHu5lY297.png" target="_blank"></a>
suexec 臨時切換httpd子程序的身份,通路特殊權限的檔案
<a href="https://s1.51cto.com/wyfs02/M01/A6/3C/wKioL1nLUdHCr5SkAACeTg9zw4w974.png" target="_blank"></a>
17、壓力測試
壓力測試:bench mark
功能:
<a href="https://s2.51cto.com/wyfs02/M02/07/8A/wKiom1nLUy2Qh25LAAAOXMMBk24604.png" target="_blank"></a>
<a href="https://s1.51cto.com/wyfs02/M00/A6/3C/wKioL1nLUxaSVwKCAABubPmTDGI708.png" target="_blank"></a>
ab指令:
1、 ab發起的并發請求,<code>并非伺服器的承載量</code>,<code>實際80%就應該不錯了</code>。滿載時,伺服器不會有任何響應。
2、 測試出的網絡帶寬,<code>并非網絡帶寬承載量</code>,<code>實際大于此帶寬才會有此性能</code>。帶寬跑滿時,網絡跑不動了。
本文轉自 lccnx 51CTO部落格,原文連結:http://blog.51cto.com/sonlich/1968229,如需轉載請自行聯系原作者