apacheserver全局配置具体解释

2021-06-11 02:03

阅读:640

server标识相关指令:
ServerName
ServerAdmin
ServerSignature
ServerTokens
UseCanonicalName
UseCanonicalPhysicalPort

ServerAdmin和ServerTokens指令控制有关server的哪些信息将出如今server生成的文档中(如错误消息)。ServerTokens指令设置serverHTTP响应头字段的值。
ServerName、UseCanonicalName、 UseCanonicalPhysicalPort指令用来决定如何构建自引用URL,譬如。某client对一个文件夹发出请求,但没有包括文件夹名最后的斜线"/",Apache将重定向client到包括"/"的全名。以使client能够正确解析文档中的相对引用。

ServerName指令
语法:ServerName [scheme://] FQDN [:port]
这个指令用来设置server用于辨识自己的主机名和port号。主要用于创建重定向URL。

比如,你的webserver的主机名为example.bob.com,但你的webserver同一时候在DNSserver中拥有一个DNS别名www.bob.com。而你希望webserver更显著一点,你能够在http.conf中使用ServerName指令来实现:
ServerName www.bob.com:80

当没有指定ServerName时,server会尝试对IP地址进行反向查询来判断主机名。假设在ServerName中没有指定port号,server会监听全部port。为了加强可靠性和可预測性,应该使用ServerName显示的指定一个主机名和port号。


假设使用的是基于域名的虚拟主机,在段中的ServerName将是为了匹配这个虚拟主机,在“Host:”请求头中必须写主机名。

ServerAdmin指令
语法:ServerAdmin email-address|URL
这个指令用来设置server返回给client的错误信息中包括的管理员邮件地址。便于用户在收到错误信息后能及时与管理员取得联系。

ServerAdmin bob@126.com

ServerSignature指令
语法:ServerSignature . | Off | Email
默认:ServerSignature Off
这个指令用来配置server端生成文档的页脚(错误信息、mod_proxy的FTP文件夹列表、mod_info的输出)。使用该指令来启用这个页脚主要在于处于一个代理server链中的时候,用户基本无法辨识出到底是链中的哪个server真正产生了返回的错误信息。

http.conf中该指令默认是Off的,这样就没有错误行;使用On会简单的添加一行关于server版本号和正在提供服务的ServerName。
比如。我使用ServerSignature .后,在没有打开web页面时出现以下的信息:

Apache/2.2.11 (Unix)  PHP/5.2.8 Server at 192.168.120.240 Port 80

对于2.0.44以后的版本号,显示具体的server版本号号将由ServerTokens指令控制。

ServerTokens指令
语法:ServerTokens Major | Minor | Min[imal] | Prod[uctOnly] | OS | Full
默认:ServerTokens Full
这个指令用来控制server回应给client的“Server:”应答头是否包括关于server操作系统类型和编译进的模块描写叙述信息。

注意:在使用ServerTokens指令时要先启用ServerSignature指令。

ServerTokens Prod[uctOnly]:server会发送(比方):Apache 
Apache Server at 192.168.120.240 Port 80 
ServerTokens Major:server会发送(比方):Apache/2 
Apache/2 Server at 192.168.120.240 Port 80 
ServerTokens Minor:server会发送(比方):Apache/2.2 
Apache/2.2 Server at 192.168.120.240 Port 80 
ServerTokens Min[imal]:server会发送(比方):Apache/2.2.11
Apache/2.2.11 Server at 192.168.120.240 Port 80 
ServerTokens OS:server会发送(比方):Apache/2.2.11(Unix)
Apache/2.2.11 (Unix) Server at 192.168.120.240 Port 80
ServerTokens Full:server会发送(比方):Apache/2.2.11(Unix)PHP/5.2.8
Apache/2.2.11 (Unix)  PHP/5.2.8 Server at 192.168.120.240 Port 80

UseCanonicalName指令
语法:UseCanonicalName On | Off | DNS
默认:UseCanonicalName Off
这个指令用来构造Apache的自引用URL(一个指回同样server的URL)。

UseCanonicalName .:会将ServerName设置的域名用于全部的自引用URL、SERVER_NAME、CGI中的SERVER_PORT。

比方:假设你的webserver有自己的域名,并且在DNS中有相应的NS记录。并且httpd.conf将ServerName设置了域名,那么你在浏览器中输入http://192.168.120.240/bbs,它会自己主动将这个IP地址变成其相应的域名。比方http://www.bob.com/bbs/ 。

此时,假设其它client的电脑不能正确的解析webserver的这个域名,那么在訪问这个webserver时将会出现故障。由于webserver会自己主动将IP地址转变成域名。

UseCanonicalName Off:假设client提供了主机名和port,Apache将会使用client提供的这些信息来构建自引用URL。这些值与用于实现基于域名的虚拟主机的值相同,而且对于相同的client可用。CGI变量SERVER_NAME和SERVER_PORT也会由client提供的值来构建。

UseCanonicalName DNS:本设置用于为大量基于IP的虚拟主机支持那些不提供“Host:“头的浏览器使用。使用这个选项时,Apache将对client连入的server的IP地址进行DNS反向解析。以构建自引用URL。

UseCanonicalPhysicalPort指令
语法:UseCanonicalPhysicalPort . | Off
默认:UseCanonicalPhysicalPort Off
这个指令用来配置server怎样确定自己的port。

UseCanonicalPhysicalPort .:Apache有可能在构造server的规范port时为了符合UseCanonicalName指令而使用实际的物理port号。

 
UseCanonicalPhysicalPort Off:Apache不会使用实际的物理port号。而是依赖全部已经配置的信息来构造一个合法的port号。

注意:
决定使用物理port号的次序例如以下:
UseCanonicalName .
Servername指定的port号
物理port号
默认port号

UseCanonicalName Off | DNS
“Host:”请求头提供的port号
物理port号
Servername指定的port号
默认port号
在UseCanonicalPhysicalPort Off的情况下。物理port号将会从上述顺序中剔除。

Apacheserver全局配置之文件定位配置篇
 
文件定位相关指令:
CoreDumpDirectory
DocumentRoot
ErrorLog
LockFile
PidFile
ScoreBoardFile
ServerRoot

这些指令控制Apache正常工作所需的各种文件的定位。假设路径名不以斜线“/”开头,那么就觉得该文件是相对于ServerRoot的相对路径。

CoreDumpDirectory指令
语法:CoreDumpDirectory directory-path
这个指令用来控制Apache使用的内核转储文件夹,该转储文件夹默认位于“ServerRoot”下。由于这个文件夹通常对于执行server的用户是不可写的。内核转储一般也不会写入内容。假设你在调试中须要内核转储,那么你能够用这个指令来指定另外一个文件夹。

DocumentRoot指令
语法:DocumentRoot directory-path
这个指令用来设置httpd提供服务的文件夹。

在没有使用类似Alias这种指令的情况下。server会将请求中的URL附加到DocumentRoot后面以构成指向文档的路径。
比如:
DocumentRoot “/usr/local/httpd/htdocs”
那么在訪问http://192.168.120.240/bbs/index.html时,实际上就是訪问/usr/loca/httpd/htdocs/bbs/index.html。
假设directory-path不是绝对路径。则就会被假定为相对于ServerRoot的路径。


比如:
ServerRoot “/usr/local/httpd/”
DocumentRoot “htdocs”
那么在訪问http://192.168.120.240/bbs/index.html时,实际上还是会被定位到/usr/loca/httpd/htdocs/bbs/index.html。

ErrorLog指令
语法:ErrorLog file-path | syslog[:facility]
默认:ErrorLog “logs/error_log”
这个指令用来设置当server遇到错误时记录错误日志的文件。假设file-path不是以/开头的绝对路径,那么将会被觉得是一个相对于ServerRoot的相对路径。

LockFile指令
语法:LockFile filename
这个指令设置当AcceptMutex指令的值是fcntl或flock的时候,Apache使用的锁文件的位置。

一般保持默认值。改变默认值的主要原因是logs文件夹位于一个NFS文件系统上。由于锁文件必须位于本地磁盘上。主server进程的PID会自己主动加入到文件名称后面。
注意:不要将该锁文件放在不论什么人都有写权限的文件夹中。由于别人能够通过建立一个与server企图建立的锁文件同名的文件,来阻止server启动。

PidFile指令
语法:PidFile filename
默认:PidFile “logs/httpd.pid”
这个指令用来设置server记录父进程(监控进程)PID的文件。


假设指定的不是绝对路径,那么将会被觉得是一个相对于ServerRoot的相对路径。

ScoreBoardFile指令
语法:ScoreBoardFile file-path
这个指令用来设置存储子进程协调数据的文件。Apache使用记分板(scoreboard)在父进程和子进程之间进行通信。

一些体系机构要求有一个文件来帮助通信。

假设未指定这个文件。Apache会首先尝试在匿名共享内存中建立完整的记分板。假设失败。将继续尝试使用基于文件的共享存储器在磁盘上建立这个文件。若利用这个指令指定这个文件的位置,则Apache将总是在磁盘上建立这个文件。
将ScoreBoardFile放置在RAM DISK中对訪问速度有非常大帮助。

可是要注意放置的位置以及权限。

ServerRoot指令
语法:ServerRoot directory-path
这个指令用来设置Apacheserver所在的文件夹。

一般包括conf/、logs/等子文件夹。

其它配置文件的相对路径一般都是基于此文件夹的。
比如:
ServerRoot “/usr/local/httpd/”

Apacheserver全局配置之资源限制配置篇

资源限制相关指令:
LimitRequestBody
LimitRequestFields
LimitRequestFieldsize
LimitRequestLine
RLimitCPU
RLimitMEM
RLimitNPROC
ThreadStackSize

LimitRequest*系列指令用来限制Apache在读取client请求的过程中使用的资源数量。通过限制这些值,能够减轻某些拒绝服务(DOS)攻击。 
RLimit*系列指令用来限制Apache子进程所派生的进程使用的资源数量。

通常。这些指令用来控制CGI脚本和SSI exec命令所使用的资源。 
ThreadStackSize指令在某些平台上用来控制堆栈大小。

LimitRequestBody指令

语法:LimitRequestBody bytes
默认值:LimitRequestBody 0
这个指令用来设置client发送的HTTP请求的最大字节数。LimitRequestBody指令能够作用于整个server、特定文件夹、特定文件、特定位置。

假设client的请求超出了LimitRequestBody设置的值,那么server会回应一个错误信息给client。而不会去处理这个请求。


Bytes在0(不限制)到2147483647(2GB)之间。
比方:你同意client将文件上传到某个位置,而且希望将上传文件的限制大小为500K,
LimitRequestBody 512000

LimitRequestFields指令

语法:LimitRequestFields number
默认:LimitRequestFields 100
这个指令用来设置client向server请求中HTTP请求头域的数量。一般一个client请求头域的数量非常少大于20。可是client的不同这个数字也将有非常大的差异。

这个常常取决于用户配置他们的浏览器扩展以支持更具体的内容协商。可选的HTTP扩展常常使用请求头域来实现。
number是一个0(不限制)到32767之间的整数。默认值为编译时的常量DEFAULT_LIMIT_REQUEST_FIELDS(公布值为100)。

LimitRequestFieldsize指令

语法:LimitRequestFieldsize bytes
默认:LimitRequestFieldsize 8190
这个指令用来设置client发送的HTTP请求头的最大字节数。一般来说。server须要此值够大。以适应普通客户的的不论什么请求的头域大小。头域的大小一般与浏览器支持的内容协议有密切关系。
普通情况下,不要更改这个值,使用默认就可以。

LimitRequestLine指令

语法:LimitRequestLine bytes
默认:LimitRequestLine 8190
这个指令用来设置client发送的HTTP请求行的最大字节数。

请求行包含HTTP方法、URL、协议版本号等。

因此LimitRequestLine指令可以限制URL的长度,server会须要这个值足够大以装载它全部的资源名,包含可能在GET请求中所传递的查询部分的全部信息。
普通情况下,不要更改这个值。使用默认就可以。

RLimitCPU指令

语法:RLimitCPU seconds | max [seconds|max]
默认:没有定义,使用操作系统默认值
这个指令用来设置Apache子进程派生的进程占用CPU的最大秒数。
这里能够设置一个或者两个參数。

第一个參数设置全部进程的软资源限制,第二个參数设置最大资源限制。两个參数均可设置为一个数值或者是“max”(表示设置为操作系统同意的最大值)。要增大此资源限制最大值须要以root执行server或是在初始化启动语句中进行设置。
这个指令仅仅作用于Apache子进程所派生的进程,而不是Apache子进程本身。

这个范围包含CGI脚本和SSI运行命令,不包含全部从Apache父进程派生出的进程。比方管道日志。
CPU资源限制表示每进程占用的秒数。

RLimitMEM指令

语法:RLimitMEM bytes | max [bytes|max]
默认:没有定义,使用操作系统默认值
这个指令用来设置Apache子进程派生的进程占用内存的最大字节数。


这里能够设置一个或者两个參数。第一个參数设置全部进程的软资源限制,第二个參数设置最大资源限制。

两个參数均可设置为一个数值或者是“max”(表示设置为操作系统同意的最大值)。

要增大此资源限制最大值须要以root执行server或是在初始化启动语句中进行设置。


这个指令仅仅作用于Apache子进程所派生的进程,而不是Apache子进程本身。

这个范围包含CGI脚本和SSI运行命令。不包含全部从Apache父进程派生出的进程。比方管道日志。
内存资源限制表示为每进程占用的字节数。

RLimitNPROC指令

语法:RLimitNPROC number | max [number|max]
默认:没有定义,使用操作系统默认值
这个指令用来设置Apache子进程派生的进程数目。


这里能够设置一个或者两个參数。

第一个參数设置全部进程的软资源限制。第二个參数设置最大资源限制。

两个參数均可设置为一个数值或者是“max”(表示设置为操作系统同意的最大值)。要增大此资源限制最大值须要以root执行server或是在初始化启动语句中进行设置。
这个指令仅仅作用于Apache子进程所派生的进程。而不是Apache子进程本身。这个范围包含CGI脚本和SSI运行命令,不包含全部从Apache父进程派生出的进程。比方管道日志。


进程限制控制了每一个用户的进程数。

ThreadStackSize指令

语法:ThreadStackSize size
默认:NetWare上为65536,其它平台上等于操作系统默认值
这个指令用来设置处理client连接(包含调用模块以协助处理)的线程同意使用的最大栈尺寸(字节)。
大多数情况下。操作系统默认的栈尺寸非常合理。可是在某些情况下。须要调整这个值:
在默认栈尺寸较小的平台上(比方HP-UX)。Apache可能会在使用一些须要较大栈尺寸的第三方模块时崩溃。

这种问题能够通过将ThreadStackSize设置为一个较大的值来解决。这种调整应当只在第三方模块提供者明白要求的情况下才须要,或者是您通过诊断确定是因为栈空间太小而导致崩溃。
在某些平台上。假设默认的栈空间大于server执行所需空间,那么将ThreadStackSize值减少到小于操作系统默认值能够让每一个进程中同意生成的最大线程数量添加。

这样的类型的调整应该仅在測试环境中使用。而且对全部server进程进行充分的測试。由于处理某些罕见的请求须要较大的栈空间。一个非常小的server配置变化就有可能使得当前的ThreadStackSize设置变得不合适。


评论


亲,登录后才可以留言!