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协议实现

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_博客


Http特性

模块化设计:DSO(Dynamic Share Object)

MPM机制(Multipurpose Process Modules) 多路处理模块

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_博客_02


HTTP安装

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_ Linux_03

# yum info httpd       //The Apache HTTP Server is a powerful, efficient, and extensible
                //强大、高效、可扩展
/etc/httpd                   //ServerRoot                         
/etc/httpd/conf.d               //配置片段目录
/etc/httpd/conf/httpd.conf           //主配置
/etc/httpd/logs                //日志目录
/etc/httpd/modules              //模块目录
/etc/httpd/run                //运行中的进程的数据
/etc/rc.d/init.d/httpd            //服务脚本
/etc/sysconfig/httpd              //服务脚本配置

/usr/lib/httpd/modules
/usr/lib/httpd/modules/mod_actions.so     //DSO机制,动态共享对象
/usr/sbin/apachectl               //apachectl程序
/usr/sbin/httpd                   //MPM为IO,串行响应的进程
/usr/sbin/httpd.event             //MPM为复用I/O模型,并行响应的进程 <2.2的httpd,event不成熟>
/usr/sbin/httpd.worker            //MPM.............................
    //ps axu | fgrep httpd可查看
    
/usr/share/doc/httpd-2.2.15         //<DOCUMENTATION>
/usr/share/doc/httpd-2.2.15/ABOUT_APACHE
/usr/share/doc/httpd-2.2.15/CHANGES
/usr/share/doc/httpd-2.2.15/LICENSE
/usr/share/doc/httpd-2.2.15/NOTICE
/usr/share/doc/httpd-2.2.15/README
/usr/share/doc/httpd-2.2.15/VERSIONING

/usr/share/man/man8/apachectl.8.gz      //<MAN Document>
/usr/share/man/man8/htcacheclean.8.gz
/usr/share/man/man8/httpd.8.gz
/usr/share/man/man8/rotatelogs.8.gz
/usr/share/man/man8/suexec.8.gz

/var/cache/mod_proxy                   //<缓存目录>
/var/lib/dav                           //<程序运行中的数据>
/var/log/httpd                         //《日志目录》
/var/run/httpd                         //《运行中的httpd进程的数据》

/var/www/error/                //错误页面html网页存放目录
/var/www/html                  //DocuRoot目录,资源路径的根映射的位置


httpd配置文件

/etc/httpd/conf/httpd.conf 

//首次配置需要备份文件:
# cp -v /etc/httpd/conf/httpd.conf{,.bak}

配置文件格式

# fgrep 'Section' /etc/httpd/conf/httpd.conf  
### Section 1: Global Environment       //全局环境:定义httpd通用功能特性
### Section 2: 'Main' server configuration //主配置段:一个服务器提供单个站点
### Section 3: Virtual Hosts         //虚拟主机:一个服务器提供多个站点

配置指令格式

Directive(指令)    Value(值)
指令:不区分大小写
值:可能区分大小写



HTTPD配置及应用

+++++++++++++++++++++++++++++++++++++++++++++++++++++

1、port

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_博客_04

使用示例

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_ 运维_05

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_ 运维_06


+++++++++++++++++++++++++++++++++++++++++++++++++++++

2、持久和非持久连接

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_博客_07

//并发访问量过大场景,时间或数量限制过大时,可能会导致后续的请求被[拒绝服务],可以关闭或调整时间或数量限制


不同版本对应的特性

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_博客_08


<默认配置:关闭持久连接功能

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_ Linux_09

重载并验证

# service httpd reload

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_博客_10

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_ 运维_11


<修改配置:开启持久连接功能

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_ Linux_12

重载并验证

# service httpd reload

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_ 运维_13

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_ Linux_14




+++++++++++++++++++++++++++++++++++++++++++++++++++++

3、MPM 并发响应模型Multipath Process Module

10多种[适用在多种平台之上]
Linux: prefork, worker, event
编译时,一次只能编译单个模块


1)查看当前使用的模块

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_ 运维_15

2)查看装载的模块

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_ 运维_16

3)更换MPM

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_ 运维_17


使用示例

更改为worker
# awk '$1 != "#" && $0 !~ /^[[:space:]]*$/{print}' /etc/sysconfig/httpd 
#HTTPD=/usr/sbin/httpd.worker
HTTPD=/usr/sbin/httpd.worker
#OPTIONS=
#HTTPD_LANG=C
#PIDFILE=/var/run/httpd/httpd.pid

