HTTP介绍配置
httpd的特性
高度模块化:core+modules
dso:Dynamic Shared Object(动态共享对象)
MPM:多路处理模块(实现多种I/O模型)
prefork:
多进程模型,每个进程响应一个请求。(一个主进程,负责生成多个子进程。每个子进程处理用户请求。假若没有用户请求,也会生成一定数量的空闲进程)
主进程master负责监听端口、子进程负责处理master传过来的用户请求
worker
多进程多线程(一个进程生成多个线程)。一个线程响应一个请求
event
事件驱动,一个线程响应多个请求
环境
1、CentOS6
2、通过rpm安装的httpd
配置文件
/etc/httpd/conf/httpd.conf
/etc/httpd/conf.d/*.conf
服务脚本
/etc/init.d/httpd
脚本配置文件/etc/sysconfig/httpd
主程序文件(默认是prefork模式)
/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
常用配置
1、Listen -->>修改监听的IP和端口,Listen可以出现多次
2、持久连接(http1.1默认) -->>KeepAlive on|off
Persisten Connection :连接建立,每个资源获取完成后不会断开
如何断开
数量限制:100个(获取到100个资源,断开) -->>MaxKeepAliveRequests
时间配置 5s -->>KeepAliveTimeout
副作用:对并发较大的服务器,持久连接功能会使有些请求不到响应
3、MPM,多路处理模块(httpd -l 查看当前是以什么模式运行的)
......
httpd-2.2不支持同时编译多个模块,只能编译时选定一个
查看静态和动态加载的模块 -->> httpd -M
4、DSO
配置指令实现模块加载
LoadModule <mod_name><mod_path>
5、定义网站"根"路径
DocumentRoot -->>指向的路径为URL路径的起始位置
DocumentRoot "/var/www/html" -->>http://host:port/index.html
6、站点访问控制
文件系统控制
<Directory "/var/www/html"> #对整个目录控制
<File ""> #对单个文件进行控制
<FileMatch ""> #不建议,耗资源
URL控制
<Location "">
访问控制机制:
基于来源地址
基于账号
7、Directory中 ‘基于来源地址’ 进行控制
a.Options
None:全部不启用
Indexes:索引,要关
FollowSymlinks:允许访问符号链接到的文件
b.AllowOverride:None
c.
Order allow,deny #相当于白名单
Order deny,allow #黑名单
Allow from .. #IP|NetAddr
Deny from ..
基于用户的访问控制
认证类型:
a、basic #明文
1、定义安全域
<Directory "/var/www/htdocs">
AuthName "This Domain required user and password"
AuthType basic
AuthUserFile "/etc/httpd/conf/.htpasswd" #需要htpasswd生成
require valid-user
2、提供账号和密码存储
htpasswd -c -m /etc/httpd/conf/.htpasswd user01
htpasswd -m /etc/httpd/conf/.htpasswd user02
更多参考点这里
b、digest #加密
8、定义默认主页面
DirectoryIndex index.html index.html.var
9、日志定义
错误日志 ErrorLog logs/error_log
LogLevel warn
访问日志
CustomLog logs/access_log combined
LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combined
10、路径别名
Alias /wps/ "/var/www/html/bbs/" #访问wps的首页,实际访问的路径是bbs的路径
11、设定默认字符集
AddDefaultCharset UTF-8
12、虚拟主机,三种实现方案
基于IP
基于port
基于hostname **常用
注意:使用虚拟主机,先禁用中心主机,即DocumentRoot
每个虚拟主机都有专用配置
<VirtualHost "IP:PORT">
ServerName
DocumentRoot
ServerAlias
ErrorLog
CustomLog
13、内置的status页面
SetHandler server-status
Order deny,allow
Deny from all
Allow from .example.com
#####################################################################################
httpd日志格式
LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combined
%h:客户端IP地址
%l:- 表示没有,为空
%u:认证的用户
%t:请求到达服务器的时间
%r:请求报文的首行信息(method、协议版本)
%>s:请求状态代码(200、302、403、404、500)
%b:响应报文的大小,大小为空,用 - 表示
%{Referer}i:请求报文中'referer'首部的值
%{User-Agent}i:发出请求用到的应用程序,如浏览器
更多详细介绍 GO