apache服务器全局配置详解(全)

Apache服务器全局配置之服务器标识配置篇

服务器标识相关指令:
ServerName
ServerAdmin
ServerSignature
ServerTokens
UseCanonicalName
UseCanonicalPhysicalPort

ServerAdmin和ServerTokens指令控制有关服务器的哪些信息将出现在服务器生成的文档中(如错误消息)。ServerTokens指令设置服务器HTTP响应头字段的值。
ServerName、UseCanonicalName、 UseCanonicalPhysicalPort指令用来决定怎样构建自引用URL,譬如,某客户端对一个目录发出请求,但没有包含目录名最后的斜线"/",Apache将重定向客户端到包含"/"的全名,以使客户端可以正确解析文档中的相对引用。

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

例如,你的web服务器的主机名为example.bob.com,但你的web服务器同时在DNS服务器中拥有一个DNS别名www.bob.com。而你希望web服务器更显著一点,你可以在http.conf中使用ServerName指令来实现:
ServerName www.bob.com:80

当没有指定ServerName时,服务器会尝试对IP地址进行反向查询来推断主机名。如果在ServerName中没有指定端口号,服务器会监听所有端口。为了加强可靠性和可预测性,应该使用ServerName显示的指定一个主机名和端口号。
如果使用的是基于域名的虚拟主机,在<VirtualHost>段中的ServerName将是为了匹配这个虚拟主机,在“Host:”请求头中必须写主机名。

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

ServerAdmin bob@126.com

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

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

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

对于2.0.44以后的版本,显示详细的服务器版本号将由ServerTokens指令控制。

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

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

ServerTokens Prod[uctOnly]:服务器会发送(比如):Apache 
Apache Server at 192.168.120.240 Port 80 
ServerTokens Major:服务器会发送(比如):Apache/2 
Apache/2 Server at 192.168.120.240 Port 80 
ServerTokens Minor:服务器会发送(比如):Apache/2.2 
Apache/2.2 Server at 192.168.120.240 Port 80 
ServerTokens Min[imal]:服务器会发送(比如):Apache/2.2.11
Apache/2.2.11 Server at 192.168.120.240 Port 80 
ServerTokens OS:服务器会发送(比如):Apache/2.2.11(Unix)
Apache/2.2.11 (Unix) Server at 192.168.120.240 Port 80
ServerTokens Full:服务器会发送(比如):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(一个指回相同服务器的URL)。

UseCanonicalName .:会将ServerName设置的域名用于所有的自引用URL、SERVER_NAME、CGI中的SERVER_PORT。比如:如果你的web服务器有自己的域名,并且在DNS中有对应的NS记录,而且httpd.conf将ServerName设置了域名,那么你在浏览器中输入http://192.168.120.240/bbs,它会自动将这个IP地址变成其对应的域名,比如http://www.bob.com/bbs/ 。此时,如果其他客户端的电脑不能正确的解析web服务器的这个域名,那么在访问这个web服务器时将会出现问题。因为web服务器会自动将IP地址转变成域名。

UseCanonicalName Off:如果客户端提供了主机名和端口,Apache将会使用客户端提供的这些信息来构建自引用URL。这些值与用于实现基于域名的虚拟主机的值相同,并且对于同样的客户端可用。CGI变量SERVER_NAME和SERVER_PORT也会由客户端提供的值来构建。

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

UseCanonicalPhysicalPort指令
语法:UseCanonicalPhysicalPort . | Off
默认:UseCanonicalPhysicalPort Off
这个指令用来配置服务器如何确定自己的端口。

UseCanonicalPhysicalPort .:Apache有可能在构造服务器的规范端口时为了符合UseCanonicalName指令而使用实际的物理端口号。 
UseCanonicalPhysicalPort Off:Apache不会使用实际的物理端口号,而是依赖所有已经配置的信息来构造一个合法的端口号。

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

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

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

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

CoreDumpDirectory指令
语法:CoreDumpDirectory directory-path
这个指令用来控制Apache使用的内核转储目录,该转储目录默认位于“ServerRoot”下。因为这个目录通常对于运行服务器的用户是不可写的,内核转储一般也不会写入内容。如果你在调试中需要内核转储,那么你可以用这个指令来指定另外一个目录。