# service httpd restart
# ps axu | fgrep httpd
root     20183  0.0  1.4  11716  3560 ?        Ss   22:02   0:00 /usr/sbin/httpd.worker
apache   20298  0.0  1.2 289448  3000 ?        Sl   22:02   0:00 /usr/sbin/httpd.worker

更改为event
# awk '$1 != "#" && $0 !~ /^[[:space:]]*$/{print}' /etc/sysconfig/httpd 
#HTTPD=/usr/sbin/httpd.worker
HTTPD=/usr/sbin/httpd.event
#OPTIONS=
#HTTPD_LANG=C
#PIDFILE=/var/run/httpd/httpd.pid

# service httpd restart
# ps axu | fgrep httpd
root     20360  0.6  1.4  12184  3556 ?        Ss   22:04   0:00 /usr/sbin/httpd.event
apache   20363  0.0  1.1 289916  2916 ?        Sl   22:04   0:00 /usr/sbin/httpd.event
apache   20364  0.0  1.1 289916  2904 ?        Sl   22:04   0:00 /usr/sbin/httpd.event
apache   20365  0.0  1.1 289916  2904 ?        Sl   22:04   0:00 /usr/sbin/httpd.event


MPM配置详解 /etc/httpd/conf/httpd.conf <网站的承载能力有一定影响>

# prefork MPM
# StartServers: 启动服务器后,预留的进程数
# MinSpareServers: minimum number of server processes which are kept spare
# MaxSpareServers: maximum number of server processes which are kept spare
# ServerLimit: 服务器的生命周期内为MaxClients准备的最大值
# MaxClients:  最大并发数
# MaxRequestsPerChild: 每个进程最大响应请求数
<IfModule prefork.c>
StartServers       8
MinSpareServers    5
MaxSpareServers   20
ServerLimit      256
MaxClients       256
MaxRequestsPerChild  4000
</IfModule>

# worker MPM
# StartServers:  启动服务预留进程数
# MaxClients:    最大并发数
# MinSpareThreads: 最小并发数
# MaxSpareThreads: maximum number of worker threads which are kept spare
# ThreadsPerChild: 每个进程内的线程数
# MaxRequestsPerChild: 每个线程最多响应请求数
<IfModule worker.c>
StartServers         4
MaxClients         300
MinSpareThreads     25
MaxSpareThreads     75
ThreadsPerChild     25 
MaxRequestsPerChild  0 //0表示没有上限
</IfModule>

配置:影响网站的承载能力

PV承载量= \(每秒请求资源数 * 86400 \)/每个页面的资源数 //满载工作

考虑:全天满负荷运行?带宽使用大小?

带宽:每个PV消耗多少KB * PV承载量

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_ 运维_18

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_博客_19

使用示例

查看此模块已经被装载
# httpd -M | fgrep deflate_module
deflate_module (shared)

禁用 
# vim /etc/httpd/conf/httpd.conf
#LoadModule deflate_module modules/mod_deflate.so

重载 
# service httpd reload

查看 
# httpd -M | fgrep deflate_module
Syntax OK



+++++++++++++++++++++++++++++++++++++++++++++++++++++

4、URL资源路径映射之一:DocRoot <资源路径的根映射为文件系统的哪个目录>

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_ 运维_20

使用示例:

# setenforing 0
# iptables -F
# cat > /var/www/html/index.html << EOF
<html>
  <head>
  <title>MageEdu</title>
  </head>
  <body>
    <h1>Hello</h1>
	<p> <a href="https://s5.51cto.com/wyfs02/M00/07/31/wKiom1nEuS7Tii_KAAA2TqP_0qY316.png">haha</p>
  </body>
</html>
EOF			
# httpd -t && service httpd reload

# yum install elinks
# elinks -dump 127.0.0.1
抓取后退出


                                     Hello

   [1]haha

References

   Visible links
   1. https://s5.51cto.com/wyfs02/M00/07/31/wKiom1nEuS7Tii_KAAA2TqP_0qY316.png
修改配置/etc/httpd/conf/httpd.conf
DocumentRoot "/www/htdocs"
# install -d /www/htdocs
# cat > /www/htdocs/index.html << EOF
hello everyone
EOF
# 
# httpd -t && service httpd reload
# curl 127.0.0.1
hello everyone


