web服务_apache配置(2)v1.0
httpd-2.2的基础配置
/etc/httpd:ServerRoot
conf/httpd.conf、conf.d/*.conf:配置文件
logs:日志文件
modules:模块文件
主配置文件:/etc/httpd/conf/httpd.conf
directive value
directive:不区分字符大小写;例如:ServerRoot;
value:除了文件路径这外,大多数不区分字符大小写;
### Section 1: Global Environment 全局配置段
### Section 2: 'Main' server configuration 主服务配置选项
### Section 3: Virtual Hosts 虚拟主机配置段
一般而言只用一个主服务配置或多个虚拟主机 (互斥选项 主服务和虚拟服务不能同时生效)
修改后生效:
Reload service httpd reload (CentOS 6)
restart:通常仅修改了监听的地址和端口;
***********************************
]# httpd -t 语法检查
***********************************
1、修改监听的地址端口;
Listen PORT
(1) 可定义多次;
Listen 80
Listen 8080
(2) 省略IP,表示0.0.0.0; 本机配置的所有地址
2、持久连接
persistent connection:tcp连接建立后,资源获取完成不会断开连接,而是继续等待请求其它资源;
如何断开?
数量限制
时间限制
相关指令:
KeepAlive On|Off 是否开启持久链接功能 默认off
MaxKeepAliveRequests 100 一次链接最多能请求多少个资源
KeepAliveTimeout 15 一次联建最多存活多少秒
请求测试:
]$ telnet SERVER_IP PORT root无法用terlnet
GET /test1.html HTTP/1.1 请求资源方法 资源url及指定协议版本 http
Host: SERVER_IP 主机ip地址
相应报文首部:
HTTP/1.1 200 OK 相应码 200
Date: Tue, 14 Jun 2016 06:04:36 GMT 时间
Server: Apache/2.2.15 (CentOS) 服务器端程序
Last-Modified: Tue, 14 Jun 2016 03:34:43 GMT 标记请求资源最后修改的时间
ETag: "60102-10-53534af955806"
Accept-Ranges: bytes
Content-Length: 16 响应报文长度
Connection: close
Content-Type: text/html; charset=UTF-8 资源类型和字符集
test1.html page (相应body)
Connection closed by foreign host. (非持久链接 相应后既关闭连接)
3、MPM 定义httpd进程基于哪种某型相应用户请求
multipath processing module:多路处理模块;
httpd-2.2的MPM机制不支持DSO机制,event为测试;
httpd:prefork
httpd.worker: worker
httpd.event: event
修改启动的模块: restart生效
/etc/sysconfig/httpd
HTTPD=/usr/sbin/httpd|httpd.worker|httpd.event
查看httpd程序的模块列表:
查看静态编译的模块:
httpd -l
查看编译的所有模块:
httpd -M
*****************************************
当使用profork模型时,主进程会预先生成几个空闲的子进程等待相应用户请求
MPM配置:
prefork的配置
StartServers 8 预先生成的子进程数量
MinSpareServers 5 最小空闲子进程
MaxSpareServers 20 最大空闲子进程
ServerLimit 256 相应用户请求的最大服务器进程数量
MaxClients 256 最大客户端数量
MaxRequestsPerChild4000
worker的配置: 三级结构
StartServers 4 启动子进程数量
MaxClients 300 最大并发连接数(线程)
MinSpareThreads 25 最少空闲线程数
MaxSpareThreads 75 最大空闲线程数
ThreadsPerChild 25每一个子进程最大启动多少个线程
MaxRequestsPerChild0每一个字进程最多能接受多少个请求(基于线程模型无法控制)
80, 500ms, 256
512*86400/80=55W PV 每个相应在500ms内完成 最大并发为256 一秒钟能相应512个 平均每天86400 除以每个页面的资源数量 80 得每天能相应的页面数量 (不代表高峰数据且不考虑带宽 实际意义不大)
Page View
UV: User View 有效用户
*****************************************
4、DSO 动态模块装载
LoadModule指令
LoadModuleMod_Namemodules/Module_File.so
相对路径,是相对于ServerRoot指令所定义的路径而言;
5、 ‘Main' Server 主web服务配置段
通常来讲,这两个配置段没有的指令会从主配置段继承配置,主服务器配置和虚拟服务器配置不可同时生效:
(1)'Main'Server配置段(在单台服务器上存在单个站点提供服务)
定义服务器和主机必不可少的:
ServerName FQDN:PORT 主服务器在主配置段里定义也可以(试验中在本机定义后,还要编辑/etc/hosts添加ip地址和FQDN对应关系才能在本机浏览器打开)
DocumentRoot (路径映射)
6.站点资源访问控制 (可以在主配置文件或虚拟主机中生效)
(1)基于文件系统 (2.2默认都可以访问 2.4默认不能访问)
(针对文件夹做操作,配置内容只对该文件夹有效)
...
... (针对文件,只对容器内生效)
... (针对被正则匹配的文件)
(2)基于url路径
...(对url访问控制)
... (url的正则表达式)
目录中的常用选项:
Options:用于定义资源的展示方式;后跟以空白字符分隔的“选项”列表;
Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews None All
Indexes:允许索引;
FollowSymLinks:允许跟踪符号链接; (允许指定的文件或路径是以软连接的形式存在,风险很大)
SymLinksifOwnerMatch (原理同上,但文件或目录属主(运行httpd的用户)必须是符合要求,相比followsyslinks风险较小)
ExecCGI:允许执行CGI脚本; (早期CGI可以有超级superID权限,除非网页用到此功能,否则尽量不开启)
Includes:包含 略
如果一个站点没有主页又没有允许Indexes则显示403,但如果有其他url还是可以访问的.
AllowOverride (用来控制哪些指令可以放在.htaccess中)
httpd允许在网页文档的各目录下使用.htaccess文件实现单目录资源的访问控制;表示哪此指令可以存放于.htaccess文件中;
比如/data/web/目录下有.htaccess则编辑此文件则可实现访问控制,如果使用服务器性能急剧下降(必须搜索到此文件.当前目录没有则搜索上级目录)
order和llow/deny from (控制谁能在当前服务器获得资源)
基于IP地址的访问控制;
order 用于定义allow和deny的生效次序;
allow from all/IP/NETWORK/FQDN
deny fromall/IP/NETWORK/FQDN
来源地址格式:
IP
NetAddr:格式;
172.16;
172.16.0.0;
172.16.0.0/16;
172.16.0.0/255.255.0.0;
FQDN
DAMAIN
order * , *(谁在后谁是默认法则)
order deny,allow;deny是默认法则,没有说明allow的都是不允许的(安全)
order allow, deny (如果没有deny的,都是allow(默认))-->>来源请求遵循最佳匹配法则机制;
1
2
3
oeder allow,deny #deny为默认法则
deny from 172.16.100.67 #不允许这个地址
allow from 172.16 #允许这个网段
deny和allow的次序是没有区别的(非order第一行),最优匹配法则:当一个主机访问时,看哪一条能最小匹配,哪一个就优先生效(172.16.100.67最小匹配deny,所以deny生效)
1
2
3
4
oeder allow,deny #deny为默认法则
deny from 172.16.100.67 #不允许这个地址
allow from 172.16 #允许这个网段
deny from all #172.16.1.1最小匹配allow from 172.16s所以可以访问
7.定义站点主页面
DirectoryIndex index.html index.html.var
可以多个值 自作而有搜索,如果没有查看是否options indexes返回索引列表,如果没有则返回403
8.定义路径别名:
Alias/URL/"/PATH/TO/SOME_DIR/" (URL只是个定义.并不一定非要是目录)
例:DocumentRoot "/data/web"
当访问http://www.zxtest.com/images/logo.jpg
页:
[1]