首页服务器教程Apache配置参数说明以及工作模式

Apache配置参数说明以及工作模式

2025-01-06 882

Apache httpd 可根据站点的特殊要求进行定制。对于追求更高伸缩性的站点,可选择使用线程化的 MPM,如 worker 或 event 模式;对于注重可靠性或需要与旧软件兼容的站点,则可选用 prefork 模式。

一、Apache基本配置参数

1、ServerRoot:此参数指定 Apache 的主目录,它是 Apache 服务器的基础目录,存储着服务器运行所需的重要文件和资源。

2、Listen:用于设定 Apache 服务器监听的端口号,通过该端口接收客户端的连接请求。

3、LoadModule:该参数的功能是加载各种动态模块,这些模块可以扩展 Apache 的功能,以满足不同的服务需求。

4、User/Group:明确 Apache 进程的执行者,即负责执行 Apache 进程的用户和用户组。

5、ServerAdmin:在服务器向客户端返回错误信息时,会包含此邮件地址,因此建议填写有效的邮箱地址,以便接收相关信息,方便后续处理问题。

6、ServerName:代表服务器的域名,一般情况下,此参数无需特别配置。

7、DocumentRoot:它是网站的根目录,也就是 Apache 运行项目的根地址,所有的网站文件通常都存储在此目录下。

Apache配置参数说明以及工作模式

二、Option指令详解

Option 指令是 Apache 配置文件中一个常用指令,可应用于 Apache 服务器核心配置(server config)、虚拟主机配置(virtual host)、特定目录配置(directory)以及.htaccess 文件中。其主要功能是控制特定目录启用哪些服务器特性,具体选项如下:

1、Options +Indexes:启用此选项后,用户可在网页上查看项目某个目录下的所有文件,例如访问 /index 等同于访问 index.php 或 index.html。

2、Options +FollowSymLinks:允许服务器在该目录中使用符号链接。但需注意,若该配置项处于 <Location> 配置段内,将被忽略。

3、Options +All:为默认设置,会开启除 MultiViews 外的服务器特性,为用户提供更多功能。

4、Options +None:此选项将不启用任何服务器特性。

5、Options +ExceCGI:允许使用 mod_cgi 模块执行 CGI 脚本,为服务器增添 CGI 脚本执行功能。

6、Options +MultiViews:通过 mod_negotiation 模块,实现内容协商的“多重视图”功能,能自动选取最符合客户端要求的文件。

7、Options +SymLInksIfOwnerMatch:仅当符号连接和符号连接指向的目标文件或目录的所有者为同一用户时,才会使用符号连接;在 <Location> 配置段中使用时,会被忽略。

8、Options +includes:允许使用 mod_include 模块提供的服务器端包含功能,提升服务器功能的灵活性。

此外使用“+”号的选项将强制覆盖当前可选项设置,而使用“-”号的选项将强制从当前可选项设置中去除相应选项。

三、访问控制配置

1、Allow from all:允许所有具有相应权限的用户访问 Apache 的运行目录。

2、Require all granted:同样是允许所有有权限的用户访问 Apache 的运行目录,确保访问权限的开放。

3、AllowOverride None/all:该指令用于控制用户对目录配置文件(.htaccess)的修改权限,通常不建议开启,以保障服务器的安全性和稳定性。

4、Order allow,deny:Apache 将遵循 Order 中的最后一条规则。例如,若先设置了 allow all 但随后 deny 某个 IP,最终会拒绝该 IP 的访问。

四、其他重要配置元素

1、<IfModule> 容器:该容器会在相应模块加载时,执行其内部的内容,为服务器的模块化配置提供便利。

2、DirectoryIndex index.html index.php:此指令确定目录索引文件的优先级,从左至右依次递减,即优先访问 index.html。

3、<Files >:提供基于文件名的访问控制,其处理顺序是在 <directory> 段和.htaccess 文件之后,<Location> 段之前。它可嵌入 <Directory> 段,以限制作用的文件范围,同时也可应用于.htaccess 文件,实现文件层面的访问控制。

Apache配置参数说明以及工作模式

Apache配置参数说明以及工作模式

五、日志相关配置

错误日志的存放位置:指定错误日志的存储位置,方便管理员查找和分析服务器运行过程中出现的错误信息。

1、分割日志的操作:确保日志文件的合理分割,以便于管理和维护。

2、LogLevel:该参数用于调整错误日志中信息的详细程度,包含以下几个级别:

emerg:表示系统处于紧急状态,无法正常使用;

alert:表明必须立即采取相应措施的情况;

crit:代表发生了致命错误;

error:意味着出现了错误情况;

warn:属于警告情况,需要引起注意;

notice:一般重要的信息;

info:记录普通信息,有助于对服务器的日常运行状态进行监控;

debug:用于调试目的,包含详细的调试信息。

当指定了某个日志级别时,高于该级别的信息都将被记录,以便管理员根据不同需求进行监控和维护。

六、httpd-vhosts.conf配置文件参数

Apache配置参数说明以及工作模式

1、ServerAdmin:设置网页管理员的邮箱或其他联系方式,方便用户联系管理员解决相关问题。

2、DocumentRoot:指定网站的存放位置,确定网站文件的存储路径。

3、ServerName:配置网站的虚拟域名,使网站在网络上具有独特的标识。

4、ErrorLog:确定错误文件的存放位置和名称,方便对错误信息进行收集和分析。

5、CustomLog:设置访问日志的存放位置和名称,用于记录用户的访问信息,以便进行访问分析和统计。

七、Apache的三种工作模式(MPM)

Web 服务器 Apache 具有三种稳定的多进程处理模块(Multi-Processing Module,MPM)模式,分别是 prefork、worker 和 event,它们体现了 Apache 的发展演变。

