注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

php开发lamp

《西安--木木》-经历丰富了生活。 架构师QQ群: 246695517

 
 
 

日志

 
 

Apache超详细配置  

2013-05-26 00:04:47|  分类: apache配置 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
apache的配置主要集中在/etc/httpd/httpd.conf文件中,本节将详细介绍如何配置apache的httpd.conf文件。 15.3.1 默认httpd.conf文件 Apache的默认配置文件httpd.conf适应几乎所有种类操作系统、所有种类硬件下的设置,但不可能为特定平台和特定硬件进行配置

apache的配置主要集中在/etc/httpd/httpd.conf文件中,本节将详细介绍如何配置apache的httpd.conf文件。

15.3.1  默认httpd.conf文件
Apache的默认配置文件httpd.conf适应几乎所有种类操作系统、所有种类硬件下的设置,但不可能为特定平台和特定硬件进行配置。用户可根据需要针对特定平台对默认的httpd.conf进行修改。httpd.conf由全局环境设置、主服务器设置和虚拟服务器设置三部分构成,其中“#”开头的为注释行。
1.       全局环境设置选项
全局环境设置用于定义apache服务器的工作目录、预派生进程数和工作端口等参数。常用全局配置选项如下。
(1)设置响应信息中包含操作系统信息
设置服务器响应主机头(header)信息时,显示apache的版本和操作系统的名称,可以设置ServerTokens选项
ServerTokens OS
(2)设置服务器的根目录
ServerRoot "/etc/httpd"  
ServerRoot选项用于指定Apache服务器守护进程httpd的运行目录,httpd在启动之后自动将进程的当前目录改变为此目录。如果在配置文件中指定的文件或目录是相对路径,那么真实路径就位于这个ServerRoot定义的目录之下。
(3)设置ScoreBoardFile
Apache使用ScoreBoardFile来维护进程的内部数据,通常不设置这个选项,除非用户想在一台计算机上运行多个Apache服务器,这时每个Apache服务器都需要独立的配置文件httpd.conf,并使用不同的ScoreBoardFile。
ScoreBoardFile run/httpd.scoreboard 
(4)设置PID文件位置
PidFile  run/httpd.pid
该选项用于指定Apache记录进程标准符的文件。由于httpd能自动复制其身,因此系统中同时可以有多个httpd进程,但只有一个初始进程,它是其他进程的父进程。
(4)设置连接超时
Timeout选项用以设置服务器接收到一个请求时,保持连接开启的时间。超过这个时间服务器会断开和客户端的连接。
Timeout 300
(5)设置HTTP 保持连接
KeepAlive的值可以为On或Off,Off 表示连接不保持,即客户方发送一次请求,服务器方就响应一个文件。On表示连接保持,避免多次请求与服务器方建立多次连接。建议此参数值设为On
KeepAlive Off 
(6)设置一次HTTP连接支持的最大请求数
当KeepAlive选项值为On时,该选项用于控制连接请求最大数。默认100,设置为0表示不限制。
MaxKeepAliveRequests 100
(7)设置请求之间的间隔时间
KeppAliveTimeout用于设置当保持连接时,两次请求之间时间间隔,单位为秒。
KeepAliveTimeout 15
(8)设置服务器进程数
Apache 2.0为了提高性能,增加了MPM(Multi-Processing Modules 多道处理模块)。MPM负责绑定本机网络接口,接受请求并调度子进程来处理请求。Apache 2.0支持3种方式的MPM,分别是预派生(Prefork)MPM、工作者(Worker)MPM和独立子进程(Perchild)MPM。对于不同的操作系统,所应用MPM方式也是不同的,对于Linux系统下安装的Apache服务器,默认加载了Prefork  MPM,如下所示为默认http.conf文件一段MPM配置内容。
# prefork MPM      //设置prefork MPM运行方式的参数
<IfModule prefork.c> //判断apache是否内置prefork模块
StartServers       8           //设置服务器启动时运行进程数(8个httpd子进程)
MinSpareServers    5         //设置apache生成空闲子进程数的最小值
MaxSpareServers   20 //设置apache生成空闲子进程数的最大值
//限制同时连接的数目,因为同时连入过多的数目会降低系统的性能。
MaxClients       150        
//控制每个子进程在终止处理请求之前能够提出的连接请求数量,0表示没有限制。MaxRequestsPerChild 1000      
</IfModule>
# worker MPM             //设置worker MPM运行方式的参数
<IfModule worker.c> //判断是否内置worker模块
StartServers         2
MaxClients         150
MinSpareThreads    25
MaxSpareThreads    75
ThreadsPerChild     25      //每个子进程可以生成多少个线程,以处理客户对Web站点的请求。(MaxThreadsPerChild:限制每个子进程允许的线程数)
MaxRequestsPerChild 0
</IfModule>
(9)设置地址绑定
Linsten选项的作用是将Apache服务器绑定到指定的IP地址和端口上。在Linux系统下,一个主机可以有多个网络接口和IP地址,此时可以使用Linsten选项绑定Apache到指定的IP地址上,也可以同时监听所有的IP地址。
Listen 80   //监听所有接口的80号端口
Listen 192.168.5.1:80 //只监听192.168.5.1的80号端口
(10)配置DSO,加载模块
Apache支持DSO功能,在编译apache的时候,动态编译的模块在服务器运行过程中并不被调入内存。如果需要使用某个模块时,可以使用LoadModule选项指定模块名称和路径,实现动态加载。
LoadModule access_module modules/mod_access.so
LoadModule auth_module modules/mod_auth.so
LoadModule auth_anon_module modules/mod_auth_anon.so
……………….
……………………..
(11)加载子配置文件
httpd.conf是apache的主配置文件,为了提高可读可用Include选项包含其他的子配置文件。
Include conf.d/*.conf     //包含存放在/etc/httpd/conf.d下所有.conf结尾的文件
(12)配置状态信息
Apache服务器可以通过特殊的HTTP请求,来报告自身的运行状态。默认情况下只能生成基本的状态信息,如要生成完整的状态信息,需要使用ExtendedStatus,并设置参数值为On。
ExtendedStatus On
以上介绍的是常用全局配置选项,用户可根据自已的需要修改默认httpd.conf中全局选项,以实现自已的目标。
2. 主服务器配置
默认httpd.conf文件的第二部分用来设置主服务器,这部分的设置将应用于所有的Web站点,同时这部分的设置也是虚拟主机的默认设置。下面具体介绍默认httpd.conf中包含的主服务器配置选项。
(1)设置apache的运行用户和组
用户在运行Apache的时候最好不要以root用户的身份来运行,配置选项User和Group分别用于指定运行apache的用户和用户组,默认配置如下。
User apache   
Group apache        
(2)设置管理员的E-Mail地址
ServerAdmin root@localhost
ServerAdmin选项的作用是设置在服务器出现问题时,把错误信息发送到指定的邮箱中去。这个E-Mail地址也会出现在服务器自动产生的Web页面上,当出现了HTTP错误的时候提示Web使用者用此E-Mail地址和管理员联系
(3)设置服务器名
默认情况下Aapache服务器会通过DNS来自动获取自身主机的名称。但有时候域名解析会出现问题,如域名反向解析不正确,则需要用ServerName来设置服务器名。
通常一个Web服务器可以具多个名字,客户浏览器可以使用所有这些名字或IP地址来访问这台服务器,但在没有定义虚拟主机的情况下,服务器总是以自已在ServerName中定义的DNS名字回应浏览器。服务器名一定要设置正确,否则apache服务器无法正常启动。
ServerName new.host.name:80
(4)设置正式名称
UseCanonicalName选项的作用是设置服务器正式名称,该选项的值可以为Off或On。UseCanonicalName为Off时使用客户端提供的的主机名和端口, 为On时使用ServerName选项中指定的主机名和端口。
UseCanonicalName Off        
(5)设置站点主目录
DocumentRoot "/var/www/html"        
DocumentRoot选项定义服务器对外发布的文件所存放的路径,默认路径是/var/www/html,客户端请求的URL就被映射为该路径中。当然,被发布的目录属性必须允许访问用户读取和执行,否则客户端无法浏览器目录内容。如果需要客户端利用http协议向发布目录中上传内容,目录属性必须允许用户写入。
(6)设置目录访问权限
利用Directory容器可以配置目录的访问权限及目录选项,容器内由若干个配置选项构成,常用的选项如表15-1所示。
15-1 常用的目录配置选项

选项名
说明
Options [+/-] 特性值
指令特定目录的特性,目录的特性值如下:
l         All          除MultiViews之外的所有特性。这是默认设置。
l         ExecCGI 允许使用mod_cgi执行CGI脚本。
l         FollowSymLinks   服务器允许在此目录中使用符号连接
l         IncludesNOEXEC       允许服务器端包含,但禁用"#exec cmd"和"#exec cgi"。但仍可以从ScriptAlias目录使用"#include virtual"虚拟CGI脚本。
l         Indexes 如果一个映射到目录的URL被请求,而此目录中又没有DirectoryIndex(例如:index.html),那么服务器会返回由mod_autoindex 生成的一个格式化后的目录列表。
l         MultiViews   根据文件提供的语言进行内容协商的"多重视图"
l         SymLinksIfOwnerMatch  服务器仅在符号连接与其目的目录或文件的拥有者具有相同的uid时才使用它。
l         None 关闭所有的访问控制特性
注意:可采用“+”和“-”表示启用和取消某特性
AllowOverride 参数
利用目录访问控制文件,覆盖Directory中部分配置选项,AllowOverride的参数可以为:
l         All                 可以使用.htaccess文件的全部指令组
l         AuthConfig   进行认证授权及安全相关的指令
l         FileInfo         控制文档类型的指令
l         Indexes         控制目录索引的指令
l         Limit            控制主机访问的指令(Allow, Deny, Order)
l         Options                 控制指定目录功能的指令
l         None                     禁止所有.htaccess文件中的指令组
Order allow,deny/deny,allow
用于指定执行访问规则和执行访问规则的先后顺序
Deny All/ip地址
定义拒绝访问主机列表
Allow all/ip地址
定义允许访问的主机列表

下面是一段默认httpd.conf文件中的配置内容,该段内容设置了/和/var/www/html目录的访问控制和目录特性。
<Directory />
Options FollowSymLinks     
AllowOverride None           
</Directory>
<Directory "/var/www/html">     
Options Indexes FollowSymLinks
AllowOverride None                  
Order allow,deny          
Allow from all             
</Directory>
(7)设置用户目录
如在Linux系统上运行apache服务器,在系统上的所有用户都可以创建自已的主页,保存到自已的指定目录中,此项功能称之为“个人主页”。在客户端可以用形如http://servername/~username的地址访问用户的主页,其中useraname代表服务器中的用户名称。默认httpd.conf文件禁止用户个人主页功能,如果需要启用个人主页功能可设置UserDir选项。
<IfModule mod_userdir.c>
UserDir disable   //禁止个人主页功能,如果想启用的话,可以在UserDir选项后面跟目录名
</IfModule>
(8)设置默认首页文件名 DirectoryIndex index.html index.html.var DirectoryIndex选项用于建立文件列表,当客户端发出的连接请求是一个目录而不是一个文件时,需要使用这个列表。例如,客户端发了连接请求http:/
(8)设置默认首页文件名
DirectoryIndex index.html index.html.var
DirectoryIndex选项用于建立文件列表,当客户端发出的连接请求是一个目录而不是一个文件时,需要使用这个列表。例如,客户端发了连接请求http://servername/soft/,则服务器首先会在soft目录中依次查找在DirectoryIndex选项指定的文件index.html、index.html.var,把找到的第一个文件作为该目录中的默认文件,如果都找不到便自动生成一个该目录的文件列表,然后提交给客户端。
(9)指定目录访问控制文件名
目录访问控制文件是用来设置目录的访问权限,该文件放在被控制的目录中,默认文件名为.htaccess。
AccessFileName .htaccess              
<Files ~ "^\.ht">    //Files容器用于设置文件的访问权限
Order allow,deny
Deny from all       
</Files>
(10)配置MIME类型文件
Apache服务器利用MIME功能识别用户请求的文件类型。MIME是通过MIME类型文件实现文件映射的,可利用TypesConfig指定类型文件的路径。如果服务器无法从指定MIME类型文件确定用户访问的文件类型,则用默认类型来作为此文件的类型。默认类型用DefaultType选项来定义。
TypesConfig /etc/mime.types
DefaultType text/plain
Apache可利用mod_mime_magic模块,根据文件的特征实现自动断文件的MIME类型,下面默认httpd.conf中的配置内容。
<IfModule mod_mime_magic.c> 
 MIMEMagicFile conf/magic
</IfModule>
(11)设置Apche日志功能
HostnameLookups选项用以配置Apache日志是记录连接客户机的IP地址,还是记录客户机的DNS名称。该选项可取值On或Off,Off表示记录客户的IP址,On表示记录客户机的DNS名称。
HostnameLookups Off
可以在httpd.conf文件中利用ErrorLog选项指定错误日志文件的位置,利用LogLevel指定什么样的错误被记录到日志文件中,其参数值包括debug、info、warn、error、crit、alert和emerg。还可以利用LogFormat选项定义日志的格式,该选项可取以“%”开头的宏定义,常用的宏定义如表15-2所示。
15-2  LogFormat中的宏定义

符号
说明
%a
客户机的IP地址
%b
发送给客户端的字节数
%{VAR} e
环境变量的值
%f
URL请求引用的文件名
%{Header} i
HTTP请求中的标题行的内容
%l
守护进程记录在客户端上用户发出的请求
%{Note} n
来自一个不同模块的信息.Note的内容
%{Header} o
HTTP响应中规定的标题行的内容
%P
接收到请求的端口号
%p
处理请求的服务器进程的PID
%r
来自客户端的实际请求
%s
由请求而产生的服务器响应码
%t
当地日期和时间
%T
完成用户请所需的秒数
%u
如果访问控制要求用户和密码认证,则此符号表示用户名
%U
客户请求的URL
%v
从DNS查询的服务器的主机名和域名
%V
从ServerName命令获取的处理请求的服务器的主机名和域名

CustomLog选项可以定义何种类型的日志记录到哪个文件中去。下面是httpd.conf文件中的一段配置日志功能的内容。
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
(12)设置服务器的响应信息
ServerSignature On             
ServerSignature选项用于选择是否在错误的响应文档后面加入签名。当ServerSignature为On时,Apache服务器会在自产生的页面上附加服务器的版本信息和主机名称,为Off时什么都不附加,为EMAIL时附加服务器的版本信息、主机名称以及指令ServerAdmin中设置的邮件地址。
(13)设置目录别名
Apache服务器可以用Alias选项将URL与服务器文件系统中的真实位置进行直接映射,一般的文档将在DocumentRoot中的进行查询,而使用Alias定义的路径将直接映射到相应目录下,而不再到DocumentRoot下面进行查询。因此Alias主要用于发布共用资源。
Alias /icons/ "/var/www/icons/"    //设置图标文件的访问别名
<Directory "/var/www/icons">            //设置/var/www/icons目录的访问权限
   Options Indexes MultiViews
   AllowOverride None
   Order allow,deny
   Allow from all
</Directory>
Alias /manual "/var/www/manual"              //设置apache手册页的访问别名
<Directory "/var/www/manual">         //设置/var/www/manual目录的访问权限
      Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
(14)设置URL重定向
Redirect选项可以将一个旧的URL映射到一个新的URL,该选项的格式为Redirect [status] URL-pathURL,下面配置示例
Redirect permanent  /foo http://www.example.com/bar    
(15)设置索引选项
Apache服务器可以在文件列表中为目录索引中的不同种类的文件产生不同的图标。具体每种类型使用什么图标及如何显示,可使用IndexOptions、AddIconByEncoding、AddIconByType以及AddIcon选项来定义。下面是一段默认httpd.conf文件中的配置内容。
//指定客户端浏览器如何显示目录中索引文件。FancyIndexing文件前附加图标说明文件的类
//型,VersionSort对同一个软件的多个版本进行排序,NameWidth=* 表示目录中文件名的
//宽度为“*”则自动根据文件名调整宽度。
IndexOptions FancyIndexing VersionSort NameWidth=*             
AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip
AddIconByType (TXT,/icons/text.gif) text/* //设置不同类型文件的图标
AddIconByType (IMG,/icons/image2.gif) image/*
……..
AddIcon /icons/binary.gif .bin .exe //设置不同扩展名的文件图标
AddIcon /icons/binhex.gif .hqx
……….
DefaultIcon /icons/unknown.gif    //当上面没有指定的文件类型时则用此图标显示。
(16)定义编码和语言
AddEncoding选项定义一些压缩文件的MIME类型,有些浏览器可以根据这些定义来进行解压缩操作。
AddEncoding x-compress Z
AddEncoding x-gzip gz tgz
一个HTML文档可以同时具备多个语言的版本,每种语言对应的后缀可以使用AddLanguage进行定义。这样服务器可以针对不同国家的客户,通过浏览器进行协商,发送不同的语言版本。而LanguagePriority定不同语言的优先级,以便在浏览器没有特殊要求时,按照使用不同的语言版本回应客户端的请求。如果没有任何语言要求,则发送默认语言版本的文档,默认语言命令DefaultLanguage定义。
DefaultLanguage nl
AddLanguage nl .nl
AddLanguage en .en
AddLanguage et .et
.....
...................
AddLanguage zh-CN .zh-cn
AddLanguage zh-TW .zh-tw
AddLanguage hr .hr
LanguagePriority en da nl et fr de el it ja ko no pl pt pt-br ltz ca es sv tw
ForceLanguagePriority Prefer Fallback
AddDefault选项可以设置页面默认的字符集,也可以使用AddCharset添加字符集。
AddDefaultCharset UTF-8
AddCharset ISO-8859-1 .iso8859-1 .latin1
AddCharset ISO-8859-2 .iso8859-2 .latin2 .cen
……….
……………..
AddCharset ISO-8859-3 .iso8859-3 .latin3
AddCharset GB2312      .gb2312 .gb
(17)添加MIME类型和处理类型
AddType选项可以为特定后缀的文件指定MIME类型,这里的设置将覆盖mime.types中的设置。
AddType application/x-tar .tgz            
AddHandler选项用于指定非静态的处理类型,定义文档为一个非静态的文档类型,需要进行处理,再向浏览器返回处理结果。
AddHandler cgi-script .cgi   
AddHandler imap-file map   
(18)自定义错误响应
在客户请求的网页不存在,或者没有访问权限等情况发生时,服务器将产生一个错误代码,同时将回应客户浏览器一个标识错误的网页。ErrorDocument就用于设置当出现哪种错误时应该回应客户浏览器哪些内容,ErrorDocument的第一个参数为错误的序号,第二个参数为回应的数据,可以为简单的文本、本地网页、本地CGI程序或重定向到远程主机上的网页。
ErrorDocument 500 "The server made a boo boo."
ErrorDocument 404 /missing.html
ErrorDocument 404 "/cgi-bin/missing_handler.pl"
ErrorDocument 402 http://www.example.com/subscription_info.html
........
.....................
(19)设置客户端的类型
BrowserMatch选项为特定的浏览器和客户程序,设置特殊的参数,以保证对老版本浏览器的兼容性,并支持新浏览器的新特性。
BrowserMatch "Mozilla/2" nokeepalive
BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0
BrowserMatch "RealPlayer 4\.0" force-response-1.0
…………
…………………..
(20)设置Web代理
Apache 2.0内置web代理功能,默认httpd.conf禁止了Web代理功能,Web代理的配置选项主要如下。
<IfModule mod_proxy.c>    
ProxyRequests On
<Proxy *>
Order deny,allow
Deny from all
Allow from .example.com  
</Proxy>
ProxyVia On            
<IfModule mod_disk_cache.c>
 CacheEnable disk
 CacheRoot "/var/cache/mod_proxy"
</IfModule>
</IfModule>
  评论这张
 
阅读(654)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017