Apache 配置说明
球速体育源码包方式安装时通常是在3.1.3节中configure命令的--prefix选项指定的目录中建立如下的目录结构,特殊指定的目录除外:
主配置文件通常叫f,其位置是编译时确定的,通常位于4.1目录结构小节中所示的主配置文件目录,但可以用命令行参数-f来改变。另外,还可以用Include指令和通配符附加许多其他配置文件。任何配置文件都可以使用任何指令。只有在启动或重新启动Apache后,主配置文件的更改才会生效。
配置文件的每一行包含一个指令,在行尾使用反斜杠\可以表示续行,但是反斜杠与下一行之间不能有任何其他字符(包括空白字符)。
配置文件中的指令是不区分大小写的,但是指令的参数(argument)通常是大小写敏感的。以#开头的行被视为注解并被忽略。注解不能出现在指令的后边。空白行和指令前的空白字符将被忽略,因此可以采用缩进以保持配置层次的清晰。
Apache是模块化的服务器,这意味着核心中只包含实现最基本功能的模块。扩展功能可以作为模块动态加载。默认情况下,只有base组的模块被编译进了服务器。如果服务器在编译时包含了DSO模块,那么各模块可以独立编译,并可随时用LoadModule指令加载;否则,要增加或删除模块必须重新编译整个Apache。用于特定模块的指令可以用IfModule指令包含起来,使之有条件地生效。
Apache还具备同时支持多个站点的能力,称为虚拟主机。VirtualHost配置段中的指令仅对该段中的特定站点(虚拟主机)有效。
虽然大多数指令可以包含在任意的配置段中,但是某些指令仅在某些特定的范围内才有意义,请参阅Apache官方文档指令说明的作用域项。
Apache可以使用分布在整个网站文件目录树结构中的特殊文件来进行分散配置,这些特殊的文件通常叫.htaccess,但是也可以用AccessFileName指令来改变它的名字。.htaccess文件中指令的作用域是存放它的那个目录及其所有子目录。.htaccess文件的语法与主配置文件相同。由于对每次请求都会读取.htaccess文件,所以对这些文件的修改会立即生效。
要了解一个指令是否可以用在.htaccess文件中,可以查阅Apache官方文档指令说明中该指令的作用域项。服务器管理员可以在主配置文件中使用AllowOverride指令来决定哪些指令可以在.htaccess文件中生效。
源码包方式安装最新版本的Apache时,主配置文件中只包含少量与服务自身相关的指令,通过include指令和通配符附加其他配置文件,默认不附加任何其它配置文件。附加的配置指令和模块的具体配置指令以单独的配置文件形式保存在4.1.1小节中所示的扩展及模块配置文件目录./conf/extra中,可根据需要在主配置文件中附加。
二进制包安装Apache时,主配置文件中包含了大部分配置指令,默认通过include指令将/etc/httpd/conf.d目录中的以.conf为扩展名的文件自动附加到主配置文件。
下面以源码包方式安装的Apache为例来说明笔者建议的配置,如果你正在使用二进制包方式安装的Apache,文中的所有配置指令都可以在/etc/httpd/conf/httpd.conf主配置文件中使用。
本文所使用的示例主机中Apache安装在/usr/local/apache-2.2.6目录,请使用你实际的安装目录替换。
下面介绍本文中将会用到的一些常用配置指令,全部指令及其详细用法请参见Apache2.2官方文档。
另外需要注意,当在非UNIX平台上输入文件路径的时候,要特别注意即使平台本身是使用反斜杠(\)来分隔路径的,在这里也只能使用正斜杠(/)。通常在配置文件里只用正斜杠(/)来分隔路径总是不会错的。
ServerRoot:服务器的基础目录,一般来说它将包含conf/和logs/子目录,其它配置文件的相对路径即基于此目录。默认为安装目录,不需更改。
Listen:指定服务器监听的IP和端口。默认情况下Apache会在所有IP地址上监听。Listen是Apache2.0以后版本必须设置的指令,如果在配置文件中找不到这个指令,服务器将无法启动。
Listen指令指定服务器在那个端口或地址和端口的组合上监听接入请求。如果只指定一个端口,服务器将在所有地址上监听该端口。如果指定了地址和端口的组合,服务器将在指定地址的指定端口上监听。可选的protocol参数在大多数情况下并不需要,若未指定该参数,则将为443端口使用默认的https协议,为其它端口使用http协议。
LoadModule:加载特定的DSO模块。Apache默认将已编译的DSO模块存放于4.1目录结构小节中所示的动态加载模块目录中。
如果filename使用相对路径,则路径是相对于ServerRoot所指示的相对路径。
User:设置实际提供服务的子进程的用户。为了使用这个指令,服务器必须以root身份启动和初始化。如果你以非root身份启动服务器,子进程将不能够切换至非特权用户,并继续以启动服务器的原始用户身份运行。如果确实以root用户启动了服务器,那么父进程将仍然以root身份运行。
用于运行子进程的用户必须是一个没有特权的用户,这样才能保证子进程无权访问那些不想为外界所知的文件,同样的,该用户亦需没有执行那些不应当被外界执行的程序的权限。强烈建议专门为Apache子进程建立一个单独的用户和组。一些管理员使用nobody用户,但是这并不能总是符合要求,因为可能有其他程序也在使用这个用户。
Group:设置提供服务的Apache子进程运行时的用户组。为了使用这个指令,Apache必须以root初始化启动,否则在切换用户组时会失败,并继续以初始化启动时的用户组运行。
ServerAdmin:设置在所有返回给客户端的错误信息中包含的管理员邮件地址。
如果httpd不能将提供的参数识别为URL,它就会假定它是一个email-address,并在超连接中用在mailto:后面。推荐使用一个Email地址,因为许多CGI脚本是这样认为的。如果你确实想使用URL,一定要保证指向一个你能够控制的服务器,否则用户将无法确保一定可以和你取得联系。
可选的scheme://前缀仅在2.2.3以后的版本中可用,用于在代理之后或离线设备上也能正确的检测规范化的服务器URL。
当没有指定ServerName时,服务器会尝试对IP地址进行反向查询来推断主机名。如果在ServerName中没有指定端口号,服务器会使用接受请求的那个端口。
为了加强可靠性和可预测性,建议使用ServerName显式的指定一个主机名和端口号。
如果使用的是基于域名的虚拟主机,在VirtualHost段中的ServerName将是为了匹配这个虚拟主机,在Host:请求头中必须出现的主机名。
在没有使用类似Alias这样的指令的情况下,服务器会将请求中的URL附加到DocumentRoot后面以构成指向文档的路径。
Directory-path可以是一个目录的完整路径,或是包含了Unixshell匹配语法的通配符字符串。在通配符字符串中,?匹配任何单个的字符,*匹配任何字符序列。也可以使用[]来确定字符范围。在~字符之后也可以使用正则表达式。
如果有多个(非正则表达式)Directory配置段符合包含某文档的目录(或其父目录),那么指令将以短目录优先的规则进行应用,并包含.htaccess文件中的指令。
正则表达式将在所有普通配置段之后予以考虑。所有的正则表达式将根据它们出现在配置文件中的顺序进行应用。
filename参数应当是一个文件名或是一个包含通配符的字符串,其中?匹配任何单个字符,*匹配任何字符串序列。在~字符之后可以使用正则表达式。
在此配置段中定义的指令将作用于其基本名称(不是完整的路径)与指定的文件名相符的对象。Files段将根据它们在配置文件中出现的顺序被处理:在Directory段和.htaccess文件被处理之后,但在Location段之前。Files能嵌入到Directory段中以限制它们作用的文件系统范围,也可用于.htaccess文件当中,以允许用户在文件层面上控制对它们自己文件的访问。
FilesMatch:提供基于文件名的访问控制。与Files指令不同在于只能用正则表达式进行文件匹配。
IfModule:封装根据指定的模块是否启用而决定是否生效的指令。
在IfModule配置段中的指令仅当测试结果为真的时候才进行处理,否则所有其间的指令都将被忽略。
option可以为None,不启用任何额外特性,或者下面选项中的一个或多个:
FollowSymLinks服务器允许在此目录中使用符号连接,如果此配置位于Location配置段中,则会被忽略。
Indexes如果一个映射到目录的URL被请求,而此目录中又没有DirectoryIndex(例如:index.html),那么服务器会返回由mod_autoindex生成的一个格式化后的目录列表。
SymLinksIfOwnerMatch服务器仅在符号连接与其目的目录或文件的拥有者具有相同的uid时才使用它。如果此配置出现在Location配置段中,则将被忽略。
一般来说,如果一个目录被多次设置了Options,则最特殊的一个会被完全接受(其它的被忽略),而各个可选项的设定彼此并不融合。然而,如果所有作用于Options指令的可选项前都加有+或-符号,此可选项将被合并。所有前面加有+号的可选项将强制覆盖当前的可选项设置,而所有前面有-号的可选项将强制从当前可选项设置中去除。
如果此指令被设置为None,那么.htaccess文件将被完全忽略。事实上,服务器根本不会读取.htaccess文件。
当此指令设置为All时,所有具有.htaccess作用域的指令都允许出现在.htaccess文件中。
Options[=Option,...]允许使用控制指定目录功能的指令(Options和XBitHack)。可以在等号后面附加一个逗号分隔的(无空格的)Options选项列表,用来控制允许Options指令使用哪些选项。
Deny,AllowDeny指令在Allow指令之前被评估。默认允许所有访问。任何不匹配Deny指令或者匹配Allow指令的客户都被允许访问。
Allow,DenyAllow指令在Deny指令之前被评估。默认拒绝所有访问。任何不匹配Allow指令或者匹配Deny指令的客户都将被禁止访问。
Mutual-failure只有出现在Allow列表并且不出现在Deny列表中的主机才被允许访问。这种顺序与OrderAllow,Deny具有同样效果,不赞成使用。
关键字只能用逗号分隔,它们之间不能有空格,在所有情况下每个Allow和Deny指令语句都将被评估。
Allow:控制哪些主机可以访问服务器的该区域。可以根据主机名、IP地址、IP地址范围或其他环境变量中捕获的客户端请求特性进行控制。
这个指令的第一个参数总是from,随后的参数可以有三种不同形式:如果指定Allowfromall,则允许所有主机访问,按照下述Deny和Order指令的配置;若要只允许特定的主机或主机群访问服务器,host可以用下面任何一种格式来指定:一个(部分)域名、完整的IP地址、部分IP地址、网络/掩码、网络/nnn无类别域间路由规格;第三种参数格式允许对服务器的访问由环境变量的一个扩展指定,指定Allowfromenv=env-variable时,如果环境变量env-variable存在则访问被允许,使用由mod_setenvif提供的指令,服务器用一种基于客户端请求的弹性方式提供了设置环境变量的能力。因此,这条指令可以用于允许基于像User-Agent(浏览器类型)、Referer或其他HTTP请求头字段的访问。
Deny:控制哪些主机被禁止访问服务器的该区域。可以根据主机名、IP地址、IP地址范围或其他环境变量中捕获的客户端请求特性进行控制。
Local-url(%已解码的)是一个相对于被请求目录的文档的URL(通常是那个目录中的一个文件)。可以指定多个URL,服务器将返回最先找到的那一个,比如:
如果系统支持,使用syslog替代文件名将通过syslogd(8)来记载日志。默认将使用系统日志机制local7,但您可以用syslog:facility语法来覆盖这个设置,其中,facility的取值为syslog(1)中记载的任何一个名字。
当指定了某个级别时,所有级别高于它的信息也会被同时记录。比如,指定LogLevelinfo,则所有notice和warn级别的信息也会被记录。建议至少使用crit级别。
当错误日志是一个单独分开的正式文件的时候,notice级别的消息总是会被记录下来,而不能被屏蔽。但是,当使用syslog来记录时就没有这个问题。
在第一种格式中,指令只带一个参数,以定义后续的TransferLog指令定义的日志格式。另外它也可以通过下述的方法使用nickname来引用某个之前的LogFormat定义的日志格式。
第二种定义LogFormat指令的格式中,将一个直接的format和一个nickname联系起来。这样在后续的LogFormat或CustomLog指令中,就不用一再重复整个冗长的格式串。定义别名的LogFormat指令仅仅用来定义一个nickname,而不做其它任何事情,也就是说,它只是定义了这个别名,它既没有实际应用这个别名,也不是把它设为默认的格式。因此,它不会影响后续的TransferLog指令。另外,LogFormat不能用一个别名来定义另一个别名。nickname不能包含百分号(%)。
关于format的格式,请参见Apache2.2官方文档中的自定义日志格式小节。
第二个参数指定了写入日志文件的内容。它既可以是由前面的LogFormat指令定义的nickname,也可以是直接按Apache2.2官方文档中的自定义日志格式小节所描述的规则定义的format字符串。
第三个参数是可选的,它根据服务器上特定的环境变量是否被设置来决定是否对某一特定的请求进行日志记录。如果这个特定的环境变量被设置(或者在env=!name的情况下未被设置),那么这个请求将被记录。可以使用mod_setenvif和/或mod_rewrite模块来为每个请求设置环境变量。
本指令除不允许直接定义日志格式或根据条件进行日志记录外,与CustomLog指令有完全相同的参数和功能。实际应用中,日志的格式是由最近的非别名定义的LogFormat指令指定。如果没有定义任何日志格式,则使用通用日志格式。
Alias指令使文档可以被存储在DocumentRoot以外的本地文件系统中。以(%已解码的)url-path路径开头的URL可以被映射到以directory-path开头的本地文件。
如果对在DocumentRoot之外的某个目录建立了一个Alias,则可能需要通过Directory段明确的对目标目录设定访问权限。
ScriptAlias:映射一个URL到文件系统并视之为CGI脚本目录。
ScriptAlias指令的行为与Alias指令相同,但同时它又标明此目录中含有应该由cgi-script处理器处理的CGI脚本。以URL-path开头的(%已解码的)的URL会被映射到由第二个参数指定的具有完整路径名的本地文件系统中的脚本。
ScriptSock:在以线程式MPM(worker)运行的Apache中设置用来与CGI守护进程通信的套接字文件名前缀(其后附加父进程PID组成完整的文件名)。这个套接字将会用启动Apache服务器的父进程用户权限(通常是root)打开。为了维护与CGI脚本通讯的安全性,不允许其他用户拥有写入套接字所在目录的权限是很重要的。
DefaultType:在服务器无法由其他方法确定内容类型时,发送的默认MIME内容类型。
MIME-type指明了包含extension扩展名的文件的媒体类型。这个映射关系会添加在所有有效的映射关系上,并覆盖所有相同的extension扩展名映射。
ErrorDocument:批示当遇到错误的时候服务器将给客户端什么样的应答。
document可以由一个斜杠(/)开头来指示一个本地URL(相对于DocumentRoot),或是提供一个能被客户端解释的完整的URL。此外还能提供一个可以被浏览器显示的消息。比如:
EnableMMAP:指示httpd在递送中如果需要读取一个文件的内容,它是否可以使用内存映射。
当处理一个需要访问文件中的数据的请求时,比如说当递送一个使用mod_include进行服务器端分析的文件时,如果操作系统支持,Apache将默认使用内存映射。
这种内存映射有时会带来性能的提高,但在某些情况下,您可能会需要禁用内存映射以避免一些操作系统的问题:
在挂载了NFS的DocumentRoot上,若已经将一个文件进行了内存映射,则删除或截断这个文件会造成httpd因为分段故障而崩溃。
在可能遇到这些问题的服务器配置过程中,应当使用下面的命令来禁用内存映射:
对于挂载了NFS的文件夹,可以单独在directory段中指定禁用内存映射:
EnableSendfile:控制httpd是否可以使用操作系统内核的sendfile支持来将文件发送到客户端。
默认情况下,当处理一个请求并不需要访问文件内部的数据时(比如发送一个静态的文件内容),如果操作系统支持,Apache将使用sendfile将文件内容直接发送到客户端而并不读取文件。
这个sendfile机制避免了分开的读和写操作以及缓冲区分配,但是在一些平台或者一些文件系统上,最好禁止这个特性来避免一些问题:
一些平台可能会有编译系统检测不到的有缺陷的sendfile支持,特别是将在其他平台上使用交叉编译得到的二进制文件运行于当前对sendfile支持有缺陷的平台时;
在Linux上启用IPv6时,使用sendfile将会触发某些网卡上的TCP校验和卸载bug;
当Linux运行在Itanium处理器上的时候,sendfile可能无法处理大于2GB的文件;
对于一个通过网络挂载了NFS文件系统的DocumentRoot(比如:NFS或SMB),内核可能无法可靠的通过自己的缓冲区服务于网络文件。
Shell风格(fnmatch())的通配符可以用于按照字母顺序一次包含多个文件。另外,如果Include指向了一个目录而不是一个文件,Apache将读入该目录及其子目录下的所有文件,并依照字母顺序将这些文件作为配置文件进行解析。但是并不推荐这么做,因为偶尔会有临时文件在这个目录中生成,从而导致httpd启动失败。
文件的路径可以是一个完整的绝对路径(以一个斜杠开头),或是相对于ServerRoot目录的相对路径。
推荐步骤:在Centos02安装DNS服务器,DNS区域的名字为在DNS区域中添加www主机指向网站服务器在Centos01安装apache服务器,优化apache服务,客户端使用访问网站默认站点保证网站服务器安全性,修改网站服务器根目录为/www/ccm,修改主页名字为ccm.html,客户端访问测试实验步骤:一, 在Centos02安装DNS服务器,DNS
Centos02 安装 DNS 服务器,DNS 区域的名字为 aaa.com,在DNS 区域中添加 www主机指向网站服务器在 Centos01 安装 apache 服务器,优化 apache 服务,客户端使用 访问网站默认站点保证网站服务器安全性,修改网站服务器根目录为/www/aaa,修改主页名字为aaa.html,客户端访问测试Centos01切换云计算光盘修改配
在实施etl过程中,经常会遇到不同类型之间的转换,方式有很多种,下面是项目中使用etl-engine进行数据类型转换的收集整理,方便日后工作中查阅。
apache服务在编译安装时的一些参数选项解释,主配置文件和子配置文件的详细解析
Apache Shiro的配置主要分为四部分: 对象和属性的定义与配置URL的过滤器配置静态用户配置静态文件
Apache服务器设置一.认识和安装apache1.认识apache(1)apache是一种开源软件,是当前最流行web服务器之一(2)a
一、什么是.htaccess文件.htaccess文件是Apache服务器上的一个设置文件。它是一个文本文件,可以使用任何文本编辑器进行编写。.htaccess文件提供了针对目录改变配置的方法,即通过在一个特定的文档目录中放置一个包含一个或多个指令的文件(.htaccess文件),以作用于此目录及其所有子目录。.htaccess的功能包括设置网页密码、设置发生错误时出现的文件、改变首页的文件名
上一篇:配置炸裂!宝马310R原型车Apache RTR 310印度发布这次要承认三哥的优秀了
栏 目:Apache
下一篇:Apache OFBiz 远程代码执行漏洞来袭启明星辰提供解决方案
本文标题:Apache 配置说明
本文地址:http://aihaoedu.com/fuwuqijiaocheng/2250.html
您可能感兴趣的文章
- 10-26华为云 DTSE 团队通过开源专业服务助力马来西亚 X 集团平滑迁移上云
- 10-26四方云动 工信部处罚阿里表明了什么信号?
- 10-26IBM在“宽松的”Apache许可下发布最新Granite基础模型
- 10-26ALC (Apache Local Community) Beijing是什么?
- 10-26什么是Apache?Apache是什么意思?
- 10-24如何在网站上开启HTTPS功能呢?
- 10-24德国主权技术基金两年内向开源领域投资超过 2490 万美元
- 10-24知道创宇:从创宇盾感知Apache Log4j2 曝光前后惊魂24小时态势
- 10-24频频出现拼写、音标、翻译等内容错误 莫让词典类APP误人子弟
- 10-23Apache配置文件中文版
阅读排行
推荐教程
- 10-03法语助手法汉-汉法词典 apache是什么意思_apache的中文解释和发音_的翻译怎么读
- 09-25亚马逊AWS将OpenSearch开源搜索项目移交至Linux基金会实现社区主导治理
- 10-08鄱阳湖读bo还是po?鄱阳湖位于哪个省?
- 08-2531个绝对惊艳的数据可视化作品让你感受“数据之美”!
- 08-30漏洞利用接踵而至:Apache为Log4j发布2170新版补丁修复
- 06-29Apache中国下载镜像开通
- 08-29Apache HTTP Server 2451 发布 - OSCHINA
- 06-24Apache服务器迎来5年内首次重大更新:云计算支持
- 06-24数据可视化|看得懂的数据
- 08-30Apache基金会正式宣布Apache InLong成为顶级项目