目录:
一、httpd服务基本介绍
二、httpd-2.2常用小选项配置
三、httpd-2.2 VirtualHost配置
四、httpd-2.2的基于https的安全访问
--------------------------------------
一、httpd服务基本介绍:
httpd是Apache超文本传输协议(HTTP)服务器的主程序。被设计为一个独立的运行的后台进程,它会建立一个出来请求的子进程或线程的池。通常httpd不被直接调用,而是由apachectl调用。http是一个应用程的协议,它可以分为http和https,它们分别使用tcp协议端口的80和443端口。
请求响应方式:
客户端需要访问某资源时会向服务器发送http请求报文,服务器根据客户端请求信息做出http响应报文,所以一次http事务就是http请求然后http会给予请求响应。
web资源:
资源的标识:URL:用于标识web资源所在的位置。
格式:协议://主机地址或者主机名[:端口][/目录资源]
静态资源:不需要服务器做任何操作处理,例如.JGP .PNG格式的文件等
动态资源:服务器需要执行一些程序做出处理后返回给客户端请求所需要的信息,例如.php .js
一次完整的htpt请求处理过程:
(1)建立或处理连接:接收请求或者是拒绝请求
(2)接收请求:接收客户端主机请求报文中对某个资源的一次请求过程
(3)处理请求:对请求报文进行解析,获取客户端请求的资源及请求方法相关信息
(4)访问资源:获取请求报文中请求的资源
(5)构建响应报文
(6)发送响应报文
(7)记录日志
并发访问响应模型:
单进程I/O模型:启动一个进程处理用户请求,一次只能处理一个请求对公请求被串行响应
多进程I/O模型:并行启动多个进程,每个进程响应一个请求
复用进程I/O模型:一个进程响应多个请求
多线程模式:一个进程生成多个线程,一个线程处理一个请求
事件驱动模式:一个进程直接响应多个请求
复用多进程I/O模型:启动多个进程,每个进程生成多个线程,响应请求的数量就是线程乘以进程
httpd工作模式:
prefork:多进程模式:一个主进程多个子进程,一个进程只响应一个请求。一个主进程负责生成子进程及回收子 进程,接收请求,派发请求给子进程处理,生成的多个子进程中每个子进程负责处理一个请求。
worker:多进程多线程模式:一个线程响应一个用户请求。一个主进程负责生成子进程及回收及进程,创建套接字,派发请求给子进程处理。多个子进程负责生成多个线程。每个线程负责响应用户请求。
event:事件驱动模式:多进程模式:一个进程响应多个用户请求。一个主进程负责生成子进程及回收及进程,创建套接字,派发请求给子进程处理。子进程负责基于事件驱动机制直接来响应用户的请求。
二、httpd常用选项配置
1、监听端口
Listen 80 ##监听本机的80端口
Listen 8080 ##监听本机的8080端口
Listen 192.168.1.100:80 ##监听特定IP的80端口
Listen 192.168.1.101:8080 ##监听指定IP的特定端口
2、保持连接
KeepAlive Off|ON ##是否允许持续性连接,即建立一次tcp连接完成多个文件传输
MaxKeepAliveRequests 100 ##最大保存连接请求数量
KeepAliveTimeout 15 ##保存持续性连接超时时间
3、MPM多路处理模块
[root@linuxidc ~]# ps aux | grep httpd ##查看httpd使用的MPM模块
root 5012 0.0 0.3 185928 3972 ? Ss 23:44 0:00 /usr/sbin/httpd
apache 5022 0.0 0.2 186060 2492 ? S 23:44 0:00 /usr/sbin/httpd
apache 5023 0.0 0.2 186060 2508 ? S 23:44 0:00 /usr/sbin/httpd
apache 5024 0.0 0.2 186060 2492 ? S 23:44 0:00 /usr/sbin/httpd
apache 5025 0.0 0.2 186060 2492 ? S 23:44 0:00 /usr/sbin/httpd
apache 5026 0.0 0.2 186060 2492 ? S 23:44 0:00 /usr/sbin/httpd
apache 5027 0.0 0.2 186060 2492 ? S 23:44 0:00 /usr/sbin/httpd
apache 5028 0.0 0.2 186060 2492 ? S 23:44 0:00 /usr/sbin/httpd
apache 5029 0.0 0.2 186060 2492 ? S 23:44 0:00 /usr/sbin/httpd
root 5064 0.0 0.0 103304 892 pts/2 S+ 23:55 0:00 grep httpd
[root@linuxidc ~]# httpd -l #####我们从中可以看出使用的是默认preforkmok
Compiled in modules:
core.c
prefork.c
http_core.c
mod_so.c
如果需要更改我们默认使用的模块方法:
[root@linuxidc ~]# vim /etc/sysconfig/httpd
HTTPD=/usr/sbin/httpd.worker
-------------------------- ----------------------------------
<IfModule prefork.c>###prefork模块配置
StartServers 8 #启动httpd时预先创建几个子进程数量
MinSpareServers 5 #最小空闲进程数量
MaxSpareServers 20 #最大空闲进程数量
ServerLimit 256 #服务器同一时间内能够响应进程的数量
MaxClients 256 #最多可以允许客户端并发请求连接数量
MaxRequestsPerChild 4000 #每个子进程能够响应的最大请求数量
</IfModule>
<IfModule worker.c>##worker模块配置
StartServers 4 #启动httpd是预先创建几个字进程数量
MaxClients 300 #最多允许客户端并发请求连接数量
MinSpareThreads 25 #最小空闲进程数量
MaxSpareThreads 75 #最大空闲进程数量
ThreadsPerChild 25 #进程启动时候生成的线程数量
MaxRequestsPerChild 0 #每个子进程能够响应的最大请求数量
</IfModule>