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

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:

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

wKioL1nGAorCbsyuAABNkUlff-I109.png


Http特性

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

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

wKioL1nGBMnRyCk4AAA6_JWepBQ481.png


HTTP安装

wKiom1nGBZXzizP6AAAapL85fRo528.png

1
2
# yum info httpd        //The Apache HTTP Server is a powerful, efficient, and extensible
                 //强大、高效、可扩展
1
2
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
/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配置文件

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

配置文件格式

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

配置指令格式

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



HTTPD配置及应用

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

1、port

wKioL1nGEIXiFWx9AABJwQ7Ayig334.png

使用示例

wKioL1nIhaTRFaz9AAAIYtg1n1g421.png

wKioL1nIhfHzZSWqAAAPIppT6aM771.png


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

2、持久和非持久连接

wKioL1nGFBuAuIhuAABhmikUVC8768.png

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


不同版本对应的特性

wKiom1nGFOeh6vyWAAAfaGoyrT8485.png


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

wKioL1nIh3DAI1KHAAATdCDm22s468.png

重载并验证

1
# service httpd reload

wKioL1nIiKijcLdVAAASrAEe48Q168.png

wKiom1nIiOTSEWkYAAANCKUq52I281.png


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

wKioL1nIh_Px-qjrAAANo6fi6f8286.png

重载并验证

1
# service httpd reload

wKioL1nIiTGh1kMXAAAS35pFY5M018.png

wKiom1nIiWyhiAk0AAARA2pI_E8029.png




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

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

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


1)查看当前使用的模块

wKiom1nIicPRum2HAAALYNPY1xs955.png

2)查看装载的模块

wKiom1nIigSSqJvAAAAveprtBf0459.png

3)更换MPM

wKioL1nIioaSF5NjAAApu3Z_RWw034.png


使用示例

1
2
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
更改为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 <网站的承载能力有一定影响>

1
2
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
# 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承载量

wKioL1nGLMfjEKBjAAANd0uJf_A673.png

wKiom1nGL4jRu4i9AAA9jjEn8G0576.png

使用示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
查看此模块已经被装载
# 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 <资源路径的根映射为文件系统的哪个目录>

wKioL1nHGlzzHj3cAAAyVpT-8NM686.png

使用示例:

1
2
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
# 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
1
2
3
4
5
6
7
8
9
10
修改配置/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、站点访问控制

wKiom1nHG-HTeSFDAAAx19QdQxM760.png


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

6、默认主页面

DirectoryIndex index.html index.html.var

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


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

7、1基于来源地址

wKiom1nHJTDyiQIcAABf3NU7w1s923.pngwKiom1nHJZKDNKmFAAASPqKMgGk361.png

wKiom1nHJwvgq3XBAAA3KzUNan8877.png


使用示例

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

wKiom1nIlBXzjrlOAABDNoyn5hw042.png

wKioL1nIlAPzwaFfAABUTJ7yPvk292.png-wh_50


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


wKiom1nIlVSh4WTEAAAnbwQLJUA645.png



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

wKiom1nIl1GhbHJ2AAA8OH01J1I158.png


7、2用户访问控制

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

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

wKioL1nHdruh4nagAAAtf6v6xVg314.png

wKioL1nHduSiRbvtAAAsLxUtCpg318.png

wKioL1nHdx2jiTBoAAAPVD_7idk175.png


1)基于用户认证

wKiom1nLOfTyJT5RAAA_IZ64rl8950.png

2)基于组认证 

wKiom1nHf87zcSnJAABL0Zd7V2Y959.png


使用示例

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

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

2、添加配置

1
2
3
4
5
6
7
8
<Directory  "/www/htdocs/admin" >
     Options None
     AllowOverride None
     AuthType Basic
     AuthName  "Administrator private"
     AuthUserFile  "/etc/httpd/conf.d/.htpasswd"
     Require valid-user
< /Directory >
1
2
3
4
5
# 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

wKiom1nHfo3g62I2AAAQNIADtmg463.png


3、添加组配置

1
2
3
4
5
6
7
8
9
<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 >

1
2
# httpd -t
# service httpd reload


8、日志设定

错误日志

wKioL1nHgS7yiVA6AAAlYTNCGs8312.png

1、日志为链接路径

wKioL1nHgYeRj6pbAAAQgnS4U0E351.png


访问日志

wKioL1nHg9PR78svAAAeM2HTegM648.png

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

wKiom1nLNdDghQHBAACf2dDfjHM007.png



9、路径别名

wKioL1nHhkmTXn0IAABCCcHuxLE068.png


使用示例

1
2
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
39
40
41
42
43
44
45
46
47
##默认配置
# 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、字符集设定

wKioL1nHiiWSa5pRAAAb0_1AkwU456.png


11、虚拟主机

虚拟主机的类型

