HTTP SERVER
进程名:httpd
俗称:apache
httpd的功能特性
路经别名:alias
用户认证:authentication
虚拟主机:virtual host
反向代理:负载均衡
用户站点:访问控制
默认网关接口--CGI:Comman Gateway Interface
安装httpd服务
查看当前主机是否安装有httpd
rpm -q httpd
当前没有则安装
yum -y install httpd
查看httpd配置文件
rpm -ql httpd
#1.服务脚本
/etc/rc.d/init.d/httpd
#2.服务配置脚本
/etc/sysconf/httpd
#3.运行目录
/etc/httpd
#4.主配置文件
/etc/httpd/httpd.conf
#5.扩展配置
/etc/httpd/conf.d/*.conf
#6.默认文档根目录(可修改)
/var/www/html
#7.CGI目录
/var/www/cgi-vin/
配置文件详解
面向三种区域的配置
- 全局配置
- 主机配置:用于仅提供一个站点
- 虚拟主机:用于提供多个站点
主机和虚拟主机不能同时存在
格式:指令 + 值
配置指令一般不区分字符大小写,但一般开头为大写,值有可能区分大小写,有些指令可以重复出现
常用配置指令介绍
1)监听套接字
#此指令可以出现多次,用于监听多个不同的套接字
Listen 80
Listen 172.16.36.207:8080
例:查看第二个8080端口是否起作用
#1.检测语法
httpd -t
#2.重新加载配置文件
service httpd reload
#3.查看端口是否被监听
ss -tnl
#4.浏览器测试
http://172.16.36.207:8080
2)持久连接
#1.开关
KeepAlive On / Off
#2.超时断开
KeepAliveTimeOut 15
#3.限制最大请求数,超过断开
MaxKeepAliveRequest 100
例:设置超时时间为5秒
#1.用telnet连接网站
telnet 172.16.36.207 80
#2.获取资源
GET /test.html http/1.1
Host:www.xiaoc.com
3.响应状态
connnection 连接状态不是马上关闭,还可以发送GET请求
5秒后自动关闭连接
3)MPM(multipath processing module)–多道处理模块
并不是指一个模块,而是对一种特性的称谓
类型
(1)prefork : 多个进程,每个进程对应一个请求(1对一)
(2)worker : 多个进程,每个进程有多个线程,每个线程对应一个请求(多对多)
(3)event : 单线程响应多个请求,一般只适合做测试使用
查看可使用模块
httpd -l
httpd服务默认启动的为prefork,修改服务配置脚本/etc/sysconfig/httpd
,将HTTPD
注释取消即可
#1.取消注释
HTTPD=/usr/sbin/httpd.worker
#2.重新启动服务
service httpd restart
#3.查看服务进程,已经是httpd.worker
ps -eFH | tail -5
模块内控制指令
Module 模块格式
指令 值
指令 | 值 | |
---|---|---|
MODULE_NAME | prefork.c | |
StartServers | 8 | 默认启动工作进程数 |
MinSpareServers | 5 | 最少空闲进程数 |
MaxSpareServers | 20 | 最大空闲进程数 |
ServerLimit | 256 | 最大活动进程数 |
MaxClients | 256 | 并发请求最大数 |
MaxRequestsPerChild | 4000 | 每个子进程在生命周期内所能服务的请求最大数 |
MODULE_NAME | worker | |
StartServers | 4 | 默认启动的进程数 |
MaxClients | 300 | 最大请求并发 |
MinSpareThreads | 25 | 最小空闲线程数 |
MaxSpareThreads | 75 | 最大空闲线程数 |
ThreadsPerChild | 25 | 每个子进程可生成的线程数 |
MaxRequestsPerChild | 0 | 每个子进程在生命周期内所能服务请求最大数,0表示不限定 |
4)DSO(Dynamic Shared Object)
Apache HTTP Server是一个模块化程序,管理员可以通过选择一组模块来选择要包含在服务器中的功能。模块将被编译为与主httpd 二进制文件分开存在的动态共享对象(DSO)。
用法格式:
LoadModule MODULE_NAME /path/to/module
重载配置文件就能生效
如果使用相对路径,则对于ServerRoot所定义的位置而言
列出已经装载的所有DSO模块
httpd -M
5)站点根目录
#默认值
DocumentRoot "/var/www/html"
6)设置该站点网页访问属性
<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
Options | |
---|---|
Indexes | 缺少指定的默认页面时,允许将目录中的所有文件已列表形式返回给用户:危险:慎用 |
FollowsymLinks | 允许跟随符号链接所指向的原始文件 |
None | 所有都不启用 |
All | 所有的都启用 |
ExecCGI | 允许使用mod_cgi模块执行CGI脚本 |
Includes | 允许使用mod_include模块实现服务器端包含(SSI) |
IncludesNOEXEC | 允许包含但不允许执行脚本 |
MultiViews | 允许使用mod_negotiation实现内容协商 |
SymLinksIfOwnerMatch | 在链接文件属主属组与原始文件的属主属组相同时,允许跟随符号链接所指向的原始处 |
7)基于主机的访问控制
<Direcotry "/path/to/somewhere">
Options
AllowOverride
None 不禁用下面
order 次序,写在后面的为默认
allow,deny: 没有允许的都拒绝
deny,allow:没有拒绝的都允许
Allow from
Deny from
</Direcotry>
8)定义默认的主页面
DirectoryIndex index.html index.html.var
9)用户目录
允许每个用户都能创建个人站点
#默认为禁止状态
UserDir disabled
#取消注释开启
UserDir public_html
例:创建test用户,创建其个人站点
useradd test
su - test
mkdir public_html
cd public_html
vim index.html
#其他人如test2能够访问我的网站
setfacl -m u:test2:x /home/test
#打开浏览器访问test个人站点
http://172.16.36.207/~test
10)配置日志功能
#配置日志显示格式
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
#配置日志文件
CustomLog logs/access_log combined
Options | |
---|---|
%h | 远程主机名 |
%l | 远程登录名 |
%u | 认证时远程用户名 |
%t | 收到请求的时间 |
%r | 请求报文的起始行 |
%>s | 响应状态码 |
%b | 响应报文的长度,单位为字节 |
%{referer}i | 指定请求报文首部的内容 |
%{User_Agent}i | 用户代理,上一次跳转到本次页面的位置,“-”表示直接访问 |
11)路经别名
访问http://server_ip/icons时,其页面来自于/var/www/icons
Alias /icons/ "/var/www/icons/"
<Directory "/var/www/icons">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
设定默认字符集
AddDefaultCharset UTF-8