+++++++++++++++++++++++++++++++++++++++++++++++++++++

5、站点访问控制

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_ Linux_21


+++++++++++++++++++++++++++++++++++++++++++++++++++++

6、默认主页面

DirectoryIndex index.html index.html.var

自左向右,依次匹配给出目录下的文件,存在时,显示


7、文件系统路径访问控制

7、1基于来源地址

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_ 运维_22**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_ Linux_23

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_博客_24


使用示例

>>>>>>>>>>>>>>>>>>>>>>>>Indexes<下载站使用>

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_ 运维_25

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_ Linux_26


>>>>>>>>>>>>>>>>>>>>>>>>FollowSymlinks


**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_博客_27



>>>>>>>>>>>>>>>>>>>>>>>>来源地址访问控制

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_博客_28


7、2用户访问控制

安全域:认证后方能访问的目录,应该用名称标识

定义在/etc/httpd/conf/httpd.conf文件中

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_ Linux_29

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_ Linux_30

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_博客_31


1)基于用户认证

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_ 运维_32

2)基于组认证 

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_ 运维_33


使用示例

1、创建目录,使之能访问

# install -d /www/htdocs/admin
# echo "hello" > /www/htdocs/admin/index.html

2、添加配置

<Directory "/www/htdocs/admin">
    Options None
    AllowOverride None
    AuthType Basic
    AuthName "Administrator private"
    AuthUserFile "/etc/httpd/conf.d/.htpasswd"
    Require valid-user
</Directory>
# httpd -t
# service httpd reload
# htpasswd -c -m /etc/httpd/conf.d/.htpasswd tom
# htpasswd  -m /etc/httpd/conf.d/.htpasswd obama
# htpasswd  -m /etc/httpd/conf.d/.htpasswd obama

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_ Linux_34


3、添加组配置

<Directory "/www/htdocs/admin">
    Options None
    AllowOverride None
    AuthType Basic
    AuthName "Administrator private"
    AuthUserFile "/etc/httpd/conf.d/.htpasswd"
    AuthGroupFile "/etc/httpd/conf.d/.htgroup"
    Require group weblogic
</Directory>

# httpd -t
# service httpd reload


8、日志设定

错误日志

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_ 运维_35

1、日志为链接路径

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_ Linux_36


访问日志

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_博客_37

官方:httpd.apache.org http://httpd.apache.org/docs/2.2/mod/mod_log_config.html#logformat
Documetation --> 2.2 --> 日志文件

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_ 运维_38



9、路径别名

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_ 运维_39


使用示例

##默认配置
# setenforce 0
# iptables -F
# cat > /var/www/html/index.html << EOF
<html>
  <head>
  <title>MageEdu</title>
  </head>
  <body>
    <h1>Hello</h1>
	<p> <a href="https://s5.51cto.com/wyfs02/M00/07/31/wKiom1nEuS7Tii_KAAA2TqP_0qY316.png">haha</p>
  </body>
</html>
EOF			
# httpd -t && service httpd reload

# curl 127.0.0.1

添加别名
##注意配置文件中URL和路径后必须同时存在是否有/
# vim /etc/httpd/conf/httpd.conf
Alias /bbs/ "/web/htdocs/"

# httpd -t
Syntax OK

# install -d /web/htdocs
# cat > /web/htdocs/index.html
Test Page
# cat /web/htdocs/index.html
Test Page

# service httpd reload

##注意访问有无/的区别
# curl 127.0.1.1/bbs
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL /bbs was not found on this server.</p>
<hr>
<address>Apache/2.2.15 (CentOS) Server at 127.0.1.1 Port 80</address>
</body></html>
# curl 127.0.1.1/bbs/
Test Page



10、字符集设定

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_ Linux_40


11、虚拟主机

虚拟主机的类型

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_博客_41

基于名称完成不同虚拟主机的识别

封装时: HTTP首部、TCP首部、IP首部、帧首部..

    Host: 浏览器键入的主机名 //"应用层首部"中附加,非通信子网

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_ Linux_42

配置前提

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_ 运维_43


虚拟主机配置格式

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_ Linux_44


**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_ 运维_45


以下为编辑配置文件及执行的额外的命令

1、基于IP,配置虚拟主机(不易记,IP需要购买)

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_ 运维_46

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_ 运维_47


2、基于端口,配置虚拟主机(用的少)

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_博客_48

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_博客_49