DocumentRoot指令
语法:DocumentRoot directory-path
这个指令用来设置httpd提供服务的目录。在没有使用类似Alias这样的指令的情况下,服务器会将请求中的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”
这个指令用来设置当服务器遇到错误时记录错误日志的文件。如果file-path不是以/开头的绝对路径,那么将会被认为是一个相对于ServerRoot的相对路径。

LockFile指令
语法:LockFile filename
这个指令设置当AcceptMutex指令的值是fcntl或flock的时候,Apache使用的锁文件的位置。一般保持默认值。改变默认值的主要原因是logs目录位于一个NFS文件系统上,因为锁文件必须位于本地磁盘上。主服务器进程的PID会自动添加到文件名后面。
注意:不要将该锁文件放在任何人都有写权限的目录中,因为别人可以通过建立一个与服务器企图建立的锁文件同名的文件,来阻止服务器启动。

PidFile指令
语法:PidFile filename
默认:PidFile “logs/httpd.pid”
这个指令用来设置服务器记录父进程(监控进程)PID的文件。
如果指定的不是绝对路径,那么将会被认为是一个相对于ServerRoot的相对路径。

ScoreBoardFile指令
语法:ScoreBoardFile file-path
这个指令用来设置存储子进程协调数据的文件。Apache使用记分板(scoreboard)在父进程和子进程之间进行通信。一些体系机构要求有一个文件来帮助通信。如果未指定这个文件,Apache会首先尝试在匿名共享内存中建立完整的记分板。如果失败,将继续尝试使用基于文件的共享存储器在磁盘上建立这个文件。若利用这个指令指定这个文件的位置,则Apache将总是在磁盘上建立这个文件。
将ScoreBoardFile放置在RAM DISK中对访问速度有很大帮助。但是要注意放置的位置以及权限。

ServerRoot指令
语法:ServerRoot directory-path
这个指令用来设置Apache服务器所在的目录。一般包含conf/、logs/等子目录。其他配置文件的相对路径一般都是基于此目录的。
例如:
ServerRoot “/usr/local/httpd/”

Apache服务器全局配置之资源限制配置篇

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

LimitRequest*系列指令用来限制Apache在读取客户端请求的过程中使用的资源数量。通过限制这些值,可以减轻某些拒绝服务(DOS)攻击。 
RLimit*系列指令用来限制Apache子进程所派生的进程使用的资源数量。通常,这些指令用来控制CGI脚本和SSI exec命令所使用的资源。 
ThreadStackSize指令在某些平台上用来控制堆栈大小。

LimitRequestBody指令

语法:LimitRequestBody bytes
默认值:LimitRequestBody 0
这个指令用来设置客户端发送的HTTP请求的最大字节数。LimitRequestBody指令可以作用于整个服务器、特定目录、特定文件、特定位置。如果客户端的请求超出了LimitRequestBody设置的值,那么服务器会回应一个错误信息给客户端,而不会去处理这个请求。
Bytes在0(不限制)到2147483647(2GB)之间。
比如:你允许客户端将文件上传到某个位置,并且希望将上传文件的大小限制为500K,
LimitRequestBody 512000

LimitRequestFields指令

语法:LimitRequestFields number
默认:LimitRequestFields 100
这个指令用来设置客户端向服务器请求中HTTP请求头域的数量。一般一个客户端请求头域的数量很少大于20,但是客户端的不同这个数字也将有很大的差异。这个经常取决于用户配置他们的浏览器扩展以支持更详细的内容协商。可选的HTTP扩展经常使用请求头域来实现。
number是一个0(不限制)到32767之间的整数。默认值为编译时的常量DEFAULT_LIMIT_REQUEST_FIELDS(发布值为100)。

LimitRequestFieldsize指令

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

LimitRequestLine指令

语法:LimitRequestLine bytes
默认:LimitRequestLine 8190
这个指令用来设置客户端发送的HTTP请求行的最大字节数。请求行包括HTTP方法、URL、协议版本等。因此LimitRequestLine指令能够限制URL的长度,服务器会需要这个值足够大以装载它所有的资源名,包括可能在GET请求中所传递的查询部分的所有信息。
一般情况下,不要更改这个值,使用默认即可。

