httpd功能特性及配置介绍(一)

一次web请求的基本过程:
建立连接–>接受请求–>处理请求–>访问资源–>构建响应–>发送响应–>记录日志
web服务器的输入/输出结构
单线程I/O结构
多线程I/O结构
复用的I/O结构
复用的多线程:多个线程,每个线程响应多个请求
Apache HTTP Serve俗称apache
httpd:是一个高度模块化的程序,是由核心和模块组成:core+modules
使用DSO来加载模块的
DSO:Dynamic Shared Object 动态共享库
MPM:Multipath Processing Module 多道处理模块 就是将结构模块化,把核心任务处理作为一个可插拔的模块,使其能针对不同的环境进行优化。并非是一个模块,而是对一种特性的称谓
Apache的处理模式共有三种:
1.prefork:一个进程来处理一个请求
2.worker:一个线程来处理一个请求,每个进程可以产生多个线程。
3.event:一个线程来响应多个请求,
event driven:时间驱动机制,主要目的在于实现单线程响应多个请求。
Prefork MPM基于非线程模型,和Apache 1.x版本中的处理方式很相似。Prefork MPM在所有情况下都很安全,对运行非线程安全(non-thread-safe)模式的软件如PHP,它是唯一的安全选择。对于某些应用程序,包括在 Apache 1.3上非常流行的程序(如简单静态页面、CGI脚本等),Prefork MPM是最好的选择。另一方面,prefork用单独的子进程来处理不同的请求,进程之间是彼此独立的,这也使其成为最稳定的MPM之一。但是由于每一个请求都会产生一个新的进程,导致系统资源(尤其是内存)消耗的很快,一旦并发量较大的时候,大量的Apache进程会占用巨大的内存空间。
而Worker MPM基于线程模式,具有内存消耗低(对繁忙的服务很重要)、扩展性在某些特定应用情况下比Prefork更好等优点。在这个模式下,采用的进程和线程混合的形式处理请求。由于使用线程来处理,所以可以处理相对海量的请求,而系统资源的开销要小于基于进程的Prefork模式。
以上两种稳定的MPM方式在非常繁忙的服务器应用下都有些不足。尽管HTTP的Keepalive方式能减少TCP连接数量和网络负载,但是 Keepalive需要和服务进程或者线程绑定,这就导致一个繁忙的服务器会耗光所有的线程。Event MPM是解决这个问题的一种新模型,它把服务进程从连接中分离出来。在服务器处理速度很快,同时具有非常高的点击率时,可用的线程数量就是关键的资源限 制,此时Event MPM方式是最有效的。一个以Worker MPM方式工作的繁忙服务器能够承受每秒好几万次的访问量(例如在大型新闻服务站点的高峰时),而Event MPM可以用来处理更高负载。值得注意的是,Event MPM不能在安全HTTP(HTTPS)访问下工作。
一目了然,三种MPM模式各有各的优缺点。但是如果我们经常遇到访问量一大,服务器资源就吃紧的情况,那么就是Prefork模式瓶颈了。在其他两类MPM中,通用的做法还是使用Worker模式来解决问题。Event MPM由于不支持安全连接(HTTPS)所以导致应用有一定的局限性
在此感谢服务器之家对三种模式的解读。
httpd(apache)的功能特性
路径别名:alias
用户认证:authentication
虚拟主机:virtual host
反向代理:
负载均衡:反向代理的一种表现形式
用户站点:
CGI:Common Gateway Interface
日志滚动: /etc/logrotat.d/http.d
日志切割
access.log
access.log access.1.log
access.log access.1.log access.2.log
切割方式有两种:时间切割和空间切割
配置文件:/etc/httpd/conf/http.conf
配置指令不区分大小写 值可能区分大小写
有些指令可以出现多次。
例如:Listen [IP:]80
配置文件格式:
全局配置
主机配置:用于仅提供一个站点时
虚拟主机:用于提供多个站点时
配置文件语法测试:

service httpd configtest
httpd -t