3、基于Host,配置虚拟主机(在应用层封装Host首部即可)

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_博客_48

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_ Linux_51

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_博客_52

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_博客_53



12、内置的status页面,显示基本的进程信息,handler过滤用户的请求

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_ 运维_54


基于用户的访问控制

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_ Linux_55



13、mod_deflate 模块

通过此模块的功能,在输出时,过滤出纯文本文件压缩后响应给客户端

压缩后响应:节约网络带宽消耗CPU时钟周期提升用户体验



web服务器从本地磁盘加载内容:输入

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_ Linux_56

将加载后的内容,响应给客户端:输出

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_ Linux_57


配置指令解析

SetOutputFilter DEFLATE      //调用输出过滤器: DEFLATE压缩过滤器

DEFLATE可以基于MIME类型过滤,只对过滤出来的纯文本文件,且大小达到一定值时才有必要压缩

DeflateCompressionlevel 9     //压缩比

BrowserMatch ^Mozilla/4 gzip-only-text/html  //匹配到指定浏览器不压缩


使用示例

1、启动httpd服务进程,在Windows和Linux中分别测试

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_ Linux_58

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_博客_59


2、查看是否启用mod_deflate.so模块

# httpd -M | fgrep deflate
 deflate_module (shared)
Syntax OK


3、添加压缩指令

	备份配置文件
		# cp -v /etc/httpd/conf/httpd.conf{,.bak}

	在配置文件中添加如下指令
		
		# 调用DEFLATE压缩过滤器,只对输出过滤
		SetOutputFilter DEFLATE 

		
		# DEFLATE过滤器,过滤出指定的MIME类型,仅对这些MIME类型的纯文本文件进行压缩
		AddOutputFilterByType DEFLATE text/plain 
		AddOutputFilterByType DEFLATE text/html
		AddOutputFilterByType DEFLATE application/xhtml+xml
		AddOutputFilterByType DEFLATE text/xml
		AddOutputFilterByType DEFLATE application/xml
		AddOutputFilterByType DEFLATE application/x-javascript
		AddOutputFilterByType DEFLATE text/javascript
		AddOutputFilterByType DEFLATE text/css
		
		# 压缩级别(0-9),级别越高越消耗cpu时钟周期
		DeflateCompressionLevel 9 
		
		# 正则匹配此浏览器不压缩
		BrowserMatch ^Mozilla/4 gzip-only-text/html
		BrowserMatch ^Mozilla/4\.0[678] no-gzip
		BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html		


4、测试并启动

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_ 运维_60


5、测试是否激活此功能

Linux测试

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_ 运维_61

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_ 运维_62

Windows测试

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_ Linux_63




14、HTTPS配置

安全:通过密钥交换得来的对称密钥加密要发送的数据

加密的过程:需要消耗CPU时钟周期

SSL handshark需要消耗大量时间[降低用户体验]


HTTPD事务

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_ 运维_64

HTTPS事务

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_博客_65

SSL Hankshark

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_博客_66


HTTPS流程

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_博客_67

1、确保openssl程序存在
[root@localhost ~]# rpm -q --whatprovides `which openssl`
openssl-1.0.1e-57.el6.i686
[root@localhost ~]# rpm -ql openssl
/usr/lib/libcrypto.so.10
/usr/lib/libssl.so.10
/usr/bin/openssl
[root@localhost ~]# rpm -qi openssl //A general purpose cryptography library with TLS implementation
在客户机间实现安全的通信,SSL/TLS的实现



1、创建CA

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_博客_68

2、在HTTP服务器上生成请求

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_ 运维_69

3、提交请求

scp命令是ssh客户端命令
# which scp
/usr/local/dropbear/bin/scp
# rpm -q --whatprovides /usr/bin/scp
openssh-clients-5.3p1-122.el6.i686
# rpm -ql openssh-clients | grep bin
/usr/bin/.ssh.hmac
/usr/bin/scp               
/usr/bin/sftp             //安全ftp
/usr/bin/slogin
/usr/bin/ssh              //
/usr/bin/ssh-add          
/usr/bin/ssh-agent
/usr/bin/ssh-copy-id
/usr/bin/ssh-keyscan

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_ Linux_70

4、验证及签证**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_博客_71

5、获取证书

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_博客_72

6、配置Httpd支持https

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_ 运维_73