RLimitCPU指令

语法:RLimitCPU seconds | max [seconds|max]
默认:未定义,使用操作系统默认值
这个指令用来设置Apache子进程派生的进程占用CPU的最大秒数。
这里可以设置一个或者两个参数。第一个参数设置所有进程的软资源限制,第二个参数设置最大资源限制。两个参数均可设置为一个数值或者是“max”(表示设置为操作系统允许的最大值)。要增大此资源限制最大值需要以root运行服务器或是在初始化启动语句中进行设置。
这个指令只作用于Apache子进程所派生的进程,而不是Apache子进程本身。这个范围包括CGI脚本和SSI执行命令,不包括所有从Apache父进程派生出的进程。比如管道日志。
CPU资源限制表示每进程占用的秒数。

RLimitMEM指令

语法:RLimitMEM bytes | max [bytes|max]
默认:未定义,使用操作系统默认值
这个指令用来设置Apache子进程派生的进程占用内存的最大字节数。
这里可以设置一个或者两个参数。第一个参数设置所有进程的软资源限制,第二个参数设置最大资源限制。两个参数均可设置为一个数值或者是“max”(表示设置为操作系统允许的最大值)。要增大此资源限制最大值需要以root运行服务器或是在初始化启动语句中进行设置。
这个指令只作用于Apache子进程所派生的进程,而不是Apache子进程本身。这个范围包括CGI脚本和SSI执行命令,不包括所有从Apache父进程派生出的进程。比如管道日志。
内存资源限制表示为每进程占用的字节数。

RLimitNPROC指令

语法:RLimitNPROC number | max [number|max]
默认:未定义,使用操作系统默认值
这个指令用来设置Apache子进程派生的进程数目。
这里可以设置一个或者两个参数。第一个参数设置所有进程的软资源限制,第二个参数设置最大资源限制。两个参数均可设置为一个数值或者是“max”(表示设置为操作系统允许的最大值)。要增大此资源限制最大值需要以root运行服务器或是在初始化启动语句中进行设置。
这个指令只作用于Apache子进程所派生的进程,而不是Apache子进程本身。这个范围包括CGI脚本和SSI执行命令,不包括所有从Apache父进程派生出的进程。比如管道日志。
进程限制控制了每个用户的进程数。

ThreadStackSize指令

语法:ThreadStackSize size
默认:NetWare上为65536,其他平台上等于操作系统默认值
这个指令用来设置处理客户端连接(包括调用模块以协助处理)的线程允许使用的最大栈尺寸(字节)。
大多数情况下,操作系统默认的栈尺寸很合理。但是在某些情况下,需要调整这个值:
在默认栈尺寸较小的平台上(比如HP-UX),Apache可能会在使用一些需要较大栈尺寸的第三方模块时崩溃。这样的问题可以通过将ThreadStackSize设置为一个较大的值来解决。这种调整应当仅仅在第三方模块提供者明确要求的情况下才需要,或者是您通过诊断确定是由于栈空间太小而导致崩溃。
在某些平台上,如果默认的栈空间大于服务器运行所需空间,那么将ThreadStackSize值降低到小于操作系统默认值可以让每个进程中允许生成的最大线程数量增加。这种类型的调整应该仅在测试环境中使用,并且对所有服务器进程进行充分的测试,因为处理某些罕见的请求需要较大的栈空间。一个很小的服务器配置变化就有可能使得当前的ThreadStackSize设置变得不合适。

(0)

