下面介绍的是http协议基础、http协议的报文格式、httpd(Apache)、httpd-2.2、httpd-2.4。
一、http协议基础 -------------超文本传输协议,无状态,可通过 cookie 机制来进行状态保存。
1、协议版本
http协议的版本有:http/0.9、http/1.0、http/1.1。
http/1.0 ---------支持MIME机制,支持Cache机制,Method机制。
http/1.1 --------强化了缓存、提出了持久连接机制
http/1.0 的三种机制解释如下:
MIME机制 ------------多用途互联网邮件扩展
Cache机制 -----------缓存机制
Method机制:
GET --------请求获取相关资源
POST -------在资源之后附加的数据
HEAD -------请求资源的相应首部
PUT --------请求服务器存储一个资源
DELETE -----请求服务器删除某个资源
TRACE ------请求服务器回送请求信息,用于故障诊断或检测
CONNECT ----保留未被使用
OPTIONS ----查询服务器性能,查询与资源相关的选项和请求资源的需求
http协议 ------应用层协议,接口 80/tcp
https协议 -----应用层协议,接口 443/tcp
2、URI -----------统一资源标识符(web上的各种资源都可以用uri来标识)
URI分为三部分:
1)、访问资源的命名机制
2)、存放资源的主机名称
3)、资源自身的名称
URL ------------统一资源【定位】符,可以说URL是URI的子集(URI自身存在的机制)。
URL是互联网上,【描述web资源】的特定格式的一组字符串。
URL由三部分构成:
1)、协议 ------表资源的提供方式或访问方式
2)、主机标识 --------可以是主机名称,也可以是IP地址
3)、资源路径 --------使用某种特定方式实现的路径映射机制,标识资源的具体位置
URL的通用格式:scheme://Server[:port]/PATH/TO/SOME_RESOUECE?PARAMETERS=VALUE#FLAGS
例:http://www.baidu.com/index.html
3、Web资源
Web上可用的各种资源,如:html文档,图片,视频或音频片段,应用程序等,都可以使用URI来进行标识。客户端发送的一次请求,只能请求一个web资源。
(1)、资源分类
web资源分为两类:分为静态、动态两种资源。
静态资源:服务器直接发送给客户端响应的资源。(html文档、图片、流媒体、文本、js)
动态资源:在服务器上需要服务器按照某种方式执行之后生成相应的页面,再将页面发送给客户端响应的资源。(.php、.jsp、.NET、js)
(2)、资源路径映射 ----------------chroot
资源服务器的映射方式:DocumentRoot、Alias、vhost docroot、用户自己的docroot
html文档 -------------超文本标记语言(查询访问时使用)
格式:
4、五种并发响应模型(服务器):
(1)、单进程IO模型:只有一个进程,每次只能响应一个用户请求,串行响应。
(2)、多进程IO模型:同时启动多个进程,每个进程可以响应一个用户请求。
(3)、复用的IO模型:一个进程可以响应多个用户请求。
多线程模型:一个进程可以生产多个线程,每个线程响应一个用户提供请求。
事件驱动模型:一个进程【直接响应】多个用户请求。
(4)、复用的多进程IO模型:启动多个进程,每个进程再分为多个线程,每个线程响应一个用户提供请求。
(5)、复用的事件驱动IO模型:启动多个进程,每个进程直接响应多个用户请求。
5、web服务器一次完整的http请求的处理过程:
(1)、建立连接 -----三次握手
(2)、接收请求:将客户端发送来的报文解封后放置于服务进程所在的内存空间。
(3)、处理请求:对于接收到的数据报文,进行解析。
(4)、访问资源:通过各种IO方式,获取到用户请求的资源。
(5、)构建响应报文
(6)、发送响应报文
(7)、记录访问日志
6、http请求处理的连接方式:持久连接、短连接
持久连接:长连接,keepalive。对于持久连接,有时间限制(15秒)和数量限制(100个)
非持久连接:短连接
7、http协议的实现方式:httpd、nginx、lighttpd。
二、http协议的报文格式 -----------也称为http首部、http头
1、通用格式:
起始行
首部
...
主题
2、请求报文首部 -----------request headers
Host: www.qhdlink.com
3、响应报文首部 -----------response headers
...
4、对于请求、响应报文首部中,各个字段的定义如下:
Method:请求方法,客户端希望服务器执行的操作
GET ----------服务器到客户端
HEAD ---------只在乎表头
POST ---------客户端到服务器
Status-Code --------状态码,三位十进制整数,公有5类。
主要作用:是标识请求处理过程的结果状态。
五类:
1xx:代码为100-101,信息提示
2xx:200-206,成功类的相应状态码
3xx:300-305,重定向类相应状态码
301:永久重定向(响应一个提示信息,提示改变位置)
302:临时重定向(用于响应新版)
304:资源未被修改
4xx:400-415,客户端错误类的响应状态码
401:认证质询
403:请求被拒绝(所请求的资源没有权限访问、用户身份错误)
404:请求的资源不存在
5xx:500-505,服务器端错误类的响应状态码
500:服务器内部错误
502:反向代理和上一级服务器通信失败,或请求超时
reason-phrase ---------状态短语
如:Forbidden
header ------首部内容
格式:Name: Value
首部分类(5种):通用首部、请求首部、响应首部、实体首部、扩展首部
1)、通用首部:请求报文和响应报文中都可以使用
Date -------------创建报文的时间
Connection -------------连接状态(长连接、短连接,即keepalive、closed)
Via ---------------经由(报文传输过程中经由的代理节点的IP地址)
Cache-Control ----------------缓存控制机制
2)、请求首部:
Accept ----------------可以接受的媒体形式,MIME(多用途互联网邮件扩展)
媒体格式(MIME格式):Major/Minor ------主类型和次类型
常用的媒体格式有:text/html、text/plaintext、p_w_picpath/jpeg、p_w_picpath/png、application/X-php
Accept-Charset ------------可以接受的字符集
如:ASCII码(单字节码),Linux每个汉字默认3个字节,Windows每个汉字默认2个字节
Accept-Encoding ----------可以接受的编码格式(byte、gzip、deflate)
Accept-Language ----------可以接受的语言
Client-IP --------------可接受的客户端IP地址
Host -----------请求的服务器名称,也称为主机头
Referer -----------从哪跳转过来,不是直接键入的
User-Agent --------------客户端代理程序
Expect -----------期望到的内容(条件使式请求首部,3个)
If-Modified-Since --------某时间后是否被修改过
If-Unmodified-Since -------某时间后是否没被修改过
If-Match ------本地缓存和服务器ETag是否相同
3)、响应首部:消息性首部、安全响应首部
消息性首部如下:
Age -----------响应持续的时长;
Server ----------服务器端软件程序的名称、版本
Accept-Ranges -------------服务器端请求类型范围,*表所有
Vary --------------服务器查看的其他首部列表
安全响应首部如下:
WWW-Authenticate -----------询问握手
Set-Cookie ----------为客户端设定Cookie
4)、实体首部:Allow、Location、Content-Encoding、Content-Language、Content-Location、Content-Type、Content-Length
Allow --------------请求方法
Location -------------资源的真正的URL地址
Content-Location ----------真正实体资源的所在位置
5)、扩展首部 ---------X开头
三、httpd(Apache)
httpd -----------应用程序(http daemon)
1、版本
httpd软件的版本:httpd-1.3、httpd-2.0、httpd-2.2、httpd-2.4。常用的是httpd-2.4。
2、httpd特性
httpd的特性:高度模块化(一个核心+多个模块)。其中,模块分为两类:动态和静态。静态是编译到核心中的功能,如果要更改静态模块,必须更换核心,所以必须重启。
httpd的功能特性(7个):
(1)、支持CGI(通用网关接口)
(2)、支持虚拟主机的功能:标识虚拟主机----IP+port+主机名
(3)、支持反向代理 ----------相当于代理服务器,可影响内部拓扑结构
代理(正向代理) --------相当于代理客户
(4)、支持负载均衡 ----------基于流量、基于业务、基于请求(相当于集群)
(5)、可进行路径别名的设置
(6)、支持身份验证机制:basic、digest。
(7)、支持大量的第三方模块
3、MPM模块 ---------多道处理模块,是并发响应模型的机制。(3种工作方式)
(1)、prefork(默认):是一种多进程IO模型,有一个主进程和多个子进程,一个进程响应一个请求。其子进程,负责处理和响应请求。
prefork具有主进程、子进程(子进程,处理请求和响应请求)。
(2)、worker:复用的多进程IO模型(多线程),多进程多线程,一个线程响应一个请求。其子进程,负责管理线程,线程负责处理和响应请求。
worker具有主进程、子进程、线程(线程,处理请求和响应请求)。
(3)、event:复用的IO模型(事件驱动),其子进程处理和响应请求。
event具有主进程、子进程(子进程,处理请求和响应请求)。
event模型使用:
在httpd-2.4中,event为建议使用模型,其前的版本中,event不稳定或没有加载。
在centos6 中,采用httpd-2.2,所以采用的是event 测试模型,也不支持动态机制的MPM。
在centos7 中,采用httpd-2.4,采用成熟的event,支持MPM机制。
四、httpd-2.2
1、httpd-2.2中的服务(centos6)
启动服务 ----------------/etc/rc.d/init.d/httpd
# /etc/rc.d/init.d/httpd {start|stop|restart|reload|status}
# service httpd {start|stop|restart|reload|status}
开机自启:chkconfig [--level 23456] httpd on|off
2、httpd-2.2的程序环境
配置文件:
/etc/httpd/conf/httpd.conf ----------主配置文件
/etc/httpd/conf.d/*.conf ----------辅助配置文件
/etc/httpd/conf.d/magic -----------实现MIME功能(多用途互联网邮件扩展)
/etc/sysconfig/httpd -------------httpd服务器【启动脚本】的配置文件
程序文件:/usr/sbin/httpd
/usr/sbin/httpd.event
/usr/sbin/httpd.worker
日志文件:/var/log/httpd -----包括访问日志和错误日志
默认站点的文档和目录:/var/www/html
模块文件的路径:/usr/lib64/httpd/modules -----------存在符号链接文件/etc/httpd/modules
3、httpd-2.2与centos7的httpd-2.4比较:
启动服务:/usr/lib/systemd/system/httpd.service
# systemctl {start|stop|restart|reload|status} httpd[.service]
开机自启:
# systemctl enable|disable httpd.service
在httpd2.4中,支持静态模块,每个MPM模型对应一个模块。
配置文件:(多了一种)
/etc/httpd/conf.modules.d -------------额外的模块专用的配置文件
程序文件(二进制文件):---------------/usr/sbin/httpd
/usr/lib64/httpd/modules/mod_mpm_event.so
/usr/lib64/httpd/modules/mod_mpm_prefork.so
/usr/lib64/httpd/modules/mod_mpm_worker.so
/usr/sbin/apachectl -------------------服务控制命令
4、安装httpd --------------------httpd、httpd-tools、httpd-devel、httpd-manual
安装httpd的两种方式如下:
1)、rpm包 -----本地光盘yum源中
2)、编译安装 ------定制新功能,为了安全,可去除带有漏洞后门的模块
安装的httpd拥有的四个包:主程序包、httpd的工具包、httpd的开发包、离线帮助文档。
# yum list all httpd*
httpd2.2的主配置文件:-------------------/etc/httpd/conf/httpd.conf
在此配置文件中,所有的配置选项都被称为选项,指令格式为:directive value(驼峰式)。在修改了配置文件中的指令后,可以使用reload使之生效。在httpd2.2 中,如果【更改了监听的IP地址,则必须重启服务】。在主配置文件中,所有的指令被分别写到三个配置部分中
下面是修改配置文件中的指令:(16类)
(1)、修改监听的地址和端口
格式:Listen [IP:]PORT
注意:listen指令可以定义多次,如果省略了IP地址,即 0.0.0.0,意味着httpd服务进程将监听服务器上配置的所有IP地址。
(2)、持久连接的特性(3个)------------KeepAlive
持久连接,就是当服务器和客户端已经建立其tcp连接之后,在完成一次请求之后,连接不断开,而是等待其他用户发送请求。
断开条件:数量限制、时间限制。
相关指令:KeepAlive Off|On ------------------持久连接开启或关闭
MaxKeepAliveRequests 100 ----------------最多持久连接数
KeepAliveTimeout 15 --------------持久连接的时间,默认单位为秒
# httpd -t -----------------测试语法结构的对错
请求测试:
# telnet SERV_IP SERV_PORT
GET /PATH/TO/RESOURCE HTTP/1.1
Host: SERV_IP
例:# telnet 172.16.67.1 80 ------------进入Telnet模式,进行请求输入。
> GET html HTTP/1.1
> Host: 172.16.67.1 -------------两次回车载入
(3)、MPM ------------多道处理模块
httpd-2.2的MPM不支持DSO机制,并且event为测试模式。
# httpd -M -----------列出所有支持模块,包括静态和共享模块
# httpd -l -----------查看静态编译的模块
三个配置文件:/usr/sbin/httpd、/usr/sbin/httpd.event、/usr/sbin/httpd.worker。
与prefork相关的配置指令:(子进程)
StartServers 8 -------------在服务刚启动时,预先fork几个子进程
MinSpareServers 5 --------------最小预留的空闲子进程的数量
MaxSpareServers 20 -------------最多预留的空闲子进程的数量
ServerLimit 256 --------------为MaxClients指定的最大值
MaxClients 256 ----------------最大的并发访问量
MaxRequestsPerChild 4000 -------------------每个子进程处理的最大请求数量
与worker相关的配置指令:(线程)
StartServers 4 -------------------在服务刚启动时,预先fork几个子进程
MaxClients 300 ------------------并行访问的上限
MinSpareThreads 25 -------------------最小预留的空闲线程数量
MaxSpareThreads 75 -----------------最大预留的空闲线程数量
ThreadsPerChild 25 -----------------每个进程管理的最大线程数量
MaxRequestsPerChild 0 ------------------每个子进程处理的最大请求数量
(4)、DSO机制 -----------LoadModule
modules,即/etc/httpd/modules。
(5)、"Main" Server -----------定义主机的基本指令
格式:ServerName FQDN[:PORT]
DocumentRoot "/var/www/html"
配置:
http://172.16.69.1/test.html ----------路径映射
DocumentRoot "/myweb/data"
例:配置了配置文件后,进行以下操作:
# mkdir -pv /myweb/data
# vim /myweb/data/index.html
重载配置文件
客户端访问到http://172.16.69.1/index.html
(6)、站点资源的访问控制
1)、基于文件系统的访问控制:分为三类,分别为:基于【指定目录】的访问控制、基于【特定文件】的访问控制、基于【模式匹配】进行文件的访问控制。
基于【指定目录】的访问控制,格式如下:
Directive Value
基于【特定文件】的访问控制,格式如下:
Directive Value
基于【模式匹配】进行文件的访问控制,格式如下:
Directive Value
2)、基于URL路径进行访问控制:分为两类,分别为:基于【URL】进行、基于【模式匹配】进行URL路径访问。
基于URL进行,格式如下:
Directive Value
基于模式匹配进行URL路径访问,格式如下:
Directive Value
3)、常用的目录中的访问控制指令有:各种options指令、AllowOverride指令。
Options指令:
Indexes ---------允许索引(一般用于资源下载站点),对于正常的Web站点来说,应禁用此功能。
FollowSymLinks -------跟踪符号链接
SymLinksifOwnerMatch -------------只有当子进程的所有者和链接文件的所有者为同一用户时,才跟踪符号链接
ExecCGI ---------允许执行CGI脚本
AllowOverride指令:-----------------控制那些允许放置于 .htaccess 文件中的指令,具有继承特性。该指令的值设置为None
.htaccess的三个配置文件:/myweb/data/.htaccess /myweb/data/p_w_picpaths/.htaccess /myweb/data/admin/.htaccess
Order指令、Allow指令、Deny指令:
Order指令 ----------定义基于IP地址的访问控制,规定了访问控制的检查顺序,allow,deny 和 deny,allow 访问结果不同。
(7)、web站点主页文件的定义
当用户给出的URL中,【没有明确指明资源的具体名称】时,此处会根据此处的文件名去依次匹配,先后顺序优先。
例:
DirectoryIndex index.html in.html index.html.var
(8)、定义路径别名
格式:Alias /URL/ "/PATH/TO/SOME_DIR/"
在Alias指令格式中,URL右侧的"/"相当于后面的路由右侧的"/",他们是匹配的。
(9)、日志功能:错误日志、访问日志。
访问日志的各选项解释:
%h -----------客户端的IP地址
%l ------------登录名,没有则为"-"
%s ------------状态信息
%b ------------资源大小
(10)、离线帮助手册 ---------------配置文件:/etc/httpd/conf.d/manual.conf(重载之后生效)
# yum -y install httpd-manual
(11)、基于用户的访问控制
httpd的认证功能:(2种)
认证质询机制(响应报文的状态码为 401)-----------需进行身份验证,先拒绝访问,进行登录
认证 -------客户端填写账户和密码,登录后之后,发送报文
httpd的认证方式:(2种)
basic认证 ---------明文认证
digest认证 --------消息摘要认证
虚拟用户账号 ----------该账号无法进行系统级认证,只能用于访问服务器上某特定服务的账户
一般来讲,虚拟用户时存放于某特定的数据格式中,如:文本文件、SQL数据库(写效率高)、LDAP目录数据库(读效率高)
安全域 ------需要通过用户认证才能访问资源
htpasswd命令 ---------------------创建用户/组文件
常用选项:
-c 创建用户账户文件(只用于创建第一个,建第二个用户以后的账户不要用-c)
-m 使用md5加密用户密码
-s 使用sha加密用户密码
-D 删除用户
例:basic认证的配置(定义安全域、创建用户/组文件)
1)、定义安全域
Options None
AllowOverride None
Authtype basic
AuthName "SOME_STRING"
AuthUserFile "/PATH/TO/HTTP_USER_FILE"
Require user user1 user2 ...
Options None
AllowOverride None
Authtype basic
AuthName "SOME_STRING"
AuthUserFile "/PATH/TO/HTTP_USER_FILE"
AuthGroupFile "/PATH/TO/HTTP_GROUP_FILE"
Require group group1 group2 ...
2)、创建用户/组的文件(htpasswd命令)
格式:GROUP_NAME: user1 user2 ...
(12)、系统状态数据查询:server-status
# httpd -M | grep status
ExtendedStatus On|Off -----------开启或关闭更多的额外系统状态信息
例:
SetHandler server-status
Order deny,allow
Deny from all
Allow from 172.16
(13)、虚拟主机
对于每个web站点,都有一个属于其独立的标识。Main Server 和虚拟主机不能同时使用。两个都有的话,Main Server失效,虚拟主机有效。
站点标识:IP地址、PORT、主机头(FQDN)
三种典型的虚拟主机实现方式:
1)、基于IP地址的虚拟主机 -----每个虚拟主机使用一个独立的IP地址
2)、基于PORT端口的虚拟主机 -------每个虚拟主机使用一个端口
3)、基于主机头的虚拟主机 ----------每个虚拟主机使用一个独有的FQDN
虚拟主机的配置方法:------------在 ./conf.d/ 下进行主机配置
DocumentRoot /www/docs/dummy-host.example.com
ServerName dummy-host.example.com
vhosts-www1.conf
基于IP地址的配置示例:(2台虚拟主机)---------------vim /etc/httpd/conf.d/vhost-www1.conf
# vim /etc/httpd/conf.d/vhost-www1.conf
# vim /etc/httpd/conf.d/vhost-www2.conf
/etc/httpd/conf.d/vhosts-www1.conf
DocumentRoot "/myweb/vhosts/www1"
ServerName www1.qhdlink.com
/etc/httpd/conf.d/vhosts-www2.conf
DocumentRoot "/myweb/vhosts/www2"
ServerName www2.qhdlink.com
基于端口的配置示例:------------/etc/httpd/conf.d/vhosts-www3.conf
注意基于端口配置的时候,要指明端口号,不然和没指明的时候一样,不是端口的配置。进行端口配置的前提,是需要让httpd事先监听于指定的额外端口,即Listen PORT。
/etc/httpd/conf.d/vhosts-www3.conf
Listen 60080
DocumentRoot "/myweb/vhosts/www3"
ServerName www3.qhdlink.com
基于FQDN的虚拟主机配置示例:----------------------/etc/httpd/conf.d/vhosts-www4.conf
主机名成为关键,IP和端口号都可以和前面一致。
# httpd -t ------检验语法
/etc/httpd/conf.d/vhosts-www4.conf
NameVirtualHost 172.16.69.1:80
DocumentRoot "/myweb/vhosts/www4"
ServerName www4.qhdlink.com
(14)、https的实现 ------------SSL会话是基于IP地址所创建的,【单IP地址】的主机上,仅可以创建一个https虚拟主机。
1)、为httpd生成私钥并签发证书,步骤如下:
1).生成私钥及证书请求
# mkdir /etc/httpd/ssl
# cd /etc/httpd/ssl
# (umask 077; openssl genrsa -out httpd.key 2048)
# openssl req -new -key httpd.key -out httpd.csr -days 3653
# scp httpd.csr 172.16.72.1:/tmp
2).在CA上签发证书
CA]# openssl ca -in /tmp/httpd.csr -out certs/httpd.crt -days 3653
CA]# scp certs/httpd.crt 172.16.69.1:/etc/httpd/ssl
3).在httpd服务器上清除证书请求文件
# rm -f httpd.csr
2)、配置httpd -------------------支持使用SSL,确定已装载mod_ssl模块
# yum -y install mod_ssl
修改配置文件,修改公钥和私钥的安装位置。
例:
/usr/lib64/httpd/modules/mod_ssl.so
/etc/httpd/conf.d/ssl.conf
DocumentRoot "/myweb/vhosts/ssl"
ServerName www.qhdlink.com
SSLCertificateFile /etc/httpd/ssl/httpd.crt
SSLCertificateKeyFile /etc/httpd/ssl/httpd.key
(15)、user/group ------------指定以哪个用户的身份运行httpd服务进程
格式:
User apache
Group apache
(16)、mod_deflate模块 -----------------压缩页面,优化传输速度
SetOutputFilter DEFLATE
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
DeflateCompressionLevel 9 ----------------压缩级别,1~9,9最高
BrowserMatch ^Mozilla/4 gzip-only-text/html ------------浏览器
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
五、httpd-2.4
1、httpd-2.4具有特性如下:(10个)
(1)、MPM支持DSO机制,以模块方式加载和卸载
(2)、event MPM 稳定,生产可用
(3)、支持异步IO机制,使得并发传输性能提高
(4)、支持没模块及每目录单独日志级别定义
(5)、每请求相关的专用配置
(6)、增强版的表达式分析器
(7)、毫秒级的keepalive超时时长
(8)、基于FQDN的虚拟主机无需使用NameVirtualHost指令
(9)、支持用户自定义变量
(10)、更低的内在开销
2、httpd-2.4的新模块(3个):
mod_proxy_fcgi
mod_proxy_scgi
mod_remoteip
3、安装httpd-2.4 ---------centos6中需编译安装。
# yum install httpd
httpd的配置环境:主配置文件、模块的配置文件、片段配置文件。
主配置文件 ---------------/etc/httpd/conf/httpd.conf
模块配置文件 -------------/etc/httpd/conf.modules.d/*.conf
片段配置文件 -------------/etc/httdp/conf.d/*.conf
4、httpd-2.4配置特点(特有):
(1)、切换MPM -----------三个模块只能有一个生效,不能让多个MPM同时生效
编辑:/etc/httpd/conf.modules.d/00-mpm.conf
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
LoadModule mpm_worker_module modules/mod_mpm_worker.so
LoadModule mpm_event_module modules/mod_mpm_event.so
(2)、基于IP地址的访问控制
不再支持Allow、Deny这样的指令,改用Require指令完成访问控制功能。
注意:【默认】情况下,httpd-2.4拒绝所有主机访问。如果拒绝和允许同时要控制,则所有Require必须放在RequireAny容器中。
【允许和拒绝】同时要控制,则所有Require指令必须放在RequireAny容器中,具体解释如下:
Require all denied
Require ip 172.16.69.1
Require all granted
Require not ip 172.16.69.1
Require all denied
Require host qhdlink.com
(3)、虚拟主机
即便使用基于FQDN方式构建的虚拟主机,也无需再使用NameVirtualHost指令。
DocumentRoot "/myweb/vhosts/www"
ServerName www.qhdlink.com
Options None AllowOverride None Require all granted
(4)、毫秒级的keepalive持久连接 ----------单独创建文件/etc/httpd/conf.d/keepalive.conf
/etc/httpd/conf.d/keepalive.conf
KeepAlive On
KeepAliveTimeout 500ms --------------支持写为 500ms
MaxKeepAliveRequests 100
CentOS 7:httpd-2.4
启动服务:Systemd Unit文件,/usr/lib/systemd/system/httpd.service
systemctl {start|stop|restart|reload|status} httpd[.service]
开机自动启动或停止服务:
systemctl enable|disable httpd.service
5、httpd-2.4的程序环境
启动服务:/usr/lib/systemd/system/httpd.service
# systemctl {start|stop|restart|reload|status} httpd[.service]
开机自启:
# systemctl enable|disable httpd.service
在httpd2.4中,支持静态模块,每个MPM模型对应一个模块。
配置文件:(多了一种)
/etc/httpd/conf.modules.d -------------额外的模块专用的配置文件
/etc/httpd/conf/httpd.conf ----------主配置文件
/etc/httpd/conf.d/*.conf ----------辅助配置文件
/etc/httpd/conf.d/magic -----------实现MIME功能(多用途互联网邮件扩展)
/etc/sysconfig/httpd -------------httpd服务器【启动脚本】的配置文件
程序文件(二进制文件):---------------/usr/sbin/httpd
/usr/lib64/httpd/modules/mod_mpm_event.so
/usr/lib64/httpd/modules/mod_mpm_prefork.so
/usr/lib64/httpd/modules/mod_mpm_worker.so
/usr/sbin/apachectl -------------------服务控制命令
日志文件:/var/log/httpd -----包括访问日志和错误日志
默认站点的文档和目录:/var/www/html
模块文件的路径:/usr/lib64/httpd/modules -----------存在符号链接文件/etc/httpd/modules
6、curl命令 ------------文件传输工具
格式:curl [options] [URL...]
常用选项:
-A
--basic ------------------使用HTTP基本认证
--tcp-nodelay ----------------使用TCP_NODELAY选项
-e
--cacert
--compressed --------------要求返回的压缩格式
-H
-I ----------------------只显示响应报文首部信息
--limit-rate
-u
-0 -------------使用http/1.0
7、elinks命令
格式:elinks [OPTION]... [URL]...
常用选项:
-dump ------------------------直接将URL的内容输出至标准输出
8、ab命令 ------------压力测试工具
常用选项:
-c -------------并发连接数
-n -------------请求总数
-k -------------使用keepalive