wKiom1nHjeeio3eJAAAa9hWjeVw439.png

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

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

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

wKioL1nHkI7Qpg26AAA-43oHWTE933.png

配置前提

wKioL1nHkOKTEcimAAAUv9kDovg522.png


虚拟主机配置格式

wKiom1nHkVzgBUthAAAwP9tuwwM958.png


wKiom1nIl_6QqCByAABMflu_ujY997.png


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

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

wKiom1nImiiRebu3AAAppFlVa1g724.png

wKioL1nImlmQLMbnAAAKEy07BP4823.png


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

wKiom1nImzDSt1q8AAAk3XaX-zo317.png

wKioL1nImvXxHiGAAAAPYr98WKA023.png


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

wKiom1nImzDSt1q8AAAk3XaX-zo317.png

wKioL1nIm-vj2sTmAAAj9BGugGA278.png

wKioL1nInMPQQZPSAAAP6f97n8M346.png

wKiom1nInP_jW2U6AAA3NO8Hz0I411.png



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

wKioL1nIoyWQx5q3AABZFdeoNGs870.png


基于用户的访问控制

wKiom1nIqPDT9r_BAABe-Uy4SXc907.png



13、mod_deflate 模块

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

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



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

wKioL1nLBgnTPMoXAAAidoijJRw224.png

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

wKiom1nLBjSikkwPAAAQ__nXBHw224.png


配置指令解析

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

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

DeflateCompressionlevel 9     //压缩比

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


使用示例

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

wKiom1nLCgngcIjSAAAxURHkOfc789.png

wKioL1nLCeHgoDQKAAAbPnSOGxU292.png


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

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


3、添加压缩指令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
备份配置文件
     # 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、测试并启动

wKioL1nLCvmT0SuHAAAF84zvd0U956.png


5、测试是否激活此功能

Linux测试

wKioL1nLC3iDQik_AAAhKyH1ufc645.png

wKiom1nLC7fA2or_AAApAsmkPCA061.png

Windows测试

wKiom1nLC_DDCxR5AABAPyFMopA544.png




14、HTTPS配置

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

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

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


HTTPD事务

wKioL1nLEp7h_ZF9AAA6t0LhP5c221.png

HTTPS事务

wKiom1nLFDyST-nCAAAtr-bXdzA406.png

SSL Hankshark

wKiom1nLKHrwXLwXAAAeYj-ZsQU066.png


HTTPS流程

wKiom1nLFSKTzheUAAAZys-5BPk398.png

1
2
3
4
5
6
7
8
9
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

wKiom1nLF5eAgsO0AAB5pBy81-4316.png

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

wKiom1nLGOijheIHAABr7zg4rHY193.png

3、提交请求

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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

wKioL1nLGgzhjcQIAAAINtvZEnI971.png

4、验证及签证wKiom1nLGkryUauFAAC3ASWfwQI060.png

5、获取证书

wKioL1nLG2fyIgUBAAAMu8k_47s837.png

6、配置Httpd支持https

wKiom1nLHBewTVpqAAARLU5L5X8622.png

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

wKiom1nLHYThjxACAAAZIgRNyjA809.png

wKiom1nLHeXSMrNVAAAEvZZs6-E800.png

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

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

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

wKiom1nLHiLgtpDlAAChO3U6jhw954.pngwKiom1nLHsSwLy-iAACmG8nC8qY311.png

wKiom1nLH06hL9seAAAMJzY8bto016.png

wKioL1nLIPeA9snJAAKTBtsgGV4978.png

Linux测试:

wKiom1nLJTTTn-67AAAKncM7cvY184.png



15、客户端工具

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

wKioL1nLMK3zLoNlAAAX4AreS1c935.png

wKioL1nLMMSAfIO_AABdVcjAT8A244.png

wKiom1nLMReyBaEIAAAYqDYKfcA240.png

wKiom1nLMSzzyVekAABHE7Cm2s8642.png

wKioL1nLMT-BmF1aAAA5y7Z3DXA964.png

elinks命令  A text-mode Web browser

wKiom1nLM1XgP0HSAAAtA8NbQbE985.png


telnet命令 connects to a host using the TELNET protocol

wKioL1nLM6ahRlSVAAAVMXqp0DI043.png