7、配置文件(/etc/httpd/conf.d/ssl.conf)中添加如下内容

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_ 运维_74

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_博客_75

8、测试https访问相应的主机

Windows测试不用google测试:将CA公钥导入信任的颁发机构

Google对数字签名为SHA1,不会通过认证

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_博客_76**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_ Linux_77

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_ Linux_78

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_ 运维_79

Linux测试:

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_ 运维_80



15、客户端工具

curl命令  A utility for getting files from remote servers (FTP, HTTP, and others)

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_博客_81

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_博客_82

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_博客_83

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_ 运维_84

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_ Linux_85

elinks命令  A text-mode Web browser

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_博客_86


telnet命令 connects to a host using the TELNET protocol

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_ 运维_87



16、HTTPD相关的工具

[root@localhost ~]# rpm -ql httpd | grep bin
/usr/sbin/apachectl      //LSB脚本,验证# file /usr/sbin/apachectl
/usr/sbin/httpd          //prefork
/usr/sbin/httpd.event    //event
/usr/sbin/httpd.worker   //worker
/usr/sbin/rotatelogs    //日志滚动程序
/usr/sbin/suexec        //临时切换httpd进程的属主,读取apache用户没有权限读取的文件

[root@localhost ~]# rpm -ql httpd-tools
/usr/bin/ab               //httpd内置的压力测试工具
/usr/bin/htdbm
/usr/bin/htdigest
/usr/bin/htpasswd        //basic认证基于文件实现时,用到时生成密码的工具
/usr/bin/logresolve


htpasswd命令的使用


**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_ Linux_88

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_博客_89


apachectl命令的使用  apache control

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_博客_90


apxs命令 apache extend tools httpd-devel提供(develop 开发组件)

    编译安装第3方模块或自己的模块,需要借助apxs (速率限制、ddos攻击防止、php基于模块)


rotatelogs 日志滚动工具    

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_ Linux_91


suexec  临时切换httpd子进程的身份,访问特殊权限的文件

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_ Linux_92

 

17、压力测试

压力测试:bench mark

功能:

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_ Linux_93


**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_博客_94


ab命令:

**HTTP配置文件详解(访问控制、虚拟主机、DEFLATE、HTTPS配置)**_ Linux_95

1、 ab发起的并发请求,并非服务器的承载量,实际80%就应该不错了。满载时,服务器不会有任何响应。

2、 测试出的网络带宽,并非网络带宽承载量,实际大于此带宽才会有此性能。带宽跑满时,网络跑不动了。

# ab -c 100 -n 10000 http://172.16.100.1
    # -c 并发100个
    # -n 总数10000个
    # (满负荷的服务器承载量)
Server Software:        Apache/2.2.15           //对方的服务端程序及版本
Server Hostname:        localhost               //对方的主体名
Server Port:            80                      //服务器端的端口
Document Path:          /admin/index            //请求的URL资源路径
Document Length:        284 bytes               //页面资源的大小
Concurrency Level:      100                     //并发数(级别)
Time taken for tests:   1.158 seconds           //完成测试,消耗1.158s
Complete requests:      1024                    //共完成1024个请求数
Failed requests:        0                       //错误请求数量    
Write errors:           0                       //写错误数量
Total transferred:      514272 bytes            //总传输字节:1B(bytes) = 8bit
HTML transferred:       299904 bytes            //HTML传输:B
    非HTML为:http首部、tcp首部、ip首部、链路层首部和尾部
Requests per second:    884.16 [#/sec] (mean)   //平均每秒完成884个请求
Time per request:       1158.155 [ms] (mean)    //平均每批请求经由的时间(一批请求就是并发数)
    每并发100个所消耗的时间总和/总批数=平均每并发100个经由的时间
Time per request:       1.131 [ms]              //平均每单个请求经由的时间
Transfer rate:          433.64 [Kbytes/sec]     //网络带宽4M带宽:B  433KB --> 0.433 MB -->  3.5Mib

重要测试结果
              min  mean[+/-sd] median   max   //mean(非(min+max)/2)  median中间
Connect:        0  141 289.6     32    1031   客户端建立连接(10000个请求内最短,最长,平均消耗时间)
Processing:    30  206 283.7    104     913   服务端处理请求
Waiting:        0  189 285.6     83     911   服务端发送响应
Total:         81  347 378.3    134    1078   完成一次完整的请求(一次事务)