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号。

假设使用的是基于域名的虚拟主机,在<VirtualHost>段中的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设置变得不合适。

apacheserver全局配置具体解释的更多相关文章

  1. 【SpringCloud】Ribbon如何自定义客户端配置和全局配置

    起因 事情的起因是这样的,公司内部要实现基于Zuul网关的灰度路由,在上线时进行灰度测试,故需要配置业务微服务向Eureka注册的metadata元数据,和自定义Ribbon的负载规则达到只访问灰度服 ...

  2. Keepalived的全局配置

    Keepalived的全局配置 默认配置文件如下: ! Configuration File for keepalived global_defs { notification_email { aca ...

  3. 小程序基础02:全局配置app.json

    1.配置 我们使用app.json文件来对来微信小程序进行全局配置. 作用:他决定了页面文件的路径,窗口表现,设置网络超时时间,设置多tab等 每一个小程序页面也可以使用 .json 文件来对本页面的 ...

  4. [ionic开源项目教程] - 第5讲 如何在项目中使用全局配置

    第5讲 如何在项目中使用全局配置? Q:ionic开发,说纯粹一点,用的就是html+css+js,那么无疑跟web开发的方式是类似的.在这里给大家分享一个小技巧,如何在项目中使用全局配置? A:我的 ...

  5. MFC 全局配置 读取保存配置

    不知道关于全局配置别人都是怎么处理的,最近做的东西都用到全局配置,而且要保存软件的设置,下次启动时要使用上次关闭时的配置. 我的做法是建一个类用来保存和读取配置,并且在这个类中创建一些变量,供所有的界 ...

  6. Linux vsftpd服务配置具体解释

    [背景] 近日.一朋友dominoserver要进行升级.迁移,搭建了linux測试系统,也开启vsftpd服务,但是配置的ftp账号,程序无法正常下载附件. [问题跟踪] 通过ftpclient连接 ...

  7. Android系统APN配置具体解释

     Android 系统APN配置具体解释 这些天一直在调系统原生的Settings.apk里面APN配置的问题.在设置里面手动添加了APN配置选项.可是在界面上还是看不到.所以跟了下代码.原以为就是简 ...

  8. 4、mybatis动态sql+struts2(通配符+全局配置+分页)

    1.创建userinfo.sql数据库脚本 create table USERINFO ( id NUMBER not null, uname ), password ), age NUMBER ) ...

  9. Mybatis --- 创建方法、全局配置

    总体介绍:MyBatis实际上是Ibatis3.0版本以后的持久化层框架[也就是和数据库打交道的框架]!     和数据库打交道的技术有:      原生的JDBC技术--->Spring的Jd ...

随机推荐

  1. 导入项目出现: Unable to resolve target ‘android-10′ 解决办法

    进入到android项目根目录下,打开项目文件project.properties ,修改 target=android-10  的值.把10改为当前虚拟机API level的版本即可.我这里改为17 ...

  2. Python --标准库 存储对象 (pickle包,cPickle包)

    在之前对Python对象的介绍中 (面向对象的基本概念,面向对象的进一步拓展),我提到过Python“一切皆对象”的哲学,在Python中,无论是变量还是函数,都是一个对象.当Python运行时,对象 ...

  3. tp类型自动转换和自动完成

    一.类型自动转换 在模型中对数据库字段自动完成 //模型中数据类型自动转换 添加一个$type数组即可protected $type=array( 'username'=>'serialize' ...

  4. django Proxy models ---- 代理模式

    一个proxy models 不会在数据库中创建新的表.而是与它的基类共用同一个表 1.model 的定义: from django.db import models # Create your mo ...

  5. 微信小程序请求wx.request数据,渲染到页面

    先说一下基本使用.官网也有. 比如说你在App.js里面有这些变量.想修改某些值. data: { main_view_bgcolor: "", border: "&qu ...

  6. unity, access material

    MeshRenderer meshRenderer=gameObject.GetComponent<MeshRenderer>();                if(meshRende ...

  7. CentOS 5.4 安装和卸载桌面

    显示系统已经安装的组件,和可以安装的组件:#yum grouplist 如果系统安装之初采用最小化安装,没有安装xwindow,那么先安装:#yum groupinstall "X Wind ...

  8. Linux iptables常用命令

    iptables 是 Linux 中重要的访问控制手段,是俗称的 Linux 防火墙系统的重要组成部分.这里记录了iptables 防火墙规则的一些常用的操作指令. 下面的操作以 CentOS 为基础 ...

  9. C编程测试存储格式为大段还是小段

    目前,计算机存储系统有2种存储格式,大端和小端.数据在内存中存储时以字节为单位,一个int类型有4个字节,这就导致是高字节对应低地址(大端模式),高字节对应高地址(小端模式).大端和小端模式本身没有对 ...

  10. C语言的工具集

    1. lint可以对c程序进行更加广泛的错误分析,lint不是缩写,它的命名是因为它像在程序中“吹毛求疵”,现在许多linux发行版都包括了它的增强版splint(Secure Programming ...