绝大多数配置修改后,可以通过service httpd reload来生效,如果修改了监听的地址或端口,必须重启服务才能生效

配置文件详解

1.监听套接字。
Listen [ip:] port
此指令可以出现多次,用于指定监听的套接字

#Listen 12.34.56.78:80
Listen 80

2.配置keepalive.
keepalive {on|off}
keepAliverTimeout 2
MaxkeepAliverTimeout 50
MIME:多媒体类型
major/minor
HTML:text/html JPEG:images/jpeg
ASCII:text/plain GIF:image/gif
QuickTime:video/quicktime
3.MPM

startservers:默认的启动的工作进程数
MinSpareServers:最少空闲进程数
MaxSpearServers:最大空闲进程数
ServerLimit:最大活动进程数
MaxClient:并发请求最大值
MaxRequestPerChild:每个子进程的生命周期

startservers:默认的启动的工作进程数
MaxClient:并发请求的最大数
MinSpareThreads:最少空闲进程数
MaxSpeaeThreads:最大空闲进程数
THreadsPerchild:每个子进程生成的线程数
MaxRequestPerChild:每个子进程在其生命周期内所能服务的最多请求个数。0表示不做限定

4.DSO模式加载方式

# Example:
# LoadModule foo_module modules/mod_foo.so
#
Include conf.modules.d/*.conf

如果使用相对路径,则对于ServerRoot所定义的位置而言,
服务重启配置才能生效

httpd -M    //列出已经装载的DSO模块及非DSO模块
httpd -l    //列出支持的使用的非DSO模块

5.配置站点目录
DocumentRoot /path/to/somewhere

options
AllowOverride None

<Directory "/www/wang/fin">
    Options Indexes FollowSymLinks

6.页面访问属性

<Directory "/www/wang/fin">
    Options Indexes FollowSymLinks
</Directory>

Options的选项
Indexes FollowSymlinks none all (中间以空格隔开)
Indexes:缺少指定的默认页面时,允许将目录中的所有文件以列表形式返给用户,危险!
FollowSymlinks:允许跟随符号连接所指向的原始文件
none:所有都不启用
all:所有都启用
ExecCGI:允许使用mod-cgi模块执行CGI脚本
Includes:允许使用mod-include模块实现服务器包含
Mutiviews:允许使用mod-negotiation实现内容协商
SymlinksIfownerMatch:在链接文件属组属主与原始文件属组属主相同时允许跟随符号连接所指的原文件
7.基于主机的访问控制。

<Directory "/www/wang">
    AllowOverride None
  #Allow open access:
   order Deny Allow
    ALLOW
    Deny
</Directory>

Allow from
Deny from
IP,Net work Address
172.16
172.16.0.0
172.16.0.0/16
172.16.0.0/255.255.0.0
允许或者拒绝某个IP或者某个网段的IP访问,用于制作网站黑名单或者白名单
最佳匹配:从列表找出最小的能匹配到访问者的地址的条目为最终生效
8.定义默认主页面
Directory Index index.php index.html home.html default.html
9.用户目录如果期望让每个用户都可以床将二恩站点 http://server_ip/~userhome/
userdir disable:禁止使用用户家目录
userdir public_html
public_html:是用户家目录写的目录名称,所有位于此目录的文件均可通过前述的访问路径进行访问,但用户家目录要赋予运行http进程的用户拥有执行权限
10.配置日志功能
/var/log/httpd/
access.log:访问日志,其需要记录的内容都需要自定义
error.log:错误日志

访问日志:
customlog “/path/to/access_log_file” LogFormat_Name
LogFormate Formate_String Format_Name
%h:客户端地址
%l:远程登录名,通常为横线
%u:认证时的远程登录名,没有认证为-
%t:收到请求时的时间
%r:请求报文的起始行
%>s:响应状态码
%b:响应报文的长度单位为byte,不包含首部
%{Foobar};%{Header_Name}:记录指定的请求报文首部的内容(value)
错误日志:Error.log
未完待续…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值