1、显示服务器版本信息
ServerTokens Major|Minor|Min[imal]|Prod[uctOnly]|OS|Full
建议使用:ServerTokens Prod(curl -I IP_HOST)
2、监听的IP和Port 和 servername
Listen [IP:]PORT
(1) 省略IP表示为本机所有IP
(2) Listen指令至少一个,可重复出现多次
Listen 80
Listen 8080
Listen 192.168.1.100:8080
servername www.abc.com.cn 域名
3、持久连接:Persistent Connection:连接建立,每个资源获取完成后不会断开连接,而是继续等待其它的请求完成,默认关闭持久连接
断开条件:时间限制:以秒为单位, 默认5s,httpd-2.4 支持毫秒级
副作用:对并发访问量大的服务器,持久连接会使有些请求得不到响应
折衷:使用较短的持久连接时间
设置:KeepAlive On|Off
KeepAliveTimeout 15
MaxKeepAliveRequests 100 #与keepalive on有关,长连接最多接受多少个请求。请求数量大于改值则自动断开。
测试:telnet WEB_SERVER_IP PORT
GET /test.index HTTP/1.1
Host: WEB_SERVER_IP
4、DSO: Dynamic Shared Object 加载动态模块配置,不需重启即生效
yum 安装方式:
/etc/httpd/conf/httpd.conf
Include conf.modules.d/*.conf模块配置文件路径
动态模块路径: /usr/lib64/httpd/modules/
make安装方式:
配置指定实现模块加载格式:
LoadModule <mod_name> <mod_path> 模块文件路径可使用相对路径:相对于ServerRoot(默认/etc/httpd)
示例:LoadModule auth_basic_module modules/mod_auth_basic.so
查看静态编译的模块:httpd -l
查看静态编译及动态装载的模块:httpd –M
注意:1.静态模块只有在编译安装时才能添删。动态模块是可以在配置文件中添删,添加#号就是删除(禁用)的意思。
5、MPM( Multi-Processing Module)多路处理模块
prefork, worker, event
切换使用的MPM
/etc/httpd/conf.modules.d/00-mpm.conf
启用要启用的MPM相关的LoadModule指令即可
prefork的配置:
StartServers 8 #指定服务器在启动时建立的子进程数量
MinSpareServers 5 #指定空闲子进程的最小数量,默认为5,假如当前空闲子进程数少于MinSpareServers,那么apache将以最大每秒一个速度产生新的子进程。此参数不宜过大
MaxSpareServers 20 #指定空闲子进程的最大数量,默认为20,假如当前有超过 MaxSpareServers数量的空闲子进程,那么父进程将杀死多余的子进程。此参数不宜过大
ServerLimit 256 #最多进程数,最大值 20000-200000
MaxClients 256 #最大的进程并发连接数.
ServerLimit:这个参数是控制apache的进程总数的,那为什么会有两个参数控制apache的进程总数呢?这个参数在apache1的时代是没有的,因为那个时候有个256M内存的服务器就很厉害了。
后来apache2的时代到来,服务器的硬件也得到升级。很多服务器都是4G内存,还有很多比4G内存大的服务器出现。apache1的时代只有一个MaxClients参数控制进程总数就够了,而这个参数最大值是256,定死了。
但是到了apache2的时代必须调整ServerLimit值大于256才能使MaxClient支持大于256的值。
MaxClients:apache最大的进程数。apache1的时代只有一个MaxClients参数控制进程总数就够了,而这个参数最大值是256定死了。但是到了apache2的时代必须调整ServerLimit值大于256才能使MaxClient支持大于256的值。
MaxRequestsPerChild 4000 单个子进程最多能处理的请求数量。
在处理MaxRequestsPerChild 个请求之后,子进程将会被父进程终止,这时候子进程占用的内存就会释放(为0时永远不释放),
1.能防止内存泄漏无限进行,从而耗尽内存。
2.给进程一个有限寿命,从而有助于当服务器负载减轻的时候减少活动进程的数量。
worker的配置:
StartServers 4 #服务器进程启动时候启动多少空闲进程
MaxRequestWorkers 150 #时处理的最大连接数的限制。任何超过限制的连接尝试通常都会排队。
MaxClients 300 #最大并发响应数300
MinSpareThreads 25 #最小空闲线程数25
MaxSpareThreads 75 #最大空闲线程数75
ThreadsPerChild 25 #每个进程启动25 个线程
MaxRequestsPerChild 0 #每个子进程在生命周期内所能够服务的最多请求个数,注意,“0”表示的是不限定请求个数;
6、定义'Main' server的文档页面路径
文档路径映射:DocumentRoot “/path”
DocumentRoot指向的路径为URL路径的起始位置
DocumentRoot "/var/www“
<Directory "/var/www">
Require all granted #7的新特性。对路径授权,否则更改了路径DocumentRoot都没有用。
</Directory>
7、定义站点主页面
<IfModule dir_module>
DirectoryIndex index.html
</IfModule>
7、错误页面路径
<virtualhost *:81>
documentroot /data/asite
<Directory "/data/asite">
Require all granted
</Directory>
<LocationMatch "^/+$"> # "^/+$" 行首行尾间一个以上/
Options -Indexes
ErrorDocument 403 /.noindex.html
</LocationMatch>
Alias /.noindex.html /data/error/index.html
<Directory /data/error>
AllowOverride None
Require all granted
</Directory>
echo error page > /data/error/index.html
ErrorDocument 404 /404.html:
echo 404.page > /data/asite/404.html #虚拟机主机的
#ErrorDocument 402 http://www.baidu.com
</virtualhost>
10、日志设定
日志类型:访问日志 错误日志
错误日志:ErrorLog logs/error_log
LogLevel 可选值: debug, info, notice, (默认)warn,error, crit, alert, emerg
访问日志:
定义日志格式:LogFormat format strings
LogFormat "%h %l %u %{%F %T}t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" log_NAME
使用日志格式: CustomLog logs/access_log log_NAME
%h 客户端IP地址
%l 远程用户,启用mod_ident才有效,通常为减号“-”
%u 验证(basic,digest)远程用户,非登录访问时,为一个减号“-”
%t 服务器收到请求时的时间
%r First line of request,即表示请求报文的首行;记录了此次请求的“方法”,“URL”以及协议版本
%>s 响应状态码
%b 响应报文的大小,单位是字节;不包括响应报文http首部(数据大小)
%{Referer}i 请求报文中首部“referer”的值;即从哪个页面中的超链接跳转至当前页面的(防盗链技术,百度之类的地址可能是跳转或推广)
%{User-Agent}i 请求报文中首部“User-Agent”的值;即发出请求的应用程序
11、设定默认字符集
AddDefaultCharset UTF-8 此为默认值
中文字符集:GBK, GB2312, GB18030
12、定义路径别名
网站路径有三种: 1.DocumentRoot 2.软链接 3.Alias
格式:Alias /URL/ "/PATH/"
alias /bbs/ /app/path/
<directory /app/path/>
Require all granted
</directory>
DocumentRoot "/www/htdocs"
http://www.magedu.com/download/bash.rpm ==>/www/htdocs/download/bash.rpm
Alias /download/ "/rpms/pub/"
http://www.magedu.com/download/bash.rpm ==>/rpms/pub/bash.rpm
15、ServerSignature On | Off | EMail
当客户请求的网页并不存在时,服务器将产生错误文档,如果打开了ServerSignature选项,错误文档的最后一行将包含服务器的名字、Apache的
版本等信息,如果不对外显示这些信息,就可以将这个参数设置为Off设置为Email,将显示ServerAdmin 的Email提示
18、mod_deflate模块压缩页面优化传输速度
适用场景:
(1) 节约带宽,额外消耗CPU;同时,可能有些较老浏览器不支持
(2) 压缩适于压缩的资源,例如文本文件
LoadModule deflate_module modules/mod_deflate.so 压缩模块httpd -M
SetOutputFilter DEFLATE 启用压缩(默认启用)
AddOutputFilterByType DEFLATE text/html 压缩
压缩页面类型:text/html、application/xhtml+xml、text/xml、application/xml、application/x-javascript、text/javascript、、text/css
压缩等级:Level of compression (Highest 9 - Lowest 1)
DeflateCompressionLevel 9
排除特定旧版本的浏览器,不支持压缩
#Netscape 4.x 只压缩text/html
BrowserMatch ^Mozilla/4 gzip-only-text/html
#Netscape 4.06-08三个版本 不压缩
BrowserMatch ^Mozilla/4\.0[678] no-gzip
#Internet Explorer标识本身为“Mozilla / 4”,但实际上是能够处理请求的压缩。如果用户代理首部匹配字符串“MSIE”(“B”为单词边界”),就关闭之前定义的限制
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html