Apache(httpd)详解
2020-12-19 18:33
标签:color 默认虚拟主机 https 全局 状态 站点 问控制 roo 最好 思维导图 ASF(Apache Software Foundation) 1)服务器的类型 2)httpd的特性 高度模块化(Core+modules) DSO机制(Dynamic Shared Object ,动态共享对象) MPM(Multipath Procession Modules,多路处理模块) 3)httpd的并发响应模型 1)整体结构 全局环境配置(Global Environment):对进程自己的工作特点,对所有虚拟主机都通用的设定 主服务器配置段(“Main” server configuration):在2.2上如果要使用主服务器,则要将虚拟主机关掉 虚拟主机(Virtual Hosts) 2)配置格式:directive value 1)说明 在2.2中(CentOS6的rpm包)专门提供了三个应用程序文件;因为httpd2.2不支持通过编译多个MPM模块,所以只能编译选定要使用的那个; 这三个应用程序文件分别用于实现对不同的MPM机制的支持,默认是使用prefork机制 2)查看httpd程序的模块列表 3)切换MPM机制 4)MPM的配置 在2.4上面要装载的模块:LoadModule status_module modules/mod_status.so 1)作用 2)适用场景 3)设置示例 1)站点标识(IP、PORT、FQDN) 2)虚拟主机种类 1)匹配规则 注意: 2)虚拟主机配置格式 1)基于IP的虚拟主机(基于端口) 2)基于FQDN的虚拟主机 3)注意 基于名称的虚拟主机必须指定ServerName指令,否则它将会继承操作系统的FQDN 对于基于名称的虚拟主机,如果使用IP地址请求无法匹配到任何虚拟主机时,将采用第一个虚拟主机作为默认虚拟主机 1)httpd2.2和httpd2.4中的访问控制 2)Options选项 3)httpd2.4中的配置示例 1)认证概述 2)basic认证配置示例 1)SSL会话过程 2)SSL会话缓存 Apache(httpd)详解 标签:color 默认虚拟主机 https 全局 状态 站点 问控制 roo 最好 原文地址:https://www.cnblogs.com/hgzero/p/14136149.html
1. httpd服务
1.1 httpd概述
# 工作模型
一个主进程:
负责生成子进程及回收子进程
负责创建套接字、接受请求,并将其派发给某子进程进行处理
n个子进程:
每个子进程处理一个请求
# 注意:
会预先生成几个空闲进程,随时等待用于响应用户请求
最大空闲和最小空闲
# 工作模型
一个主进程:
负责生成子进程、创建套接字、接受请求,并将其派发给某子进程进行处理
多个子进程:
每个子进程负责生成多个线程
每个线程:
负责响应用户请求
# 并发响应数量:
子进程数 * 每个子进程能创建的最大线程数
# 工作模型:
一个主进程:
负责生成子进程、创建套接字、接受请求,并将其派发给某子进程进行处理
子进程:
基于事件驱动机制直接响应多个请求
# httpd-2.4中的event机制可以在生产环境中使用
2.2 httpd的程序结构
3. httpd的主配置文件
3.1 配置文件结构和格式
3.2 监听的IP和PORT
# 格式:
Listen [IP:]Port [protocol]
# 若省略IP则表示0.0.0.0
# Listen指令可以重复出现多次
Listen 80
Listen 8080
# 注意:
修改监听的套接字,重启服务进程才能生效
限制其必须通过ssl通信时,protocol需要定义为https
3.3 用户和用户组
# 作用:
指定以哪个用户的身份运行httpd服务器进程
# 格式:
User apache
Group apache
# 对主控进程是root用户的说明:
主控进程是root,因为80端口是特权端口(小于1024的端口),只有管理员才能使用
所以主控进程是root,而其他的进程使用普通用户权限
SUexec在某些指令执行时可以切换到另外一个用户(默认没有装载)
3.4 默认字符集
# 设置默认字符集
# 格式
AddDefaultCharset UTF-8
# 中文字符集:
GBK、GB2312、GB18030
3.5 站点主页面
# 格式:
DirectoryIndex index.html index.html.var
3.6 持久连接
# 持久连接 Persistent Connection 保持连接,长连接
tcp连接建立后,每个资源获取完成后不断开连接,而是继续等待其他资源请求的进行
# 断开条件
1. 数量限制
2. 时间限制
# 副作用
对并发访问量较大的服务器,长连接机制会使得后续某些请求无法得到正常响应
# 折中方案
1. 使用较短的持久连接时长
2. 限制较少的请求数量
# 配置
KeepAlive On | Off # 是否启用长连接
KeepAliveTimeout 15 # 超时时长,单位为秒
MaxKeepAliveRequests 100 #保持连接上面所能获取的最大请求数量(每个连接上面的最大请求数量)
# 注意
httpd2.4的KeepAliveTimeout可以是毫秒级,如果要设置毫秒级,可以直接在数值后面加上ms表示毫秒
telnet 10.0.0.110 80
GET / HTTP/1.1
Host: 10.0.0.110
3.7 配置MPM
# 查看httpd程序的模块列表
# 查看静态编译的模块
httpd -l
# 查看静态编译及动态编译的模块,查看所有模块
httpd -M
### 2.2中
# 1.更换使用的httpd程序,以支持其他MPM机制
vim /etc/sysconfig/httpd
HTTPD=/usr/sbin/httpd.{worker,event}
# 2.然后启用的时候要使用/usr/sbin/httpd.worker
/usr/sbin/httpd.worker -k start
### 2.4中
# 直接在这个文件中将对应的模块取消注释就ok
vim /etc/httpd/conf.modules.d/00-mpm.conf
# 查看当前的工作模式
httpd -V
# 注意:重启服务方可生效
# prefork的配置:
3.8 模块加载
# DSO动态共享对象
# 模块位置
/etc/httpd/conf.modules.d/
在这个目录下的模块对应的配置文件中修改
# 加载模块
LoadModule
3.9 定义Main Server
# 定义Main Server
ServerName FQDN
# 语法格式
ServerName [scheme://]fully-qualified-domain-name[:port]
# 此处的名字是用来表示当前主机认为主机主要是服务于谁的
# 如果这条指令没有定义,那么httpd启动时会试图反解本地的IP地址(把IP解析为主机名),如果解析不成功,则会警告
DocumentRoot "/var/www/html"
# 作用:指明网站的站点的url映射到本地的哪个文件系统路径下
# 文档路径映射:
# DocumentRoot指向的路径为URL路径的起始位置,其相当于站点URL的根路径
# URL PATH与FileSystem PATH不是等同的,而是存在一种映射关系
3.10 路径别名
# 格式:
Alias /URL/ "/PATH/TO/SOMEDIR"
# 把URL跟另外的其他的目录建立映射关系
# 注意:在httpd2.4中要对那个目录进行显示授权(在Directory中定义那个目录的权限)
DocumentRoot "/www/htdocs"
http://www.hgzero.com/download/xxx.txt
/www/htdocs/download/xxx.txt
Alias /download/ "/doc/pub/"
http://www.hgzero.com/download/xxx.txt
/doc/pub/xxx.txt
3.11 站点访问控制
# 文件系统路径:
Directory ""> # 对目录下的所有资源进行控制
...
File ""> # 针对某个文件进行控制
...
FileMatch "PATTERN"> # 针对符合正则匹配的所有文件进行控制
...
# URL路径:
Location ""> # 针对URL路径进行控制
...
LocationMatch "">
...
3.12 status页面
# 在httpd2.2中:
3.13 页面压缩deflate
SetOutputFilter DEFLATE # 设置一个叫DEFLATE的过滤器
# mod_deflate configuration
# Restrict compression to these MIME types # 指定对哪些内容做压缩
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE text/css
# Level of compression (Highest 9 - Lowest 1) # 指定压缩比
DeflateCompressionLevel 9
# Netscape 4.x has some problems. # 匹配特定的浏览器,再对其做特定的压缩,因为可能有些浏览器的特性不一样,如IE
BrowserMatch ^Mozilla/4 gzip-only-text/html
# Netscape 4.06-4.08 have some more problems
BrowserMatch ^Mozilla/4\.0[678] no-gzip
# MSIE masquerades as Netscape, but it is fine
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
4. 虚拟主机
4.1 虚拟主机概述
4.2 匹配规则&匹配格式
4.3 虚拟主机配置示例
# 基于IP的虚拟主机(基于端口的虚拟主机无非就是IP地址相同,而端口不同而已):
# 基于主机名(FQDN)
5. 访问控制
5.1 基于源地址的访问控制
### httpd-2.2 ###
AllowOverride # 表示是否允许覆盖这里的配置;与访问控制相关的指令可以放在.htaccess文件中
All
None
order # 定义生效次序,写在后面的表示默认法则
allow
deny
Allow from # 允许哪些地址的访问
Deny from #拒绝哪些地址的访问
### httpd-2.4 ###
# 基于IP控制
Require ip IP_ADDR
Require not ip IP_ADDR
# 基于主机名控制
Require host 主机名或域名
Require not host 主机名或域名
### 注意:
# 以上的这些控制信息需要定义在Indexes # 指明的URL路径下不存在与定义的主页面资源相等的资源文件时,返回索引列表给用户
FollowSymLinks # 允许跟踪符号链接文件所指向的源文件(在配置别名时很有用)
None
All
### 配置示例
5.2 控制页面允许or不允许所有主机访问
# 控制页面资源允许所有来源的主机可访问:
# http-2.2
5.3 htpasswd
5.4 基于用户的访问控制
# 认证质询
WWW-Authenticate,响应码为401,拒绝客户端请求,并说明要求客户端提供账号和密码
客户端用户填入账号和密码后再次发送请求报文,若认证通过,则服务器发送响应的资源
# 认证方式
basic:明文
digest:消息摘要认证
表单认证
# 安全域
需要用户认证后方能访问的路径
应该通过名称对其特性标识,以便告知用户认证的原因
# 用户的账号和密码存放的位置
虚拟账号:仅用于访问某服务时用到的认证标识
存储:
文本文件
SQL数据库
ldap目录存储
# 定义安全域:
# 定义安全域:
6. https的配置
6.1 https的工作流程
6.2 配置httpd支持https
7. 日志相关
7.1 日志的记录
7.2 日志轮替
8. 压测工具
9. httpd自带的工具程序
10. LAMP基本架构
上一篇:文件上传的方式
下一篇:4) 爬中国大学排名网站内容