`
oraclestudy
  • 浏览: 481442 次
文章分类
社区版块
存档分类

Apache Web服务器资源使用限制配置

 
阅读更多

<chsdate w:st="on" year="1899" month="12" day="30" islunardate="False" isrocdate="False"><span lang="EN-GB" style="mso-ansi-language: en-gb">以下内容摘自笔者编著的<font color="#0000ff"><a href="http://www.dearbook.com.cn/book/129972"><font color="#0000ff">《网管员必读——网络应用》(第2版)</font></a>一书</font>:</span></chsdate>

<chsdate w:st="on" year="1899" month="12" day="30" islunardate="False" isrocdate="False"><span lang="EN-GB" style="mso-ansi-language: en-gb"></span></chsdate>

<chsdate w:st="on" year="1899" month="12" day="30" islunardate="False" isrocdate="False"><span lang="EN-GB" style="mso-ansi-language: en-gb">3.4.3</span></chsdate> Apache Web服务器资源使用限制配置

资源使用限制就是要限制用户对网站特定资源如目录、服务器硬件等的访问。相关指令包括:LimitRequestBodyLimitRequestFieldsLimitRequestFieldSizeLimitRequestLineRLimitCPURLimitMEMRLimitNPROCThreadStackSize

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

1LimitRequestBody

LimitRequestBody指令限制客户端发送的HTTP请求体的最大字节长度。其语法格式为:LimitRequestBody BytesBytes0(意味着无限制)到2 147 483 6472GB)间限制了请求体所允许的字节数。默认值为“<chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="0" unitname="”"><span lang="EN-US" style="mso-font-kerning: 0pt">0</span><span style="FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-ascii-font-family: " times="" new="">”</span></chmetcnv>

LimitRequestBody指令可以让用户在其作用范围内(整个服务器、特定目录、特定文件、特定位置)设置一个允许客户端发送的HTTP请求体的最大字节长度的限制。如果客户端的请求超出了这个限制,服务器会回应一个错误,而不是为这个请求继续提供服务。一个普通请求的信息体在很大程度上取决于资源的自然属性和这个资源允许的方法。CGI脚本经常用消息体把表单的信息传递给服务器。使用PUT方法至少能够得到与服务器期望从这个资源得到的信息量差不多大小的值。

此指令给了服务器管理员更大的可控性,以控制客户端不正常的请求行为。这有助于避免某些形式的拒绝服务攻击。比如,如果允许文件上传到某个位置,而且希望能将上传文件的大小设置为100KB,可以使用下面的指令:

LimitRequestBody 102400

2LimitRequestFields

LimitRequestFields用来限制接受客户端请求中HTTP请求头域的数量。其语法格式为:LimitRequestFields NumberNumber是一个0(意味着不限)到32 767之间的整数。默认值为“<chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="100" unitname="”"><span lang="EN-US">100</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " times="" new="">”</span></chmetcnv>默认值为编译时的常量DEFAULT_LIMIT_REQUEST_FIELDS(发布值为100)。

LimitRequestFields指令允许服务器管理员修改在一个HTTP请求中的请求头域的数量限制。服务器需要此值大于一个普通客户端请求中包含头域的数量。一个客户端请求头域的数量很少大于20,但根据客户端的不同这个数字有很大的差别,经常取决于用户配置他们的浏览器扩展以支持更详细的内容协商。可选的HTTP扩展经常使用请求头域来实现。

这个指令给了服务器管理员更大的可控性,以控制客户端不正常的请求行为。这有助于避免某些形的拒绝服务攻击。如果正常使用的客户端得到了服务器的错误应答,指出其在请求中发送了过多的头域,你应该适当地增大此值。例如:

LimitRequestFields 50

3LimitRequestFieldSize

LimitRequestFieldSize指令用来限制客户端发送的请求头的字节数。其语法格式为:LimitRequestFieldsize BytesBytes指定了HTTP请求头允许的字节大小。默认值为“<chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="8190" unitname="”"><span lang="EN-US">8190</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " times="" new="">”</span></chmetcnv>
LimitRequestFieldSize指令允许服务器管理员增加,或减少HTTP请求头域大小的限制。一般来说,服务器需要此值足够大,以适应普通客户端的任何请求的头域大小。一个普通头域的大小对于不同的客户端来说是有很大差别的,一般与用户配置他们的浏览器以支持更多的内容协议密切相关。

这个指令给了服务器管理员更大的可控性,以控制客户端不正常的请求行为。这有助于避免某些形式的拒绝服务攻击。例如:

LimitRequestFieldSize 4094

一般情况下,请不要改变这个设置,而是保持其默认设置。

4LimitRequestLine

LimitRequestLine指令用来限制接收客户端发送的HTTP请求行的字节数。其语法格式为:LimitRequestLine BytesBytes将设置HTTP请求行的字节数限制。默认值也为“<chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="8190" unitname="”"><span lang="EN-US">8190</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: " times="" new="">”</span></chmetcnv>

LimitRequestLine指令允许服务器管理员增加或减少客户端HTTP请求行允许大小的限制。因为请求行包括HTTP方法、URI、协议版本,所以LimitRequestLine指令会限制请求URI的长度。服务器会需要这个值足够大以装载它所有的资源名,包括可能在GET请求中所传递的查询部分的所有信息。

这个指令也给了服务器管理员更大的可控性,以控制客户端不正常的请求行为。这有助于避免某些形式的拒绝服务攻击。例如:

LimitRequestLine 4094

一般情况下,不需要改变此设置的默认值。

5RLimitCPU

RLimitCPU指令用来限制Apache子进程派生的进程占用CPU的最大秒数。CPU资源限制表示为每进程占用的秒数。其语法格式为:RLimitCPU seconds|max [seconds|max],默认值未定义,使用操作系统默认值。

第一个参数设置了所有进程的软资源限制,第二个参数设置了最大资源限制。两个参数均可设置为一个数值,或是“max”,以表示设置为操作系统允许的最大值。增大此资源限制最大值需要以root运行服务器或是在初始化启动语句中进行设置。

这个限制将作用于Apache子进程服务的请求所衍生出来的进程,而不是Apache子进程本身。这个范围包括CGI脚本和SSI执行命令,但不包括所有从Apache父进程衍生出来的进程。比如,管道日志。

6RLimitMEM

RLimitMEM指令用来限制由Apache子进程派生的进程占用的最大内存字节数。内存资源限制表示为每进程占用的字节数。其语法格式为:RLimitMEM Bytes|max [Bytes|max],也没有定义默认值,使用操作系统默认值。
第一个参数设置了所有进程的软资源限制,第二个参数设置了最大资源限制。两个参数均可设置为一个数值,或是“max”,以表示设置为操作系统允许的最大值。增大此资源限制最大值需要以root运行服务器或是在初始化启动语句中进行设置。

这个限制将作用于Apache子进程服务的请求所衍生出来的进程,而不是Apache子进程本身。这个范围包括CGI脚本和SSI执行命令,但不包括所有从Apache父进程衍生出来的进程。比如,管道日志。

7RLimitNPROC

RLimitNPROC指令用来限制由Apache子进程派生的进程所派生的进程数目。进程限制控制了每个用户的进程数。其语法格式为:RLimitNPROC number|max [number|max],也没有定义默认值,使用操作系统默认值。
第一个参数设置了所有进程的软资源限制,第二个参数设置了最大资源限制。两个参数均可设置为一个数值,或是“max”,以表示设置为操作系统允许的最大值。增大此资源限制最大值需要以administrator账户运行服务器或是在初始化启动语句中进行设置。

这个限制将作用于Apache子进程服务的请求所衍生出来的进程,而不是Apache子进程本身。这个范围包括CGI脚本和SSI执行命令,但不包括所有从Apache父进程衍生出来的进程。比如,管道日志。

<shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><stroke joinstyle="miter"></stroke><formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></formulas><path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></path><lock aspectratio="t" v:ext="edit"></lock></shapetype><shape id="_x0000_i1025" style="WIDTH: 42pt; HEIGHT: 31.5pt" type="#_x0000_t75"><imagedata o:title="注意" src="file:///D:/DOCUME~1/winda/LOCALS~1/Temp/msohtml1/01/clip_image001.jpg"></imagedata></shape>
如果CGI进程不是Web服务器的uid启动的,那么这个指令将限制服务器自己能够创建的进程数目。此种情况将在error_log中以“cannot fork进行记录。

8ThreadStackSize

ThreadStackSize指令用来处理客户端连接的线程使用的栈尺寸(字节)。其语法格式为:ThreadStackSize size,在NetWare系统中默认值为65 536;其他系统中等于操作系统默认值。
ThreadStackSize指令设置了处理客户端连接(包括调用模块以协助处理)的线程允许使用的最大栈尺寸(字节)。在大多数情况下,操作系统默认的栈尺寸很合理,但是在某些情况下,需要调整这个值。如,在默认栈尺寸较小的平台上(比如HP-UX),Apache可能会在使用一些需要较大栈尺寸的第三方模块时崩溃。这样的问题可以通过将ThreadStackSize设置为一个较大的值来解决。这种调整应当仅仅在第三方模块提供者明确要求的情况下才需要,或者是通过诊断确定是由于栈空间太小而导致崩溃。

而在某些平台上,如果默认的栈空间大于服务器运行所需空间,那么将ThreadStackSize值降低到小于操作系统默认值可以让每个进程中允许生成的最大线程数量增加。这种类型的调整应该仅在测试环境中使用,并且对所有服务器进程进行充分的测试,因为处理某些罕见的请求需要较大的栈空间。一个很小的服务器配置变化就有可能使得当前的ThreadStackSize设置变得不合适。
分享到:
评论

相关推荐

    Apache服务器配置全攻略

    Apache服务器的设置文件位于/usr/local/apache/conf/目录下,传统上使用三个配置文件httpd.conf,access.conf和srm.conf,来配置Apache服务器的行为。httpd.conf提供了最基本的服务器配置,是对守护程序httpd如何运行...

    嵌入式系统中移植WEB server--BOA。带CGI编写样例

    相对PC或服务器上运行的Apache、IIS、tomcat等web server,嵌入式系统由于ram和flash空间的限制,只能运行一些对资源要求低的web server,譬如BOA和GOAHEAD。 这里以海思的Hi3516a/d芯片平台为例,对boa的移植做了...

    Linux-开启Apache的虚拟主机功能(基于IP地址、基于主机域名、基于IP:端口号)

    无法实现硬件资源隔离,仅能限制硬盘的使用空间大小。 Apache的虚拟主机功能是服务器基于用户请求的不同ip地址、主机域名、端口号,实现提供多个网站同时为外部提供访问服务的技术。【用户请求的资源不同,最终获取...

    华盾服务器管理专家 3.0.3.78.rar

    华盾服务器管理专家是一款服务器日常维护管理软件,集华盾独创的“WEB一站式管理”、用户权限管理、信息管理管理、性能管理管理、网站安全管理、主机维护管理、网站备案管理、网站维护管理、网络防火墙管理、系统...

    企业级Linux服务攻略

    7.3 Apache常规服务器配置 7.3.1 主配置文件httpd.conf 7.3.2 根目录设置(ServerRoot) 7.3.3 超时设置 7.3.4 客户端连接数限制 7.3.5 设置管理员邮件地址 7.3.6 设置主机名称 7.3.7 设置文档目录 7.3.8 设置首页 ...

    集群好书《高性能Linux服务器构建实战》 试读章节下载

    2.3.3 Varnish对应多台Web服务器的配置实例 2.4 运行Varnish 2.4.1 varnishd指令 2.4.2 配置Varnish运行脚本 2.4.3 管理Varnish运行日志 2.5 管理Varnish 2.5.1 查看Varnish进程 2.5.2 查看Varnish...

    PHP和MySQL Web开发第4版pdf以及源码

    16.5.3 Web服务器配置 16.5.4 Web应用的商业主机服务 16.6 数据库服务器的安全性 16.6.1 用户和权限系统 16.6.2发送数据至服务器 16.6.3 连接服务器 16.6.4 运行服务器 16.7 保护网络 16.7.1 安装防火墙 16.7.2使用...

    PHP和MySQL WEB开发(第4版)

    16.5.3 Web服务器配置 16.5.4 Web应用的商业主机服务 16.6 数据库服务器的安全性 16.6.1 用户和权限系统 16.6.2发送数据至服务器 16.6.3 连接服务器 16.6.4 运行服务器 16.7 保护网络 16.7.1 安装防火墙 16.7.2使用...

    PHP和MySQL Web开发第4版

    16.5.3 Web服务器配置 16.5.4 Web应用的商业主机服务 16.6 数据库服务器的安全性 16.6.1 用户和权限系统 16.6.2发送数据至服务器 16.6.3 连接服务器 16.6.4 运行服务器 16.7 保护网络 16.7.1 安装防火墙 16.7.2使用...

    Siebel 性能微调指南 (中文版)

    通过高速缓存节省 AOM 服务器资源 59 改进通讯配置的性能 59 配置会话通讯的日志 60 改进会话连接的可用性 61 改进屏幕弹出性能 61 改进 Siebel CTI Connect 的屏幕弹出性能 62 复审创建活动对性能造成的影响 62 ...

    TCP/IP技术大全(中文PDF非扫描版)

    还介绍了如何使用TCP/IP应用程序,包括远程登录、FTP、Web浏览等。 目 录 译者序 前言 第一部分 TCP/IP基础 第1章 开放式通信模型简介 1 1.1 开放式网络的发展 1 1.1.1 通信处理层次化 2 1.1.2 OSI参考模型 3 1.1.3...

    TCP-IP技术大全

    还介绍了如何使用TCP/IP应用程序,包括远程登录、FTP、Web浏览等。 目 录 译者序 前言 第一部分 TCP/IP基础 第1章 开放式通信模型简介 1 1.1 开放式网络的发展 1 1.1.1 通信处理层次化 2 1.1.2 OSI参考模型 3 ...

    网站建设硬件设计方案.docx

    使用硬件设备负载均衡器,将网络流量均衡的分担到WEB服务器集群各节点服务器,保障平台服务器资源均衡的使用。 采用专业磁盘阵列,实现图片和关键数据的读取和存储 数据库服务器和图片服务器后端分别接入光纤磁盘...

    RED HAT LINUX 6大全

    第9章 Apache服务器 155 9.1 服务器安装 155 9.1.1 从RPM安装 156 9.1.2 自己构造源代码 156 9.2 服务器运行配置的设置 157 9.2.1 编辑httpd.conf文件 158 9.2.2 .htaccess文件和访问限制 160 9.3 虚拟主机 161 ...

    TCP/IP教程TCP/IP基础

    20.2.3 配置名字服务器地址 217 20.2.4 配置邮件服务器地址 217 20.2.5 注册域名 218 20.3 IP配置 218 20.4 配置路由表 218 20.5 异种协议的IP封装 219 20.6 小结 220 第21章 Windows 98 221 21.1 Windows 98网络...

    TCP/IP技术大全

    23.8.4 配置DNS与WINS服务器的连 接 259 23.8.5 增加辅助名字服务器 259 23.9 FTP和HTTP服务 259 23.10 TCP/IP打印服务 259 23.10.1 安装TCP/IP打印服务 259 23.10.2 安装LPR服务 260 23.11 Windows 2000新特性 260 ...

    TCP/IP详解

    20.2.3 配置名字服务器地址 217 20.2.4 配置邮件服务器地址 217 20.2.5 注册域名 218 20.3 IP配置 218 20.4 配置路由表 218 20.5 异种协议的IP封装 219 20.6 小结 220 第21章 Windows 98 221 21.1 Windows 98网络...

    php网络开发完全手册

    1.4.5 Apache的配置文件httpd.conf与 1.4.5 .htaccess的简介 13 1.4.6 PHP的配置文件php.ini的简介 13 1.4.7 PHP常用参数的配置 14 1.5 几种综合网络服务器系统的安装 14 1.5.1 XAMPP 14 1.5.2 WAMP 16 1.5.3 ...

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    6.2.2 移动端工程资源布局 35 6.3 认我测在线认证检测系统的主要功能实现 36 6.3.1用户查询 36 6.3.2订单操作 37 6.3.3个人信息维护 37 6.4.系统功能测试 38 6.4.1 首页功能模块 38 6.4.2 订单功能模块 38 6.4.3 ...

Global site tag (gtag.js) - Google Analytics