Apache配置文件重要指令详解

写在前面



在运维的工作中很大一部分的时间都在和Web服务器打交道。当前在开源web服务器端的软件有两大巨头,其一为Apache,二为Nginx。近年来Nginx的市场占有率逐年递增。但是,作为一个合格的运维工程师,要熟练的掌握这两种服务端软件的配置。

Apache配置文件详解



httpd配置文件主要有指令和容器两种组成。容器指令一般只在容器中生效。

ServerRoot指令

ServerRoot为Apache的安装家目录,rpm安装默认为/etc/http

Listen指令

设置服务器监听的IP以及端口号,默认监听服务本机所有ip地址的80端口。

语法:Listen[ip:]port    #配置文件中可以多次使用Listen指令,但是要至少使用一次。

DocumentRoot指令

设置web服务器的资源根目录,也就是客户端访问网站的根路径。默认为/var/www/html

持久链接配置

持久链接为连接建立之后,每个资源获取完成后不会断开连接,而是继续等待其他的请求完成。断开有两个条件,数量限制和时间限制。

时间限制:在上一个数据包发送完毕,间隔一个固定时间,如果超过这个时间,连接被释放。

数量限制:如果连续请求多个资源,资源数量达到某个阈值,连接会被释放,让后重新建立连接。


KeepAlive  On   #启用持久链接

KeepAliveTimeout  15 #等待同一客户端在同一连接上的下一个请求的秒数。

KeepAliveRequests  100 #在持久连接中允许的最大请求数。设置为0,允许无限数量。

可以使用telnet 协议演示持久链接的效果。

telnet  172.18.11.6

GET  / http/1.1

host:172.18.11.6   #两次回车,构建http请求报文,如果是持久连接,在获取页面后,telnet不断开

LoadModule指令

Apache的DSO机制实现,动态的加载卸载模块,rpm安装默认启用该功能,如果编译安葬需要开启--enable-so将mod_so模块一静态方式集成在core模块中。支持的模块一般存储在SerRoot/modules目录下。加载模块时,只需把模块前面的注释取消即可,卸载反之。

语法:LoadModule模块(模块中定义,不可变更) 模块的路径名称(相对ServerRoot的路径)。


[[email protected]  conf]# httpd -l|grep mod_so #httpd为当前工作模式,查看当前版本是否支持动态加载/卸载模块

[[email protected]  conf]# httpd.worker -M  #httpd.woker为当前的工作模式,查看当前已经加载的模块

Include指令

