热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

apache服务器全局配置详解,介绍很多关于服务器相关的一些知识,用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显示的指定一个主机名和端口号。
如果使用的是基于域名的虚拟主机,在段中的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设置变得不合适。


推荐阅读
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • 本文介绍了django中视图函数的使用方法,包括如何接收Web请求并返回Web响应,以及如何处理GET请求和POST请求。同时还介绍了urls.py和views.py文件的配置方式。 ... [详细]
  • FineReport平台数据分析图表显示部分系列接口的应用场景和实现思路
    本文介绍了FineReport平台数据分析图表显示部分系列接口的应用场景和实现思路。当图表系列较多时,用户希望可以自己设置哪些系列显示,哪些系列不显示。通过调用FR.Chart.WebUtils.getChart("chartID").getChartWithIndex(chartIndex).setSeriesVisible()接口,可以获取需要显示的系列图表对象,并在表单中显示这些系列。本文以决策报表为例,详细介绍了实现方法,并给出了示例。 ... [详细]
  • 本文介绍了深入浅出Linux设备驱动编程的重要性,以及两种加载和删除Linux内核模块的方法。通过一个内核模块的例子,展示了模块的编译和加载过程,并讨论了模块对内核大小的控制。深入理解Linux设备驱动编程对于开发者来说非常重要。 ... [详细]
  • 本文介绍了如何使用Express App提供静态文件,同时提到了一些不需要使用的文件,如package.json和/.ssh/known_hosts,并解释了为什么app.get('*')无法捕获所有请求以及为什么app.use(express.static(__dirname))可能会提供不需要的文件。 ... [详细]
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
author-avatar
手机用户248覀9795477
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有