16、HTTPD相关的工具

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[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命令的使用


wKiom1nLTivS59H-AAAr_7q74Pw272.png

wKiom1nLTq6Qf3Z8AAAcmExxwhQ121.png


apachectl命令的使用  apache control

wKioL1nLTwTy5POPAAAQnMbmtKQ182.png


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

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


rotatelogs 日志滚动工具    

wKiom1nLUBnz3V9-AAALZjHu5lY297.png


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

wKioL1nLUdHCr5SkAACeTg9zw4w974.png

 

17、压力测试

压力测试:bench mark

功能:

wKiom1nLUy2Qh25LAAAOXMMBk24604.png


wKioL1nLUxaSVwKCAABubPmTDGI708.png


ab命令:

wKiom1nLXIyzYzVWAAB5R0QF5iI660.png

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   完成一次完整的请求(一次事务)









本文转自 lccnx 51CTO博客,原文链接:http://blog.51cto.com/sonlich/1968229,如需转载请自行联系原作者
目录
相关文章
|
3月前
|
人工智能 Ubuntu 前端开发
Dify部署全栈指南:AI从Ubuntu配置到HTTPS自动化的10倍秘籍
本文档介绍如何部署Dify后端服务及前端界面,涵盖系统环境要求、依赖安装、代码拉取、环境变量配置、服务启动、数据库管理及常见问题解决方案,适用于开发与生产环境部署。
720 1
|
7月前
|
应用服务中间件 Linux 网络安全
Centos 8.0中Nginx配置文件和https正书添加配置
这是一份Nginx配置文件,包含HTTP与HTTPS服务设置。主要功能如下:1) 将HTTP(80端口)请求重定向至HTTPS(443端口),增强安全性;2) 配置SSL证书,支持TLSv1.1至TLSv1.3协议;3) 使用uWSGI与后端应用通信(如Django);4) 静态文件托管路径设为`/root/code/static/`;5) 定制错误页面(404、50x)。适用于Web应用部署场景。
737 87
|
2月前
|
网络安全 开发工具 git
在GitLab CI中同步HTTPS仓库地址的yaml配置
最后,提交并推送 `.gitlab-ci.yml`文件到您的GitLab仓库。GitLab CI/CD将自动识别这个文件,并在每次推送到 `master`分支时执行定义的同步任务。
175 16
|
7月前
|
JSON 安全 网络协议
HTTP/HTTPS协议(请求响应模型、状态码)
本文简要介绍了HTTP与HTTPS协议的基础知识。HTTP是一种无状态的超文本传输协议,基于TCP/IP,常用80端口,通过请求-响应模型实现客户端与服务器间的通信;HTTPS为HTTP的安全版本,基于SSL/TLS加密技术,使用443端口,确保数据传输的安全性。文中还详细描述了HTTP请求方法(如GET、POST)、请求与响应头字段、状态码分类及意义,并对比了两者在请求-响应模型中的安全性差异。
697 20
|
7月前
|
安全 网络协议 算法
HTTP/HTTPS与SOCKS5协议在隧道代理中的兼容性设计解析
本文系统探讨了构建企业级双协议隧道代理系统的挑战与实现。首先对比HTTP/HTTPS和SOCKS5协议特性,分析其在工作模型、连接管理和加密方式上的差异。接着提出兼容性架构设计,包括双协议接入层与统一隧道内核,通过协议识别模块和分层设计实现高效转换。关键技术部分深入解析协议转换引擎、连接管理策略及加密传输方案,并从性能优化、安全增强到典型应用场景全面展开。最后指出未来发展趋势将更高效、安全与智能。
256 1
|
8月前
|
安全 网络安全 数据安全/隐私保护
HTTP 与 HTTPS 协议及 SSL 证书解析-http和https到底有什么区别?-优雅草卓伊凡
HTTP 与 HTTPS 协议及 SSL 证书解析-http和https到底有什么区别?-优雅草卓伊凡
431 3
|
10月前
|
网络协议 安全 网络安全
HTTP与HTTPS协议入门
HTTP协议是互联网的基石,HTTPS则是其安全版本。HTTP基于TCP/IP协议,属于应用层协议,不涉及数据包传输细节,主要规定客户端与服务器的通信格式,默认端口为80。
400 25
HTTP与HTTPS协议入门
|
11月前
|
安全 搜索推荐 网络安全
HTTPS与HTTP:区别及安全性对比
HTTP和HTTPS是现代网络通信中的两种重要协议。HTTP为明文传输,简单但不安全;HTTPS基于HTTP并通过SSL/TLS加密,确保数据安全性和完整性,防止劫持和篡改。HTTPS还提供身份验证,保护用户隐私并防止中间人攻击。尽管HTTPS有额外的性能开销和配置成本,但在涉及敏感信息的场景中,如在线支付和用户登录,其安全性优势至关重要。搜索引擎也更青睐HTTPS网站,有助于提升SEO排名。综上,HTTPS已成为大多数网站的必然选择,以保障用户数据安全和合规性。
858 1
|
Web App开发 Linux 应用服务中间件
【DrissionPage】Linux上如何将https改为http
通过上述步骤,可以在Linux上将DrissionPage从HTTPS改为HTTP。关键在于修改DrissionPage配置、代码中的HTTPS设置、URL以及Web服务器配置,确保所有部分都正确使用HTTP协议。通过合理配置和测试,能够确保系统在HTTP环境下稳定运行。
456 1