http2.2常用配置(虚拟主机,访问控制,压缩,缓存,压力测试)

系统环境

[[email protected] ~]# cat /etc/redhat-release 
CentOS release 6.6 (Final)
[[email protected] ~]# uname -r
2.6.32-504.el6.x86_64
[[email protected] ~]# uname -m
x86_64

程序环境

配置文件:

主配置文件:/etc/httpd/conf/httpd.conf

分段配置文件:/etc/httpd/conf.d/*.conf

服务脚本:

/etc/rc.d/init.d/httpd

模块文件目录:

/etc/httpd/modules--> /usr/lib64/httpd/modules

主程序文件:

/usr/sbin/httpd (prefork)

/usr/sbin/httpd.worker(worker)

/usr/sbin/httpd.event(event)

日志文件目录:

/var/log/httpd

access_log:访问日志文件

error_log:错误日志

站点文档目录:

/var/www/html

配置文件:

Directive  Value

指令        值

配置文件分为三段

[[email protected] ~]# cd /etc/httpd/conf
[[email protected] conf]# grep "Section"httpd.conf
### Section 1: Global Environment  
### Section 2: ‘Main‘ server configuration
### Section 3: Virtual Hosts

‘Main‘ server和VirtualHosts不能同时启用;默认启用的是‘Main‘ server;

1)      指定监听地址和端口

Listen [IP:]80

Listen 80

IP省略时表示监听本机上所有可用的IP地址;

Listen指令可以出现多次

修改端口服务必须重启才可以生效

2)      持久连接相关

非持久连接:每个资源都是单独通过专用的连接进行获取。

持久连接:连接建立后,每个资源获取结束后不会断开连接,而继续等待其他资源完成传输。

如何断开?

数量限制:如100个

时间限制:如60秒

劣势:对并发访问量较大的服务器,开持久连接会有写请求得不到服务。

改进:减短,httpd-2.4支持毫秒级

KeepAlive    Off            #是否使用长连接  如果用户访问量小的话可以打开,on表示打开
MaxKeepAliveRequests 100  #设置长连接可以访问的资源,设置为0表示不断开,设置为100表示用户访问100个资源就断开
KeepAliveTimeout 15       #设置长连接断开时间
数量限制和时间限制,那个先到那个就先生效

验证:

使用telnet连接web服务器获取一个资源,如果获取到资源后立马断开了,说明没有启用长连接,如果启用长连接之后获取资源不会立马断开,而是等待获取到指定数量或者指定时间才会自动断开。

[[email protected] ~]# cp /etc/fstab /var/www/html/
[[email protected] ~]# telnet 172.16.4.102 80
Trying 172.16.4.102...
Connected to 172.16.4.102.
Escape character is ‘^]‘.
GET /fstab http/1.1     #获取一个服务器资源
Host:172.16.4.102      #获取的主机
 
HTTP/1.1 200 OK
Date: Thu, 23 Apr 2015 21:10:03 GMT
Server: Apache/2.2.15 (CentOS)
Last-Modified: Thu, 23 Apr 2015 21:07:40 GMT
ETag: "120b71-399-5146aab8c913b"
Accept-Ranges: bytes
Content-Length: 921
Content-Type: text/plain; charset=UTF-8
 
省略部分内容……
Connection closed by foreign host.

3)      MPM

因为Linux不是原生态的支持线程,所以默认使用prefork

MPM:Multi Path  Modules

Prefork:(一个请求用一个进程响应)

Worker:(一个请求用一个线程响应(启动多个进程,每个进程用一个线程响应))

Event:(一个进程处理多个请求)2.4以后版本的默认模块

查看启动的模型

[[email protected] ~]# ps aux | grep httpd
root     26547  0.0  0.3 184324 3840 ?        Ss   07:00  0:00 /usr/sbin/httpd   #表示启动的模型为prefork
apache   26550  0.0  0.2 184324 2460 ?        S    07:00  0:00 /usr/sbin/httpd   
apache   26551  0.0  0.2 184324 2460 ?        S    07:00  0:00 /usr/sbin/httpd
apache   26552  0.0  0.2 184324 2460 ?        S    07:00  0:00 /usr/sbin/httpd
apache   26553  0.0  0.2 184324 2460 ?        S    07:00  0:00 /usr/sbin/httpd
apache   26554  0.0  0.2 184324 2460 ?        S    07:00  0:00 /usr/sbin/httpd
apache    26555  0.0 0.2 184324  2460 ?        S   07:00   0:00 /usr/sbin/httpd
apache   26556  0.0  0.2 184324 2460 ?        S    07:00  0:00 /usr/sbin/httpd
apache   26557  0.0  0.2 184324 2460 ?        S    07:00  0:00 /usr/sbin/httpd
root     26559  0.0  0.0 103256  840 pts/1    S+   07:00  0:00 grep httpd

设置httpd支持worker模型

修改/etc/sysconfig/httpd,取消HTTPD=/usr/sbin/httpd.worker行的注释,然后重启服务器,查看进程启动的就是worker进程了

[[email protected] ~]# vim /etc/sysconfig/httpd  
HTTPD=/usr/sbin/httpd.worker
[[email protected] ~]# service httpd restart
[[email protected] ~]# ps aux | grep httpd
root     49621  0.0  0.4 184528 4052 ?        Ss   12:35  0:00 /usr/sbin/httpd.worker   #启动的模型为worker
apache   49624  0.0  0.5 528788 5348 ?        Sl   12:35  0:00 /usr/sbin/httpd.worker
apache   49625  0.0  0.5 528788 5352 ?        Sl   12:35  0:00 /usr/sbin/httpd.worker
apache   49626  0.0  0.5 594324 5356 ?        Sl   12:35  0:00 /usr/sbin/httpd.worker
root     49737  0.0  0.0 103252  832 pts/1    S+   12:36  0:00 grep httpd

定义prefork.c模型属性

<IfModule prefork.c>
StartServers      8    #服务器启动时启动多少空闲进程
MinSpareServers   5    #最少响应进程,最少保证要有多少空闲进程响应用户请求(如果不够就启动)
MaxSpareServers  20    #最大空闲进程
ServerLimit      256   #指定MaxClients的上限值,(如果需要调大,那么必须重新启动服务器)
MaxClients      256    #限制最多有多少用户请求连接进来,不能超过ServerLimit的上限
MaxRequestsPerChild  4000  #限制一个进程最多响应多少此用户请求,如果达到限制次数,那么会结束进程,并且重新生成一个进程响应
</IfModule>

定义worker模型属性

<IfModule worker.c>
StartServers         4  #默认启动多少进程
MaxClients        300   #最多允许多少用户请求连接进来
MinSpareThreads    25   #最小空闲线程
MaxSpareThreads    75   #最大空闲线程
ThreadsPerChild    25   #每一个进程最多生成多少线程
MaxRequestsPerChild  0   #一个服务器的最大请求数,0表示没有限制
</IfModule>

4)      DOS

配置模块加载:

修改httpd配置文件,按照如下格式修改即可:

LoadModule <module_name> <module_path>

查看系统加载的模块:

[[email protected] ~]# grep ^LoadModule/etc/httpd/conf/httpd.conf
LoadModule auth_basic_modulemodules/mod_auth_basic.so
LoadModule auth_digest_modulemodules/mod_auth_digest.so
LoadModule authn_file_modulemodules/mod_authn_file.so
LoadModule authn_alias_modulemodules/mod_authn_alias.so
LoadModule authn_anon_modulemodules/mod_authn_anon.so
LoadModule authn_dbm_modulemodules/mod_authn_dbm.so
LoadModule authn_default_modulemodules/mod_authn_default.so
LoadModule authz_host_modulemodules/mod_authz_host.so
LoadModule authz_user_modulemodules/mod_authz_user.so
LoadModule authz_owner_modulemodules/mod_authz_owner.so
LoadModule authz_groupfile_modulemodules/mod_authz_groupfile.so
省略部分内容…………

用到什么模块只需要使用loadmodule加载,如果不用#注释即可

补充:

httpd –l:查看静态编译的模块

httpd –M:查看所有模块,包括静态编译和动态装卸载的模块

5)      定义“Main server的文档页面路径”

DocumentRoot指令

示例:

DocumentRoot "/var/www/html"

文档路径映射:

DocumentRoot指向的路径为URL起始的位置

/var/www/html/images/1.jpg

http://server/images/1.jpg

6)      Direction中的访问控制定义

(1)Options

默认direction配置

<Directory "/var/www/html">       #定义区域的开始
    OptionsIndexes FollowSymLinks   # options配置
   AllowOverride None             
    Orderallow,deny             
    Allowfrom all          
</Directory>     #定义区域的结束

Options选项:

Indexes    #允许索引目录,去掉表示不允许

Includes    #允许支持服务器端包含(SSI)

FollowSymLink  #跟随符号连接(如果有软连接和硬连接,但是不在web目录是否允许访问)

SymLinksifOwnerMatch #允许符号连接,但是属组必须和httpd进程用户一致

ExecCG           #运行运行CGI脚本

MultiViews       #内容协商机制

None      #不支持任何选项

ALL       #表示所有选项(千万不要开启)

(2)基于源地址访问控制

Order allow,deny或者Order deny,allow可以根据客户端地址或ip地址来决定是否允许客户端访问。

Order:设置限制顺序

  • Allow,deny:先允许,后拒绝,默认拒绝所有为明确允许的客户机地址
  • Deny,allow:先拒绝,后允许,默认允许所有为明确拒绝的客户机地址

Allow和deny设置地址限制

  • Denyfrom address1 address2……
  • Allowfrom address1 address2……

From后可更上的地址格式:

IP地址

网络地址

172.16

172.16.0.0

172.16.0.0/16

172.16.0.0/255.255.0.0

默认设置

<Directory "/var/www/html">
    Options-Indexes FollowSymLinks
   AllowOverride None
    Orderallow,deny   #表示先运行后拒绝
    Allowfrom all     #允许所有
</Directory>

设置只允许192.168.100.254访问,其他地址拒绝

<Directory "/var/www/html">
    Options-Indexes FollowSymLinks
   AllowOverride None
    Orderallow,deny
    Allowfrom 192.168.100.254
</Directory>

设置拒绝192.168.100.254访问,其他地址允许

<Directory "/var/www/html">
    Options-Indexes FollowSymLinks
   AllowOverride None
    Orderdeny,allow
    deny from192.168.100.254
</Directory>

(3)基于用户的访问控制

AllowOverride AuthConfig:使用认证配置

AuthType Basic :设置文件认证类型

AuthName "test":设置保护区域名称

AuthUserFile “/etc/httpd/conf/htpasswd”:设置运行登录的文件列表

AuthGroupFile “”

require  valid-user :表示允许认证文件中所有用户登录,可以是user 后面跟用户名,表示只能是指定用户登录

htpasswd  设置认证文件的命令

-c:表示创建认证文件(只限第一次使用,如果是第二次还使用就会覆盖文件)

-m:表示使用md5的方式加密密码

-D:删除一个用户

htpasswd -c -m /etc/httpd/conf/htpasswd zhangsan

修改httpd配置文件支持用户授权访问

<Directory "/var/www/html">
    Options IndexesFollowSymLinks
   AllowOverride None
    Orderallow,deny
    Allowfrom all
    AuthName "auth test"
    AuthType Basic
    AuthUserFile /etc/httpd/conf/.htpasswd
    require valid-user
</Directory>
设置授权认证用户
[[email protected] ~]# htpasswd -c -m /etc/httpd/conf/.htpasswdzhangsan
New password:
Re-type new password:
Adding password for user zhangsan
[[email protected] ~]# htpasswd  -m /etc/httpd/conf/.htpasswd lisi  #注意没有加-c选项
New password:
Re-type new password:
Adding password for user lisi
[[email protected] ~]# cat /etc/httpd/conf/.htpasswd
zhangsan:$apr1$TkQKWnSw$PsZR741ikw6fSnqrbgEDG1
lisi:$apr1$rZJbTBLa$2L/J0Zhps46SAByXsIMqv1

设置完成重启服务,访问web就看到如下提示,输入用户名和密码即可访问

7)      定义默认的主页面

DirectoryIndex index.html index.html.var

8)      配置日志

表示记录的用户为主机名,如果记录为主机名就会反解,效率底下,不推荐使用

HostnameLookups Off

错误日志位置

ErrorLog logs/error_log

错误日志记录级别

LogLevel warn

访问日志格式:

LogFormat "%h %l %u %t \"%r\"%>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined #混合模式
LogFormat "%h %l %u %t \"%r\"%>s %b" common   #通用模式
LogFormat "%{Referer}i -> %U"referer    #只记录客户端来源
LogFormat "%{User-agent}i" agent         #只记录浏览器类型

记录访问日志的,类型和格式

CustomLog logs/access_log combined

日志记录参数说明:

%h:客户端主机

%l:客户端用户通过identd登录时使用的名称;-表示为空

%u:用户认证登录的名字,无登录机制为-

%t:收到客户端请求时的时间

\”:显示引号本身,而不作为引用符号

%r:表示请求报文的首行

%>s:显示响应报文的状态码

%b:响应报文的大小,单位为字节;不包含首部信息

%{Referer}i:记录http首部referer对应的值;即访问入口,从那个页面跳转至此页面

%{User-Agent}i:记录http首部User-Agent对应的值,及浏览器的类型

9)      路径别名

修改apache配置文件,设置别名,当访问luntan的时候就访问/bbs/forum

Alias /luntan "/bbs/forum"

设置文档目录

[[email protected] ~]# mkdir -pv /bbs/forum
[[email protected] ~]# vim /bbs/forum/index.html
alias bbs forum

验证:访问luntan的时候访问到了/bbs/forum中的默认首页

10)      定义默认字符集

AddDefaultCharset UTF-8

常用字符集:GBK, GB2312, GB18030

11)      虚拟主机

创建虚拟主机相关目录

[[email protected] ~]# mkdir –p /vhost/{a.com,b.org,c.net}/htdocs
[[email protected] ~]# tree /vhost/
/vhost/
├── a.com
│  └── htdocs
├── b.org
│  └── htdocs
└── c.net
└── htdocs
[[email protected] ~]# echo "www.a.com">/vhost/a.com/htdocs/index.html
[[email protected] ~]# echo "www.b.org">/vhost/b.org/htdocs/index.html
[[email protected] ~]# echo "www.c.net">/vhost/c.net/htdocs/index.html

基于IP的虚拟主机配置

<VirtualHost 172.16.4.1:80>
   ServerName www.a.com
   DocumentRoot /vhost/a.com/htdocs/
</VirtualHost>
 
<VirtualHost 172.16.4.2:80>
   ServerName www.b.org
   DocumentRoot /vhost/b.org/htdocs/
</VirtualHost>
 
<VirtualHost 172.16.4.3:80>
   ServerName www.c.net
   DocumentRoot /vhost/c.net/htdocs/
</VirtualHost>

配置多个ip地址

[[email protected] ~]# ip addr add 172.16.4.1 dev eth0
[[email protected] ~]# ip addr add 172.16.4.2 dev eth0
[[email protected] ~]# ip addr add 172.16.4.3 dev eth0
[[email protected] ~]# ip addr show dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP>mtu 1500 qdisc pfifo_fast state UP qlen 1000
   link/ether 00:0c:29:04:65:26 brd ff:ff:ff:ff:ff:ff
    inet172.16.4.102/16 brd 172.16.255.255 scope global eth0
    inet172.16.4.1/32 scope global eth0
    inet172.16.4.2/32 scope global eth0
    inet172.16.4.3/32 scope global eth0
    inet6fe80::20c:29ff:fe04:6526/64 scope link
      valid_lft forever preferred_lft forever

注意:本机要配置上所有IP地址并能够用于通信;

验证:

基于端口的虚拟主机配置

定义监听的端口

Listen 80
Listen 808
Listen 8080

修改配置文件

<VirtualHost 172.16.4.1:80>
   ServerName www.a.com
   DocumentRoot /vhost/a.com/htdocs/
</VirtualHost>
 
<VirtualHost 172.16.4.1:808>
   ServerName www.b.org
   DocumentRoot /vhost/b.org/htdocs/
</VirtualHost>
 
<VirtualHost 172.16.4.1:8080>
   ServerName www.c.net
   DocumentRoot /vhost/c.net/htdocs/
</VirtualHost>

重启服务,查看监听的端口

[[email protected] ~]# netstat -tnlp | grep httpd
tcp       0      0 :::808                      :::*                        LISTEN      27624/httpd        
tcp       0      0 :::8080                     :::*                        LISTEN      27624/httpd        
tcp       0      0 :::80                       :::*                        LISTEN      27624/httpd

验证:访问不同端口,出现不同页面内容

基于域名的虚拟主机配置

NameVirtualHost 172.16.4.1:80
<VirtualHost 172.16.4.1:80>
   ServerName www.a.com
   DocumentRoot /vhost/a.com/htdocs/
</VirtualHost>
 
<VirtualHost 172.16.4.1:80>
   ServerName www.b.org
   DocumentRoot /vhost/b.org/htdocs/
</VirtualHost>
 
<VirtualHost 172.16.4.1:80>
   ServerName www.c.net
   DocumentRoot /vhost/c.net/htdocs/
</VirtualHost>

验证:

客户端主机修改hosts文件

hosts文件位置C:\Windows\System32\drivers\etc

访问结果

12)      内置的status页面

在配置文件,加入如下内容

<Location /server-status>
    SetHandler server-status
    Order allow,deny
    allow from all
</Location>

使用http://网址/server-status  访问

13)      curl

curl是基于URL语法在命令行方式下工作的文件传输工具,它支持FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE及LDAP等协议。curl支持HTTPS认证,并且支持HTTP的POST、PUT等方法, FTP上传, kerberos认证,HTTP上传,代理服务器, cookies, 用户名/密码认证, 下载文件断点续传,上载文件断点续传,,http代理服务器管道( proxytunneling), 甚至它还支持IPv6, socks5代理服务器,,通过http代理服务器上传文件到FTP服务器等等,功能十分强大。

语法:curl [options] [URL...]

curl的常用选项:

-A/--user-agent<string> 设置用户代理发送给服务器,模拟自己成为指定服务器

示例:没有使用-A选项

[[email protected] ~]# curl http://172.16.4.1
www.a.com
[[email protected] ~]# tail -1/var/log/httpd/access_log
172.16.4.1 - - [24/Apr/2015:11:55:43 +0800]"GET / HTTP/1.1" 200 10 "-" "curl/7.19.7(x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.15.3 zlib/1.2.3 libidn/1.18libssh2/1.4.2"

使用了-A选项,模拟浏览器为chrom

[[email protected] ~]# curl -A "chrom 40"http://172.16.4.1
www.a.com
[[email protected] ~]# tail -1/var/log/httpd/access_log
172.16.4.1 - - [24/Apr/2015:11:57:01 +0800]"GET / HTTP/1.1" 200 10 "-" "chrom40"

-basic 使用HTTP基本认证(如果服务器设置了basic认证可以使用此选项结合-u进行认证)

-u/--user <user[:password]>设置服务器的用户和密码

--tcp-nodelay 使用TCP_NODELAY选项

-e/--referer<URL> 来源网址

示例:默认成从百度访问过来的

[[email protected] ~]# curl -A "chrom 40" -e"http://www.baidu.com" http://172.16.4.1
www.a.com
[[email protected] ~]# tail -1/var/log/httpd/access_log
172.16.4.1 - - [24/Apr/2015:12:03:21 +0800]"GET / HTTP/1.1" 200 10 "http://www.baidu.com" "chrom40"

--cacert <file> CA证书 (SSL)

--compressed 要求返回是压缩的格式

-H/--header <line>自定义头信息传递给服务器

-I/--head 只显示响应报文首部信息

[[email protected] ~]# curl -I http://172.16.4.1
HTTP/1.1 200 OK
Date: Fri, 24 Apr 2015 04:18:15 GMT
Server: Apache/2.2.15 (CentOS)
Last-Modified: Thu, 23 Apr 2015 21:39:57 GMT
ETag: "12000b-a-5146b1ef67f05"
Accept-Ranges: bytes
Content-Length: 10
Content-Type: text/html; charset=UTF-8

--limit-rate <rate> 设置传输速度

-0/--http1.0 使用HTTP 1.0

另一个工具:elinks

elinks[OPTION]... [URL]...

-dump:不进入交互式模式,而直接将URL的内容输出至标准输出;

14)      使用mod_default模块压缩页面优化传输速度

Gzip的思想就是把文件现在服务器端进行压缩,然后在传输。这样显著减少文件传输的大小。传输完毕后浏览器会重新对压缩过的内容进行解压缩,没特殊情况,所有的文本内容都应该被gzip压缩:html(php),js,css,xml,txt……,因为首页上还有很多广告代码投放的js,这些广告代码拥有者的网站js没有经过gzip压缩,是由于需要每次加载进而统计来访信息。

适用场景:

(1)节约带宽,额外消耗CPU;同时,可能有些较老浏览器不支持;

(2)压缩适于压缩的资源,例如文件文件;

设置方法

SetOutputFilter DEFLATE   #启用压缩
 
# mod_deflate configuration
 
# Restrict compression to these MIME types
AddOutputFilterByType DEFLATE text/plain     #设置压缩类型
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATEapplication/x-javascript
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE text/css
 
# Level of compression (Highest 9 - Lowest 1)
DeflateCompressionLevel 9  #压缩等级,压缩越大效率越高,耗C也越高
 
# Netscape 4.x has some problems.
BrowserMatch ^Mozilla/4 gzip-only-text/html
 
# Netscape 4.06-4.08 have some more problems
BrowserMatch ^Mozilla/4\.0[678] no-gzip
 
# MSIE masquerades as Netscape, but it is fine
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html

访问验证:出现Content-Encoding:gzip表示压缩设置成功

Curl验证:使用-I选项输出首部信息包含Vary: Accept-Encoding就是启用了压缩

[[email protected] ~]# curl -I 172.16.4.10
HTTP/1.1 403 Forbidden       #这里访问的是默认测试页面,所以是403
Date: Wed, 27 May 2015 14:31:17 GMT
Server: Apache/2.2.15 (CentOS)
Accept-Ranges: bytes
Vary: Accept-Encoding   #表示启用了压缩功能
Content-Length: 4954
Connection: close
Content-Type: text/html; charset=UTF-8

15)      使用mod_expires提供缓存功能

Mod_expires允许通过apache配置文件控制http的“Expires”和”cache-Control“头内容,这个模块控制服务器应答时的expires头内容和cache-Control头的max-age指令。有效期可以设置为相当源文件的最后修改时刻或者客户端的访问时刻。

这些HTTP头向客户端表明了内容的有效性和持久性。如果客户端本地有缓存,则内容就可以从缓存(除非已经过期),而不是从服务器读取,然后客户端会检查缓存中的副本,查看是否过期或者失效,已决定是否从新服务器获得内容更新。

设置方法

   ExpiresActive on                 #激活expires功能
   ExpiresDefault "access plus 12 month"  #缺省配置为访问的时间+12个月
   ExpiresByType text/html "access plus 12 months"  #下面的都是缓存的类型,全部为12个月
   ExpiresByType text/css "access plus 12 months"
   ExpiresByType image/gif "access plus 12 months"
   ExpiresByType image/jpeg "access plus12  12 months"
   ExpiresByType image/jpg "access plus 12 months"
   ExpiresByType image/png "access plus 12 months"
   EXpiresByType application/x-shockwave-flash "access plus 12 months"
   EXpiresByType application/x-javascript "access plus 12 months"
   ExpiresByType video/x-flv "access plus 12 months"

验证:访问httpd的首部信息中出现了Expires就设置成功了,而且从日期来看缓存时间为1年

使用curl验证:出现了Expires而且过期时间是1年

[[email protected] ~]# curl -I 172.16.4.10/1.jpg
HTTP/1.1 200 OK
Date: Wed, 27 May 2015 14:41:48 GMT
Server: Apache/2.2.15 (CentOS)
Last-Modified: Sun, 07 Mar 2010 03:46:02 GMT
ETag: "80102-197b4-4812dc98fd280"
Accept-Ranges: bytes
Content-Length: 104372
Cache-Control: max-age=31104000
Expires: Sat, 21 May 2016 14:41:48 GMT
Connection: close
Content-Type: image/jpeg

16)      httpd自带的工具程序

htpasswd: basic认证基于文件实现时,用到的账号密码文件生成工具;

apachectl:httpd自带的服务控制脚本,支持start, stop;

apxs:由httpd-devel包提供的,扩展httpd使用第三方模块的工具;

rotatelogs:日志滚动工具;

access.log-->

access.log,access.1.log

access.log,access.1.log, access.2.log

suexec:

访问某些有特殊权限配置的资源时,临时切换至指定用户运行;

17)      httpd压力测试

ab [OPTIONS] URL

-n:总的请求数

-c:模拟的并发数

-k:以持久连接模式测试

ulimit -n #: 调整当前用户所同时打开的文件数;如果需要并发超过1024就调整次值,最大可调整为65535

并发10个请求,一共请求100个测试

[[email protected] ~]# ab -c 10 -n 100www.test.com/index.html
This is ApacheBench, Version 2.3 <$Revision:1430300 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd,http://www.zeustech.net/
Licensed to The Apache Software Foundation,http://www.apache.org/
 
Benchmarking www.test.com (be patient).....done
 
 
Server Software:        Apache/2.4.6   #服务器端软件
Server Hostname:        www.test.com   #测试的主机名称
Server Port:            80             #测试的主机端口
 
Document Path:          /index.html    #测试的页面
Document Length:        14 bytes        #测试页面的大小
 
Concurrency Level:      10             #并发级别
Time taken for tests:   0.090 seconds   #响应时间(第一个请求到最后一个请求)
Complete requests:      100            #成功的请求
Failed requests:        0              #失败的请求
Write errors:           0              #失败的写入次数
Total transferred:      27400 bytes    #服务器响应的整体数据大小
HTML transferred:       1400 bytes     #html传输大小 
Requests per second:    1114.44 [#/sec] (mean)  #每秒钟完成的请求数
Time per request:       8.973 [ms] (mean)   #一批请求平均花费的时间
Time per request:       0.897 [ms] (mean, across all concurrentrequests)  #单个请求平均花费的时间
Transfer rate:          298.20 [Kbytes/sec] received   #传输速率,大概每秒传输了多少个字节
 
Connection Times (ms)
             min  mean[+/-sd] median   max   min:最短  mean:平均时间 median:中值 max最大
Connect:       0    1   0.5     1       3   #建立连接使用的时间
Processing:    3    7   3.0     7      17   #处理过程
Waiting:       3    6   3.2     7      17   #等待
Total:         4    8   3.0     8      19   #总共
 
Percentage of the requests served within a certaintime (ms)
  50%      8
  66%      8
  75%      9
  80%      9
  90%     14
  95%     15
  98%     18
  99%     19
 100%     19 (longest request)
[[email protected] ~]#

请求大页面测试

创建一个3M的页面,并且把并发提升到2000个,连接提升到10000个来测试

[[email protected] ~]# dd if=/dev/zeroof=/var/www/html/test.html bs=1M count=3  
[[email protected] ~]# ab -r -c 2000 -n 10000www.test.com/test.html
This is ApacheBench, Version 2.3 <$Revision:1430300 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd,http://www.zeustech.net/
Licensed to The Apache Software Foundation,http://www.apache.org/
 
Benchmarking www.test.com (be patient)
Completed 1000 requests
Completed 2000 requests
Completed 3000 requests
Completed 4000 requests
Completed 5000 requests
Completed 6000 requests
Completed 7000 requests
Completed 8000 requests
Completed 9000 requests
Completed 10000 requests
Finished 10000 requests
 
 
Server Software:        Apache/2.4.6
Server Hostname:        www.test.com
Server Port:            80
 
Document Path:          /test.html
Document Length:        207 bytes
 
Concurrency Level:      2000
Time taken for tests:   39.051 seconds
Complete requests:      10000
Failed requests:        243
   (Connect:0, Receive: 0, Length: 243, Exceptions: 0)
Write errors:           0
Non-2xx responses:      9757
Total transferred:      3775959 bytes
HTML transferred:       2019699 bytes
Requests per second:    256.08 [#/sec] (mean)
Time per request:       7810.210 [ms] (mean)
Time per request:       3.905 [ms] (mean, across all concurrentrequests)
Transfer rate:          94.43 [Kbytes/sec] received
 
Connection Times (ms)
             min  mean[+/-sd] median   max
Connect:       0 1075 1334.5   1007    7254
Processing:   11 1436 5012.6    159   32903
Waiting:      11  831 3368.7    147  30212
Total:        95 2511 5143.9   1160   33447
 
Percentage of the requests served within a certaintime (ms)
  50%   1160
  66%   1461
  75%   2104
  80%   3149
  90%   3839
  95%   7905
  98%  27144
  99%  28082
 100%  33447 (longest request)
时间: 2024-10-25 15:30:09

http2.2常用配置(虚拟主机,访问控制,压缩,缓存,压力测试)的相关文章

httpd配置虚拟主机及访问控制

一.虚拟主机是在一台物理服务器上配置多个站点,有三种实现方法:基于ip,基于端口,基于域名 配置虚拟主机建议在单独一个文件,并在主配置文件使用 include "xxx" 包含进来,这样使配置件更清晰 基于端口:应先在主配置文件中增加一个监听的端口listen 8080 <virtualhost 172.16.168.140:80> options none documentroot "/var/www/80" </virtualhost>

使用nginx进行反向代理(配置虚拟主机)

需求:使用不同的域名.访问相同的ip,获取到不同的端口服务器 (Linux服务器) 安装nginx需要的环境(有可能安装上的) nginx是C语言开发,建议在linux上运行,本教程使用Centos6.5作为安装环境. gcc 安装nginx需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装 yum install gcc-c++ PCRE PCRE(PerlCompatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表

apache配置虚拟主机 个人理解

范例 Listen 80 #NameVirtualHost * <VirtualHost *:8080> ServerName apacheconfig2 DocumentRoot /var/www/apacheconfig/test1 DirectoryIndex index.html #站点的默认访问资源,即不指明请求资源时,默认访问index.html文件 <Directory "/var/www/apacheconfig/test1"> #设置对目录的访

Nginx演练(1)配置虚拟主机

Nginx是一款比较流行Web服务器,和Apache,Lighttpd,IIS属于同类产品.对比而言,Nginx从性能和内存占用方面,都非常优秀,具体对比细节自行百度. 三大WEB服务器对比分析(apache ,lighttpd,nginx) 本文演练的主要内容是: 使用Nginx,实现基于IP的虚拟主机 使用Nginx,实现基于域名的虚拟主机 tomcat配置虚拟主机 1.前提 什么是虚拟主机? 虚拟主机使用是特殊的软硬件技术,把一台运行在Internet上的服务器主机分成一台台"虚拟&quo

apache安装、配置虚拟主机、配置日志

apache的安装与配置 安装 01)下载httpd-2.2.27.tar.gz 02)解压:tar xf httpd-2.2.27.tar.gz 然后进入解压的文件查看INSTALL和RAEDME 03)直接make会出错,然后进行编译(也会有问题,这时候yum -y install zlib zlib-devel即可解决),然后进行编译: ./configure --prefix=/application/apache2.2.27 \   安装路径 --enable-deflate \   

laravel基础①安装、配置虚拟主机

一.laravel有四种安装方法 1.用composer从资源库里面下载,同时自动安装依赖库,命令行输入: composer create-proiect laravel/laravel=5.1.33 项目名称 2.手动下载laravel本身,然后用composer下载安装依赖库 下载laravel 再到项目目录下 执行composer install 3.打包下载别人安装压缩好的laravel本身和依赖库 不需要安装composer 4.用laravel安装下载器,自动帮你安装,但是严重不推荐

基于httpd-2.4配置虚拟主机web站点,并提供https服务(二)

使用httpd-2.2和httpd-2.4实现 > 1.建立httpd服务,要求: > 1) 提供两个基于名称的虚拟主机www1, www2:要求每个虚拟主机都有单独的错误日志和访问日志: > 2) 通过www1的/server-status提供状态信息,且仅允许172.16.0.1主机访问: > 3) www2不允许192.168.1.0/24网络中任意主机访问: > 2.为上面的第2)个虚拟主机提供https服务. > 基于httpd-2.4配置虚拟主机web站点,

Centos 7搭建Nginx网站服务器及配置虚拟主机

Nginx专为性能优化而开发,其最大的优点就是它的稳定性和低系统资源消耗,以及对http并发连接的高处理能力,单台物理服务器可支持20000~50000个并发请求,正是如此,大量提供社交网络.新闻资讯.电子商务及虚拟主机等服务的企业纷纷选择Nginx来提供web服务,目前中国大陆使用nginx网站用户有:新浪.网易.腾讯,另外知名的微网志Plurk也使用nginx. Nginx是一个很牛的高性能Web和反向代理服务器,它具有有很多非常优越的特性: 高并发连接:官方测试能支撑5万并发连接,在实际生

apache配置虚拟主机时需要注意到几个小细节

如今apache在web服务器这块市场占有率还是很高的,而配置虚拟主机现在也是用的非常多,不过在配置虚拟主机的时候一定要注意几个小细节. 首先要注意你的apache版本,注意是2.2还是2.4的. 配置2.2的时候,配置虚拟主机该这样写: NameVirtualHost ip:80   //注意此处与2.4不同 <VirtualHost ip:80> ServerName www1.myweb.com DocumentRoot "/myweb/vhost/www1" <

LNMP架构应用实战——Nginx配置虚拟主机

LNMP架构应用实战--Nginx配置虚拟主机        前面介绍了nginx服务的安装与配置文件,今天介绍下它的另一种实用配置--"虚拟主机",每个虚拟主机可以是一个独立的网站,可以具有独立的域名,同一台服务器上的不同的虚拟主机之间是独立的,用户访问不同虚拟主机如同访问不同的服务器一样,因此它不需要为一个单独的WEB站点提供单独一个nginx服务器和一个单独的nginx进程 1.nginx虚拟主机简单介绍 同apache服务一样,它也有三种不同的虚拟主机,基于域名的虚拟主机.基于