httpd 2.2常见配置
要配置http服务的配置文件,先备份一下,养成良好习惯,如果误操作导致http服务起不来,就可以将备份的主配置文件重新覆盖一下
httpd配置文件的组成:有三大部分组成,其实配置文件里面的内容放的顺序没有规定,之所以把它划分为三部分是为了查看更加清晰
# grep "Section" /etc/httpd/conf/httpd.conf
### Section 1: Global Environment 全局配置
### Section 2: 'Main' server configuration 主服务器配置
### Section 3: Virtual Hosts 虚拟主机
配置格式:directive value
directive: 不区分字符大小写
value: 为路径时,是否区分大小写,取决于文件系统
了解http服务的配置文件是学好http服务的基础,下面我们就一起来看一下http服务的配置文件有哪些功能
-
解决启动httpd服务时报错的问题
在启动http服务时,总会有一些错误,如图:
修改httpd服务的配置文件
vim /etc/httpd/conf/httpd.conf,进入到配置文件之后搜索ServerName,然后按照格式随便添加一个域名就行了
然后再重启服务,这样就没有报错了
2、显示服务器版本信息
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-virtualhostbasis.
After version 2.0.44, this directive also controls the information presented by the ServerSignaturedirective.
建议使用:ServerTokens Prod,这时因为别人可以通过远程来查看你的服务器版本信息,知道了你的服务器版本信息,就可以针对你的服务器版本来攻击你,使用了Prod,就会隐藏你的服务器版本信息
curl -I 192.168.10.135 可以显示服务器版本信息
修改版本信息(修改配置文件)
vim /etc/httpd/conf/httpd.conf,进入到配置文件后,搜索ServerTokens,如图:
改完之后,在重新加载配置文件,service httpd reload,再次查看服务器版本信息
服务器版本隐藏
3.修改监听的IP和Port
Listen [IP:]PORT
(1) 省略IP表示为本机所有IP
(2) Listen指令至少一个,可重复出现多次
Listen 80
Listen 8080
在httpd服务的配置文件当中,监听的端口默认为80端口,你也可以人为的修改端口,比如修改成9527端口
重新加载httpd服务service httpd reload,再查看一下端口号ss -ntl
没有80端口,此时监听http服务的是9527端口,此时你在访问时就要指定端口号了,不然会访问失败
当然你也可以将改端口号绑定在指定的本机IP地址上,不指定就默认绑定在本机的所有IP地址上,如图:将80端口绑定在本机的192.168.10.135上,将9527端口绑定在172.17.0.182上
然后再重新加载httpd服务,查看端口号
这样别人访问时就必须指定端口号了,因为192.168.10.135绑定在80端口上,不指定就默认为80端口,所以能访问成功,而172.17.0.182绑定在9527端口上,这时你不指定就不能访问了
示例:
Listen 192.168.1.100:8080
Listen 80
查看服务对应的端口
4.持久连接
Persistent Connection:连接建立,每个资源获取完成后不会断开连接,而是继续等待其它的请求完成,默认关闭持久连接
断开条件:数量限制:100
时间限制:以秒为单位,httpd-2.4 支持毫秒级
副作用:对并发访问量较大的服务器,持久连接功能会使用有些请求得不到响应
折衷:使用较短的持久连接时间
设置:KeepAlive On|Off
KeepAlive Timeout15
MaxKeepAlive Requests100
测试:telnet WEB_SERVER_IP PORT
GET /URL HTTP/1.1
Host: WEB_SERVER_IP
如果不配置http服务配置文件的话,默认只能访问一个资源,就断开连接
在http服务配置文件将KeepAlive off改为KeepAlive on
再去访问资源时就能够连续访问多个资源,而不断开连接
5、MPM(Multi-Processing Module)多路处理模块
prefork, worker, event(试验阶段)
httpd-2.2不支持同时编译多个模块,所以只能编译时选定一个;rpm安装的包提供三个二进制程序文件,分别用于实现对不同MPM机制的支持
确认方法:
psaux | grep httpd
默认为/usr/sbin/httpd, 即prefork模式
查看静态编译的模块
httpd -l或httpd.worker -l
查看静态编译及动态装载的模块
httpd –M或httpd.worker -M
动态模块路径
/usr/lib64/httpd/modules/动态模块路径
更换使用的httpd程序:
vim /etc/sysconfig/httpd
HTTPD=/usr/sbin/httpd.worker
重启服务生效
pstree -p|grep httpd查看进程和线程
prefork的默认配置:
<IfModule prefork.c>
StartServers 8 开启的服务器(表现为开启了http服务,运行了8个httpd主程序)
MinSpareServers 5 最小空闲服务器
MaxSpareServers 20 最大空闲服务器
ServerLimit 256 最多进程数,最大20000
MaxClients 256 最大并发
MaxRequestsPerChild 4000 子进程最多能处理的请求数量。在处理MaxRequestsPerChild 个请求之后,子进程将会被父进程终止,这时候子进程占用的内存就会释放(为0时永远不释放)
</IfModule>
worker的默认配置:
<IfModule worker.c>
StartServers 4
MaxClients 300
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0 无限制
</IfModule>
将来开启了http服务就会运行4个httpd.worker程序,每个主程序包含25个线程,所以总共有100个线程,但是支持最多的空闲线程只有75个,所以要杀死一个httpd.worker程序,所以当你开启了http服务,就只有3个httpd.worker程序运行
测试性能
ab -c 100 -n 1000 http://192.168.10.135/a.jpg总共1000个请求访问a.jpg,并发同时能够访问100个,注意:访问的页面尽量大一些,不然无法测试性能
ll /var/www/html
1.测prefork,将主程序改为httpd
经过几次测试,prefork每秒能够处理的次数大约为520次
2.测试worker,将主程序改为httpd.worker
经过几次测试,worker每秒能够处理的请求次数大约为512次
由此可以看出prefork和work的性能差不多
更多详情见请继续阅读下一页的精彩内容: http://www.linuxidc.com/Linux/2017-10/147903p2.htm