目前使用的是 event 模式,在 Apache 的不同版本中,其默认模式有所不同:早期 2.0 版本默认使用 prefork,2.2 版本使用 worker,2.4 版本使用 event。在进行 configure 配置编译参数时,可通过 –with-mpm=prefork|worker|event 来指定编译为某一种 MPM,也可通过 –enable-mpms-shared=all 编译支持三种模式。此操作会在 modules 目录下自动编译出三个 MPM 文件的 so 文件,随后可通过修改 httpd.conf 配置文件更改 MPM。

Apache配置参数说明以及工作模式

1、Prefork MPM

Prefork MPM 是一个非线程的、预派生的 Web 服务器。在 Apache 启动时,预先派生一定数量的子进程,这些子进程随后等待连接。这样可以减少频繁创建和销毁进程所产生的开销。每个子进程仅有一个线程,同一时间只能处理一个请求。此模式成熟稳定,能兼容新旧模块,无需考虑线程安全问题,但进程占用资源较多,会消耗大量内存,在高并发场景下性能表现不佳。

Apache配置参数说明以及工作模式

httpd.conf 中的配置方式:

Apache配置参数说明以及工作模式

  • StartServers:服务器启动时建立的子进程数量,prefork 模式下默认是 5;
  • MinSpareServers:空闲子进程的最小数量,默认值为 5。若当前空闲子进程数少于此值,Apache 将以最大每秒一个的速度产生新的子进程。此参数不宜设置过大;
  • MaxSpareServers:空闲子进程的最大数量,默认是 10。若当前空闲子进程数超过此值,父进程将终止多余的子进程。此参数也不应设置过大,若设置值小于 MinSpareServers,Apache 会将其自动修改为 MinSpareServers +1 的数量;
  • MaxRequestWorkers:限定服务器同一时间内客户端最大接入请求数量,默认是 256。超过此限制的请求将进入等待队列,当有连接释放时,队列中的请求才会得到服务。若要增大此数值,必须先增大 ServerLimit。在 Apache 2.3.1 版本之前,该参数被称为 MaxClients;
  • MaxConnectionsPerChild:每个子进程在其生命周期内允许的最大请求数量,若达到此数量,子进程将结束。若设置为 0,子进程将永不结束。在 Apache 2.3.9 之前,该参数被称为 MaxRequestsPerChild。

建议将此参数设置为非零,原因如下:

  • 可防止(偶然的)内存泄漏无限扩展,避免耗尽内存;
  • 赋予进程有限的寿命,当服务器负载减轻时,有助于减少活动进程的数量,为进程提供重生机会。

2、Worker MPM

与 prefork 模式相比,worker 模式采用多进程和多线程的混合模式。启动时会先预派生若干子进程,每个子进程创建多个线程,同时包括一个监听线程,每个请求会分配给一个线程处理。由于线程共享父进程的内存空间,相比进程更为轻量,因此在高并发场景下内存占用更少,可用线程更多,性能更优。然而,一个线程出现问题可能影响同一进程内的其他线程,多个线程出现问题也仅影响 Apache 的一部分,而非全部。同时,在使用 keep-alive 长连接时,线程可能会被持续占用,直至超时才释放(此问题在 prefork 模式下也存在)。

Apache配置参数说明以及工作模式

httpd.conf 中的配置方式:

Apache配置参数说明以及工作模式

  • StartServers:服务器启动时建立的子进程数量,在 worker 模式下默认是 3;
  • ServerLimit:系统配置的最大进程数量,默认不显示,需自行添加;
  • MinSpareThreads:空闲子进程的最小线程数量,默认是 75;
  • MaxSpareThreads:空闲子进程的最大线程数量,默认是 250;
  • ThreadsPerChild:每个子进程产生的线程数量,默认是 64;
  • MaxRequestWorkers / MaxClients:限定服务器同一时间内客户端最大接入的请求数量;
  • MaxConnectionsPerChild:每个子进程在其生命周期内允许的最大请求数量,若达到此值,子进程将结束;若设置为 0,子进程将永不结束。在 Apache 2.3.9 之前,该参数被称为 MaxRequestsPerChild。

同样建议将此参数设置为非零,原因如下:

  • 可防止内存泄漏无限扩展,避免耗尽内存;
  • 为进程提供有限寿命,当服务器负载减轻时,可减少活动进程的数量,提供重生机会。

需注意,Worker 模式下同时处理的请求总数由子进程总数乘以 ThreadsPerChild 值决定,应大于等于 MaxRequestWorkers。当负载过大,现有子进程数无法满足时,控制进程会派生新的子进程。默认 ServerLimit 最大子进程总数是 16,加大时需显式声明 ServerLimit(最大值为 20000)。若显式声明了 ServerLimit,其乘以 MaxRequestWorkers 的结果必须是 ThreadsPerChild 的整数倍,否则 Apache 会自动调整为相应值。

3、Event MPM

这是 Apache 最新的工作模式,与 worker 模式相似,但解决了 keep-alive 长连接时线程资源浪费的问题。在 event 工作模式中,会有专门的线程管理 keep-alive 类型的线程,当有真实请求时,将请求传递给服务器线程,执行完毕后释放资源,极大地增强了高并发场景下的请求处理能力。

Apache配置参数说明以及工作模式

httpd.conf 中的配置方式:

Apache配置参数说明以及工作模式

event 模式的配置参数与 worker 模式完全相同,可参考 worker 模式的参数配置,此处不再赘述。

  • 广告合作

  • QQ群号:707632017

温馨提示:
1、本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。邮箱:2942802716#qq.com(#改为@)。 2、本站原创内容未经允许不得转裁,转载请注明出处“站长百科”和原文地址。

相关文章