天天看點

**HTTP配置檔案詳解(通路控制、虛拟主機、DEFLATE、HTTPS配置)**

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模型,并行響應的程序 &lt;2.2的httpd,event不成熟&gt;</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>//&lt;DOCUMENTATION&gt;</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>//&lt;MAN Document&gt;</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>//&lt;緩存目錄&gt;</code>

<code>/</code><code>var</code><code>/lib/dav                           </code><code>//&lt;程式運作中的資料&gt;</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>

&lt;預設配置:關閉持久連接配接功能

<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>

&lt;修改配置:開啟持久連接配接功能

<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 != "#" &amp;&amp; $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 &lt;網站的承載能力有一定影響&gt;

<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>&lt;IfModule prefork.c&gt;</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>&lt;/IfModule&gt;</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>&lt;IfModule worker.c&gt;</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 &lt;資源路徑的根映射為檔案系統的哪個目錄&gt;

<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 &gt; /</code><code>var</code><code>/www/html/index.html &lt;&lt; EOF</code>

<code>&lt;html&gt;</code>

<code>  </code><code>&lt;head&gt;</code>

<code>  </code><code>&lt;title&gt;MageEdu&lt;/title&gt;</code>

<code>  </code><code>&lt;/head&gt;</code>

<code>  </code><code>&lt;body&gt;</code>

<code>    </code><code>&lt;h1&gt;Hello&lt;/h1&gt;</code>

<code>    </code><code>&lt;p&gt; &lt;a href=</code><code>"https://s5.51cto.com/wyfs02/M00/07/31/wKiom1nEuS7Tii_KAAA2TqP_0qY316.png"</code><code>&gt;haha&lt;/p&gt;</code>

<code>  </code><code>&lt;/body&gt;</code>

<code>&lt;/html&gt;</code>

<code>EOF        </code>

<code># httpd -t &amp;&amp; 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 &gt; /www/htdocs/index.html &lt;&lt; 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>

&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;Indexes&lt;下載下傳站使用&gt;

<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>

&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;FollowSymlinks

&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;來源位址通路控制

<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>&gt; /www/htdocs/admin/index.html</code>

2、添加配置

<code>&lt;Directory </code><code>"/www/htdocs/admin"</code><code>&gt;</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>&lt;</code><code>/Directory</code><code>&gt;</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 --&gt; </code><code>2.2</code> <code>--&gt; 日志檔案</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 &gt; /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>&lt;!DOCTYPE HTML PUBLIC </code><code>"-//IETF//DTD HTML 2.0//EN"</code><code>&gt;</code>

<code>&lt;html&gt;&lt;head&gt;</code>

<code>&lt;title&gt;</code><code>404</code> <code>Not Found&lt;/title&gt;</code>

<code>&lt;/head&gt;&lt;body&gt;</code>

<code>&lt;h1&gt;Not Found&lt;/h1&gt;</code>

<code>&lt;p&gt;The requested URL /bbs was not found on </code><code>this</code> <code>server.&lt;/p&gt;</code>

<code>&lt;hr&gt;</code>

<code>&lt;address&gt;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>&lt;/address&gt;</code>

<code>&lt;/body&gt;&lt;/html&gt;</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,如需轉載請自行聯系原作者