ServerRoot "/etc/httpd" | 配置httpd进程的根目录(运行目录) |
PidFile run/httpd.pid | 定义httpd的pid文件 |
Timeout 60 | 定义客户程序和服务器连接的超时间隔,超过这个时间间隔(秒)后服务器将断开与客户机的连接。 |
KeepAlive Off | 定义是否启用保持连接,默认关闭状态。由于http是无状态协议,一次请求(建立一次TCP连接)只能获取一个资源,当页面中包含多个资源的时候,就需要多次请求(建立多次TCP连接),这样导致服务器性能下降。为此定义了KeepAlive机制,可以定义在一定时间内或请求数在一定数量之内只需要建立一次TCP连接。 |
MaxKeepAliveRequests 100 | 一次保持连接的最大请求数 |
KeepAliveTimeout 15 | 一次保持连接的最长时间(秒) |
<IfModule prefork.c> #当httpd服务使用的profork模型的时候: StartServers 10 #默认启动10个作业进程 MinSpareServers 10 #空闲进程数不低于10个 MaxSpareServers 20 #空闲进程数最大20个 ServerLimit 256 #最多可以启动256个进程 MaxClients 256 #最大并发客户端数为256个 MaxRequestsPerChild 4000 #每个进程可以处理4000个请求,超过此数目进程被杀死并重新创建 </IfModule> 需要注意的是:ServerLimit最大值为20000个,并且:由于profork是单一线程的进程,所以每个进程在同一时间里仅能处理一个请求(也就是一个请求一个进程),所以MaxClients的值要和ServerLimit一致。而且,profork的开销比较大,不过稳定性比较强。 | |
<IfModule worker.c> #当httpd服务使用的是worker模型的时候 StartServers 6 #默认启动6个作业进程 MaxClients 300 #最大并发客户端数为256个 MinSpareThreads 25 #空闲线程的数量不低于25个 MaxSpareThreads 75 #空闲线程数最大75个 ThreadsPerChild 25 #每个进程默认启动25个线程 MaxRequestsPerChild 0 #每个进程可以处理的请求数不限制 </IfModule> worker是一种基于线程的模型,一个进程内部可以启动N个线程(最大20000个),每个线程处理一个客户请求。理论上线程的开销要小于进程,但是由于Linux本身对多线程特性的支持并不是太好,所以可能会导致多线程程序运行出问题的几率比单线程程序要大的多,而且一旦一个线程出现问题,可能会导致整个进程出现问题。这个模型用的比较少。 | |
event模型: event模型是一个基于线程的、更高级的事件驱动模型,可以实现一个线程处理N个请求。不过由于2.2上面是测试,2.4的配置讲解的时候我们再说。 | |
Listen 80 | 监听本机所有可用IP的80端口,也可以监听特定IP:Listen 192.168.10.1:80 |
LoadModule [Module_Name] mod_NAME.so | 动态加载模块功能。httpd是一个模块化的程序,其仅包含了一些核心功能模块,其余的模块一律都是通过动态加载来完成,这样可以保证httpd的功能尽可能不复杂,实现用户需要使用哪种功能再调用。 |
Include conf.d/*.conf | 读取/etc/httpd/conf目录中所有以.conf结尾的文件,这里为相对路径,相对于httpd程序的根目录(/etc/httpd) |
SetOutputFilter DEFLATE #启动压缩过滤器DEFLATE <IfModule mod_deflate.c> #启动了deflate压缩模块的时候: AddOutputFilterByType DEFLATE text/plain #压缩text/plain类型的文件 AddOutputFilterByType DEFLATE text/html #压缩text/html类型的文件 AddOutputFilterByType DEFLATE text/xml #压缩text/xml类型的文件 AddOutputFilterByType DEFLATE text/javascript #压缩text/javascript类型的文件 AddOutputFilterByType DEFLATE text/css #压缩text/css类型的文件 AddOutputFilterByType DEFLATE application/xhtml+xml #压缩这个格式的 ... #DeflateCompressionLevel 9 #指定压缩级别为9,这里注释起来了使用默认压缩级别6 # Netscape 4.x has some problems. BrowserMatch ^Mozilla/4 gzip-only-text/html #对火狐4.x的只使用gzip压缩text/html
# Netscape 4.06-4.08 have some more problems BrowserMatch ^Mozilla/4\.0[678] no-gzip #对火狐4.06-4.08不使用gzip压缩
# MSIE masquerades as Netscape, but it is fine BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html 对IE使用gizp </IfModule> 压缩建议仅压缩文本文件,支持的格式可以查看/etc/httpd/magic文件。 | |
User apache #作业进程运行者为apache用户 Group apache #作业进程运行组为apache组 | |
UseCanonicalName {On|Off} | 当启用这个的时候,用户输入主机名后,他会重定向到ServerName的值 |
ServerName www.xxx.com | 域名 |
DocumentRoot "/var/www/html" | 网页文档的根目录 |
<Directory [~]"/var/www/html"> #定义/var/www/html目录的属性,如果启用~号,支持正则表达式,这里的[]代表是可选的参数 Opitons None #定义选项参数,这里为空;选项有多个,下面会介绍 Allowoverride None #认证类型,None表示为默认的下面的Order的IP认证 Order allow,deny #特定的允许,默认为拒绝 #Allow from all #允许所有,这里注释掉了 Allow from 172.16.100.0/24; #允许172.16.100.0/24这个网络访问,默认的拒绝 </Directory> | |
Options可以支持的参数: ExecCGI:允许使用mod_cgi模块执行cgi脚本 FollowSymblink:允许追踪软接文件 SymLinksIfOwnerMatch:在链接文件属主属组与原始文件的属主属组相同时,允许跟随符号链接所指向的文件 Include:允许使用mod_inclue模块实现服务器端包含(SSI) Index:如果没有首页文件,则启动索引 MultiViews:启动多视图功能 ALL:启用所有参数 | |
<IfModule mod_userdir.c> #如果启用了用户目录模块(用户个人站): UserDir disabled #禁止用户创建个人站 #UserDir public_html #网页文件目录为public_html </IfModule> | |
DirectoryIndex index.html index.php | 设定默认首页文件为index.html或者index.php,如果有index.html就显示这个文件,否则显示index.php |
<Files ~ "^\.ht"> Order allow,deny Deny from all Satisfy All </Files> | 以 .ht开头的文件权限。 ~支持正则表达式 |
TypesConfig /etc/mime.types | mime类型数据文件的位置在/etc/imie.types |
DefaultType text/plain | 默认的MIME类型,当MIME不能确定时,使用text/plain |
<IfModule mod_mime_magic.c> #如果启动了mime模块 # MIMEMagicFile /usr/share/magic.mime MIMEMagicFile conf/magic #决定MIME类型的文件/etc/httpd/conf/magic </IfModule> | |
ErrorLog logs/error_log | 错误日志的位置为/etc/httpd/logs/error_log,注意:/etc/httpd/logs这个目录是/var/log/httpd/的软连接 |
LogLevel warn | 记录错误日志的级别为warn |
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined 定义combined块的日志格式: %h:为客户端主机IP ,host %l:小写的L,不是1。定义远端的主机名,一般都为- %u:认证的用户名,如果没有开启认证,则为- ,username %t:接收到此请求的时间,time \"%r\":记录请求报文的起始行,request %>s:响应的状态码,status %b:响应报文的大小(不包含首部),bytes \"{Referer}i\":用户从哪个网页跳转过来的 \"%{User-Agent}i\":用户的代理软件(就是浏览器软件) | |
CustomLog logs/access_log combined | 自定义日志并使用combined块,这里是访问日志 |
ServerSignature Off | 隐藏Apache的敏感信息,如果为on则是不隐藏,建议设置为off |
ServerTokens Prod | 显示最少的OS信息,建议这样设置 |
Alias /web "/www/" #定义当用户访问http://host.com/web这个URL时指向/www目录 <Directory "/www/"> #定义/www目录的属性,不再多解释 Options None AllowOverride None Order allow,deny allow from all </Directory> | |
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" | 定义CGI别名,允许执行CGI脚本的目录别名 |
AddDefaultCharset UTF-8 | 默认的字符集 |
NameVirtualHost *:80 | 虚拟主机监听的端口,在httpd-2.2需要使用虚拟主机必须开启此选项,而httpd-2.4则已经取消此选项 |
<VirtualHost *:80> ServerName www.a.com DocumentRoot /www/docs/a.com <Directory "/www/docs/a.com"> Options None Allowoverride AuthConfig AuthType basic AuthName "Authentication" AuthBasicProvider file AuthUserFile /etc/httpd/conf/.htpasswd Require valid-user </Directory> ErrorLog logs/a.com-error_log CustomLog logs/a.com-access_log common </VirtualHost> | 定义虚拟主机 |
<Location /server-status> #定义一个URI,而不需要目录 SetHandler server-status #启动server-status功能,SetHandler是用来定义表示的功能 Order deny,allow Allow from all </Location> |
本文出自 “SystemCall社区” 博客,请务必保留此出处http://minux.blog.51cto.com/8994862/1719631
原文地址:http://minux.blog.51cto.com/8994862/1719631