一、安装httpd服务
CentOS6 默认安装httpd2.2版本
CentOS7 默认安装httpd2.4版本
# yum install httpd
二、安装后相关文件说明
配置文件:
/etc/httpd/conf/httpd.conf /etc/httpd/conf.d/*.conf
服务脚本:
/etc/rc.d/init.d/httpd
脚本的配置文件:/etc/sysconfig/httpd
主程序文件:
/usr/sbin/httpd /usr/sbin/httpd.event /usr/sbin/httpd.worker
日志文件目录:
/var/log/httpd
access_log: 访问日志
error_log:错误日志
站点文档目录:
/var/www/html
模块文件路径:
/usr/lib64/httpd/modules
三、常用配置
打开主配置文件:
vim /etc/httpd/conf/httpd.conf
1. 修改监听的IP和Port
Listen [IP:]PORT
省略ip表示监听所有ip,listen可重复出现多次
实例: # Listen 80 # Listen 192.168.1.103:8080
2. 持久连接
Persistent Connection: 每个连接获取资源完成后不会断开连接,而是继续等待其他的请求完成
如何断开?
数量限制: 默认100
时间限制: 可配置
缺陷: 对并发访问量较大的服务器,持久连接功能会使有些连接得不到响应
折中解决办法: 使用较短的持久连接时间
Note: httpd-2.4版本支持毫秒级持久时间
开启或关闭持久连接:
KeepAlive On|Off //打开或关闭持久连接
MaxKeepAliveRequests # //最大持久连接数
KeepAliveTimeout # //持久连接超时时长
实例: # telnet 102.168.1.103 80 # GET / HTTP/1.1 # Host: 192.168.1.103
3. MPM
Multipath Process Module: 多道处理模块
有三种模型:
prefork: 多进程模型,每个进程响应一个请求
一个主进程:负责生成n个子进程,子进程也称为工作进程,每个子进程处理一个用户请求,即便没有用户请求,也会预先生成多个空闲进程,随时等待请求到达;最大不超过1024个
worker: 多线程模型(多进程生成,一个进程生成多个线程),每个线程响应一个请求
event: 事件驱动模型,一个线程响应多个请求
查看静态编译的模块 # httpd -l
查看静态编译及动态装载的模块
# httpd -M
更换使用的httpd程序 # vim /etc/sysconfig/httpd # HTTPD=/usr/sbin/httpd.worker
重启服务生效
prefork的配置:
<IfModule prefork.c> StartServers 8 # 服务启动时启动多少个进程 MinSpareServers 5 # 最少空闲进程数 MaxSpareServers 20 # 最大空闲进程数 ServerLimit 256 # 为maxclients所准备的在其服务器生命周期内所允许的最大值,进程数量最大值 MaxClients 256 # 服务器端最多允许启动多少个进程,也即是服务器端最多允许多少个客户端同时请求资源 MaxRequestsPerChild 4000 # 一个进程最多响应多少次的请求 </IfModule>
worker的配置:
<IfModule worker.c> StartServers 4 # 服务器启动时启动多少个进程 MaxClients 300 # 服务器端启动的最大线程数 MinSpareThreads 25 # 最少空闲线程数 MaxSpareThreads 75 # 最大空闲线程数 ThreadsPerChild 25 # 每个进程所能够启动的线程数 MaxRequestsPerChild 0 # 每个线程所能够响应的最大请求数量,0表示不受限制 </IfModule>
4. DSO 动态共享对象,支持模块动态装卸载
LoadModule <mod_name> <mod_path>
/etc/httpd/modules --> /usr/lib64/httpd/modules
5. 定义'Main' server的文档页面路径
DocumentRoot指向的路径为URL路径的起始位置
DocumentRoot "/var/www/html"
实例: 主配置文件中修改: # DocumentRoot "/www/htdocs" # Directory "/www/htdocs">
6. 站点访问控制
可基于两种类型的路径指明对那些资源进行访问控制
文件系统路径:
<Directory ""></Directory> 对目录中所有文件控制
<File ""></File> 对单个文件控制
<FileMatch ""></FileMatch> 对模式匹配的文件进行控制,最好不用
URL路径:
<Location ""></Location>
访问控制机制:
基于来源地址
基于账号
7. Directory中基于来源地址实现访问控制
(1)Options
所有可用特性:Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
Indexes: 索引
实例:
默认是由indexes配置,如果在documentroot目录下没有index.html或者index.html.var
访问时会列出文件列表
不启用Indexes: -Indexes
FollowSymlinks: 允许跟踪符号链接文件
实例:
ln -sv /etc/issue /www/htdocs/issue.html
浏览器访问: 192.168.1.103/issue.html可以访问
如果要去掉FollowSymlinks: 前面加个-号
options里面什么选项都不要可以设置为none
(2)基于来源地址的访问控制机制
Order: 检查次序
Order allow,deny: 相当于建立白名单
Order deny,allow: 相当于建立黑名单
Allow from
Deny from
来源地址:
IP
NetAddr
192.168.1 192.168.1.0 192.168.1.0/24 192.168.1.0/255.255.255.0
实例: Order allow,deny Deny from 192.168.1.110 Allow from 192.168.1
测试: elinks -dump http://192.168.1.102 //当前主机访问自己是可以的
8. 定义默认主页面
DirectoryIndex index.html index.html.var
9. 日志设定