相关推荐

  • 在Windows服务器下用Apache和mod_wsgi配置Python应用的教程

    最近开发了一个 Google Analytics 相关的应用,但需要在 Windows 下部署,结合网上的相关经验,最终选择了 apache+mod_wsgi 这样的配置. 修改python应用 复制代码 代码如下: Note that mod_wsgi requires that the WSGI application entry point be called 'application'. If you want to call it something else then you wou

  • 跨域请求 Apache 服务器配置的方法

    1.修改服务器配置文件 <Directory /www/web/yuming.com/public_html/> Options FollowSymLinks AllowOverride All Require all granted Header set Access-Control-Allow-Origin * </Directory> 2.编辑httpd.conf 找下面这行,把#去掉,目的是开启apache头信息自定义模块 #LoadModule headers_modul

  • Apache服务器主配置文件httpd.conf详解

    apache 2.2 # This is the main Apache server configuration file. It contains the # configuration directives that give the server its instructions. # See <URL:http://httpd.apache.org/docs/2.2/> for detailed information. # In particular, see # <URL:

  • PHP开发Apache服务器配置

    照此配置流程,绝对一路畅通,可保无虞. 昨天弄了个PHP小程序,想在本地跑一下测试,可是工作电脑没有安装环境,于是下载了一个wamp,一路畅通,Apache.Mysql.PHP就全有了.启动wamp服务,在浏览器里输入"http://localhost",访问正常,跳出wamp首页.于是,下面想把自己的CrashServer网站配置到Apache里,可以通过虚拟域名在本地访问测试,结果遇到不少问题,今日一通Google研究,终于任督二脉全通. 1.首先,Apache的配置文件是http

  • Apache服务器一个IP多个站点的配置方法示例

    在日常的网站发布中很多情况下都无法做到一个IP对应一个站点,在IP4的情况下IP的资源是相对有限的.然而作为最流行的Apache自然也考虑到这种情况,那么接下来看看apache服务器怎么配置一个IP多个站点. 在httpd.conf中找到 "# Virtual hosts",并添加如下行 复制代码 代码如下: ServerName 你的域名 HostNameLookups off 例子 NameVirtualHost 192.168.1.104 <VirtualHost 192.

  • Mac版PhpStorm之XAMPP整合apache服务器配置的图文教程详解

    选择在PhpStorm集成apache服务器,下面是我自己的亲测的步骤. 1.如何修改apache默认端口 xampp apache默认的http访问端口是80 修改完成后在xampp中重启apache. 2.配置流程 打开Settings / Preferences 找到 Build, Execution, Deployment 选项,点击 Deployment 添加如下: 因为我们修改了默认端口80,所以这里一定要指明端口号.目录是/Applications/XAMPP/xamppfiles

  • CentOS 6.4安装配置LAMP服务器(Apache+PHP5+MySQL)

    准备篇: 1.配置防火墙,开启80端口.3306端口vi /etc/sysconfig/iptables-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT #允许80端口通过防火墙-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT #允许3306端口通过防火墙 备注:很多网友把这两条规则添加到防火墙配置的最后一行,导致防火墙启动失败, 正

  • CentOS 6.6安装配置LAMP服务器(Apache+PHP5+MySQL)

    准备篇: CentOS 6.6系统安装配置图解教程 http://www.jb51.net/os/239738.html 1.配置防火墙,开启80端口.3306端口 vi /etc/sysconfig/iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT :wq! #保存

  • Apache服务器中.htaccess文件的实用配置示例集锦

    .htaccess 是什么? htaccess (hypertext access,超文本访问) 是为网站所有者提供用于控制服务器环境变量以及其它参数的选项,从而增强他们网站的功能的文件.这些文件可以在网站目录树的任何一个目录中,并向该目录以及目录中的文件和子目录提供功能. 这些功能是什么呢?其实这些是服务器的指令,例如命令服务器执行特定任务的行,这些命令只对该文件所在目录中的文件和子目录有效.这些文件默认是隐藏的,因为所有操作系统和网站服务器默认配置为忽略它们,但如果查看隐藏文件的话,你就可以

  • 如何配置Apache服务器中的虚拟机

    Apache 的虚拟主机就是在一台服务器上运行多个网站,每个虚拟主机都可以绑定独立的域名,为这些域名可以指定单独的目录,访问这些域名的时候,Apache 会打开对应目录里面的东西.配置 Apache 的虚拟主机,只需要去修改 Apache 的配置文件.虚拟主机的英文是 virtual host,所以,你的 Apache 配置虚拟主机的文件可能是 httpd.conf ,也可能是跟 virtual host 这个名字相关的文件,比如 vhost.conf ,具体要使用哪一个配置文件,你需要自己去判

随机推荐