在配置文件中有Include conf.d/*.conf 指令,系统默认加载在ServerRoot/conf.d 目录下所有以.conf结尾的配置文件。

IfModule容器

该容器中的指令只有在对应的模块被加载时才会被处理。该指令语法<IfModule [!]模块>指令<IfModule >

以<IfModuleprefork.c>为例:


<IfModule  prefork.c>  #只有在使用prefork模块时才会生效

StartServers       8   #服务启动时启动的服务进程数,除了出进程之外,开启8个子进程来服务

MinSpareServers    5   #最小空闲进程数

MaxSpareServers   20   #最大空闲进程数   (假如有200个客户端同时请求,又潮水般退去,这时空闲的200个进程不会全部被存在,而是释放至最大空闲进程数)

ServerLimit      256   #服务器进程数量最大值

MaxClients       256   #最大并发连接数

MaxRequestsPerChild  4000 #一个服务器进程最多能够响应所少次请求。一个进程处理完请求后不会被释放,而是加入空闲进程队列,一个进程最多能够被重复使用4000次,然后系统会杀掉这个进程。

</IfModule>

<IfModule  worker.c>  #使用worker.c工作模式下生效

StartServers         4     #服务启动时启动的服务进程数,又受

MaxClients         300   #最大并发连接数

MinSpareThreads     25     #最小空闲线程数,当全部线程都被用于处理请求时,系统会再次创建最小个线程等待用户请求

MaxSpareThreads     75    #最大空闲线程数,

ThreadsPerChild     25   #一个进程可以创建的线程数

MaxRequestsPerChild  0   #一个进程最多能够响应请求的最大次数,0表示无上限

</IfModule>

ServerTokens指令

显示服务器版本信息


ServerTokens  Major|Minor|Min[imal]|Prod[uctOnly]|OS|Full

ServerTokens  Prod[uctOnly]  :Server: Apache

ServerTokens  Major: Server: Apache/2

ServerTokens  Minor: Server: Apache/2.0

ServerTokens  Min[imal]: Server: Apache/2.0.41

ServerTokens  OS: Server: Apache/2.0.41 (Unix)

ServerTokens  Full (or not specified): Server: Apache/2.0.41

(Unix)  PHP/4.2.2 MyMod/1.2

This  setting applies to the entire server and cannot be

enabled  or disabled on a virtualhost-by-virtualhost basis.

After  version 2.0.44, this directive also controls the

information  presented by the ServerSignature directive.

建议使用:ServerTokens  Prod

ServerName指令

设置本机的主机名称以及端口,一般在URL的重定向中用到。

Options指令

该指令为特定目录设置的选项,语法格式:Options [+|-]选项  [[+|-] 选项]。选项有以下几种


None:不启用任何功能

All:开启除MultiViews之外的所有功能

ExecCGI:允许执行该目录下的所有CGI脚本

FollowSymlinks:允许指定目录下的文件链接到目录外的文件或者目录

Indexes:如果URL对应的目录下没有DirectoryIndex指定的首页文件,则显示该目录下的文件索引

Order指令  

控制默认访问状态以及allow和deny的次序。

Orderallow,deny 先检查允许,再检查拒绝,有冲突时拒绝优先

Orderdeny,allow  先检查拒绝,在检查允许,有冲突时允许优先


Order  deny,allow

Deny  from all 拒绝所有访问

Order  deny,allow

deny  172.18

allow  172.18.11.6

拒绝除172.18.11.6之外所有172.18网段的主机访问

支持的网络形式:

172.18

172.18.0.0

172.18.0.0/16

172.18.0.0/255.255.0.0

AllowOverride指令

设置与访问控制相关的哪些指令可以放在指定目录下的.htaccess(由AccessFileName指定)文件中,覆盖之前的配置指令,该指令只能使用在<Directory>容器中


AllowOverride  All 所有指令都有效

AllowOverride  None .htaccess文件无效

AllowOverride  AuthConfig Indexes 除了AuthConfig 和Indexes的其他指令都无法覆盖。

Directory容器

这个指令也是一种容器类型,作用于特定的文件系统目录,子目录以及目录下的内容,语法格式:<Directory dir_path>指令</Directory>。路径支持使用正则表达式的写法<Directory ~ "正则">指令</Directory>。一般用于对某些目录及文件的访问控制。

Files容器

和<Directory>类似,作用于文件,也可使用正则表达式,语法<Files [~] "文件名"></Files>

Lacation容器

定义的指令仅对特定的URL有效,语法<LacationURL>指令</Lacation>,支持正则表达式,使用~号。

ErrorLog指令

错误访问日志路径,默认为ServerRoot/logs/error_log

LogLevel指令

日志级别: debug,info, notice, warn, error, crit,alert, emerg

LogFormat指令

定义的日志格式,可以使用Apache预先设置的格式字符。语法:LogFormat日志格式 别名

Apache预定义的格式字符串。

CustomLog指令

设置客户端的访问日志以及使用何种格式的日志来记录。默认路径为ServerRoot/logs/access_log ,语法:CustomLog 文件名。

时间: 2024-10-12 23:49:52

Apache配置文件重要指令详解的相关文章

Apache配置文件httpd.conf详解

Apache的基本设置主要交由httpd.conf来设定管理,我们要修改Apache的相关设定,主要还是通过修改httpd.cong来实现.下面让我们来看看httpd.conf的内容,它主要分成3大部分:Section 1:Global EnvironmentSection 2:'Main' server configurationSection 3:Virtual Hosts[第一部分]·ServerType standalone这表示Apache是以standalone启动,也可以是inet

Apache的httpd命令详解

Apache的httpd命令详解 来源:全栈开发者 发布时间:2012-01-03 阅读次数:10965 4 httpd.exe为Apache HTTP服务器程序.直接执行程序可启动服务器的服务.本文以Apache2.2.21版本为例详细介绍该指令的各个参数及用法. 语法格式: httpd [-D name] [-d directory] [-f file]         [-C "directive"] [-c "directive"]         [-w]

(2) tomcat配置文件server.xml详解

1. 入门示例:虚拟主机提供web服务 该示例通过设置虚拟主机来提供web服务,因为是入门示例,所以设置极其简单,只需修改$CATALINA_HOME/conf/server.xml文件为如下内容即可,本文的tomcat安装在/application/tomcat下,因此$CATALINA_HOME=/application/tomcat. 其中大部分都采用了默认设置,只是在engine容器中添加了两个Host容器. <?xml version="1.0" encoding=&q

&lt;linux下sysctl指令详解&gt;

Sysctl指令是对系统核心参数的设置: 用法: -a 参数列出系统中所有核心设置 当然了这些核心的设置都是文件,存放于/proc/sys/net目录下. 举个有代表性的例子: net.ipv4.icmp_echo_ignore_all = 0      把所有的点改为 / 就可以了.   [[email protected] net]# net.ipv4.icmp_echo_ignore_all = 0 [[email protected] net]# cd ipv4/ [[email pro

Tomcat主配置文件Server.xml详解

Tomcat主配置文件Server.xml详解 1.软件版本 [[email protected] META-INF]# java -version java version "1.8.0_60" Java(TM) SE Runtime Environment (build 1.8.0_60-b27) Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode) 2.server.xml组件类别 顶级组件:位于整个配置的

Apache SSL服务器配置SSL详解

Apache SSL服务器配置SSL详解 最近想起在Apache网站配置SSL,实现网站用https访问,具体步骤如下: 1.实验环境:CentOS7 http-2.4.17.tar.gz 2..先解压Apache源码包,yum安装Apache所依赖的包 3.配置Apache 4.编译安装Apache 5.安装成功后确认安装结果 6.生成证书服务器 1)生成服务器用的私钥文件server.key 2) 生成未签署的server.csr 会提示输入一系列的参数 3)可以查看文件已经生成在当前文件夹

JavaEE学习之Maven配置文件pom.xml详解(转)

一.引言 (本文转载自:http://blog.csdn.net/longeremmy/article/details/9670619) 使用maven有一些时间了,一直没有好好将pom配置文件每个节点的意义好好了解一番.今天突然想来了解下:pom- project object model 项目对象模型.顾名思义,他是用来描述项目信息的,以及构建方式,依赖等.网上有一篇文章写的很详细,这里就借用一下,以备日后使用. 二.详解 1 <project xmlns="http://maven.

九爷带你了解 nginx 日志配置指令详解

nginx日志配置指令详解 日志对于统计排错来说非常有利的. 本文总结了nginx日志相关的配置如 access_log.log_format.open_log_file_cache.log_not_found.log_subrequest.rewrite_log.error_log. nginx有一个非常灵活的日志记录模式.每个级别的配置可以有各自独立的访问日志.日志格式通过log_format命令来定义.ngx_http_log_module是用来定义请求日志格式的. 1. access_l

Apache中https的详解及应用案例

Apache中https的详解及应用案例 一.https的简介 它是一个安全通信通道,它基于HTTP开发,用于在客户计算机和服务器之间交换信息.它使用安全套接字层(SSL)进行信息交换,简单来说它是HTTP的安全版. 它是由Netscape开发并内置于其浏览器中,用于对数据进行压缩和解压操作,并返回网络上传送回的结果.HTTPS实际上应用了Netscape的安全全套接字层(SSL)作为HTTP应用层的子层.(HTTPS使用端口443,而不是象HTTP那样使用端口80来和TCP/IP进行通信.)S