apache httpd的常见使用方法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了apache httpd的常见使用方法相关的知识,希望对你有一定的参考价值。
http是一种网络传输协议,即超文本传输协议
之所以称之为超文本是因为此协议既可以传输普通的文本信息还可以传输图片、音频、视频等非文本信息;
使用TCP协议的80端口建立连接,即可靠的无状态连接;
一般采用html、CSS、JS等语言编写代码;
版本更迭 0.9---1.0---1.1---2.0,1.1是目前主流
URI 统一资源标识符
URL 统一资源定位符
流量统计
IP 独立ip
PV 页面访问,即页面刷新量
UV 独立访客,通过cookies计算访客终端的数量
http的工作机制
http request
http response
web资源 一个web页面并不是单个资源而是一组资源的集合
静态资源 访问速度快,资源消耗少
文件后缀:.jpg, .html, .txt, .js, .css, .mp3, .avi
动态资源 访问速度慢,资源消耗多,所以常常结合缓存来解决
文件后缀:.asp, .php, .jsp
下面来阐述一次完整的http请求处理过程
1、建立连接:客户端发出http request与服务端建立tcp连接,或成功或失败
2、接收请求:服务端接收客户端请求方法中对某一资源的请求
3、处理请求:服务器对请求报文进行解析,根据请求方法、资源、首部等信息进行处理
常见的http请求方法(method):GET、POST、HEAD、PUT、PUSH、OPTIONS、DELETE、TRACE
4、访问资源:服务端向web资源服务器请求静态资源或者动态程序运行后生成的资源
5、构建响应报文:web资源服务器响应请求,执行响应动作,并返回相应报文。响应报文中包含状态码和响应主体;
6、发送响应报文:也是在tcp连接的基础上,服务端会告诉客户端数据是什么格式,用Content-Type表示
常见的Content-Type值 text/xml、image/jpeg、audio/mp3
7、记录日志
本文讲的http是由apache提供的httpd服务器程序
httpd的特点
高度模块化:core + modules
DSO:支持动态加载/卸载
MPM:多路处理模块
MPM主要定义了httpd程序运行时进程的工作模式
prefork
一个主进程生成n个work子进程,每个子进程处理一个请求,,并发响应是n,相当稳定
worker
一个主进程生成m个子进程,每个子进程生成n个线程,每个线程处理一个请求,并发响应是m*n
event
与worker一样,但会单独分出一些线程来管理处理请求的线程,即将请求传递给服务线程,处理结束又允许释放。
http-2.2上此版本处于测试阶段,http-2.4此版本已是稳定版
下述说明均在CentOS6.9上的http-2.2版本常见配置
编辑httpd的主配置文件/etc/httpd/conf/httpd.conf
建议修改配置文件前先备份,方便回退,养成这种习惯
1、服务版本信息
ServerTokens Prod 隐藏apache版本
ServerTokens OS 默认设置,显示apache版本,安全起见建议隐藏
httpd -t 用于httpd配置文件的语法检查
我们修改完httpd的配置文件后,可以使用此命令检查语法是否有问题
2、修改监听的IP和端口
Listen 80 默认设置,监听本机所有ip的80端口,可根据自己的需要修改
仅企业内部使用时可以修改为非标准端口,而且可以同时监听多个端口
3、持久连接
每个请求获取完资源后不会断开连接,而是等待下一个请求的完成。默认是关闭持久连接功能的
KeepAlive Off 默认是关闭持久连接的
KeepAliveTimeout 15 一个连接中等待同一客户端下次请求的超时时间,单位是秒
MaxKeepAliveRequests 100 一次持久连接能接受的最大请求数
根据业务需求决定是否启用持久连接,建议游戏业务开启持久连接
4、MIME 多用途互联网邮件扩展
服务器在响应客户端时会扫描每个资源内容,根据其魔数字与已知模式匹配来确定响应资源文件的类型
比如,服务端响应资源a.jpg是一张图片,如果将图片文件a.jpg修改为a,则依据MIME扫描资源内容得出魔数字依然能够判断出资源类型是图片
所以说MIME是依据资源内容而不是后缀来判断文件类型
5、MPM 多路处理模块
httpd -l 查看当前使用的模块,默认是prefork模式
/etc/sysconfig/httpd 此文件可以修改MPM的工作模式,http-2.2版本保持默认即可
下面对主配置文件中的prefork模式说明
<IfModule prefork.c>
StartServers 8 开启http服务时启动的服务进程数
MinSpareServers 5 空闲状态下存在的最少进程数
MaxSpareServers 20 空闲状态下存在的最多进程数
ServerLimit 256 最多进程数
MaxClients 256 最大并发数
MaxRequestsPerChild 4000 每个子进程能处理的最大的请求数,超过此值子进程会被父进程终止并释放内存空间
</IfModule>
ab -c 100 -n 1000 http://192,168.100.5/index.html httpd自带的压力测试工具
6、DSO 动态共享模块
通过加载特定模块完成特定功能,如下
LoadModule auth_basic_module modules/mod_auth_basic.so 加载认证模块,即http可以基于此模块实现认证
7、文档页面路径
DocumentRoot "/var/www/html" 默认的网站主页路径,即根目录
当访问http://www.a.com/test/index.html时,服务端的路径是/var/www/html/test/index.html
8、定义站点主页面
DirectoryIndex index.html index.html.var 默认主页,如果找不到此文件就会报错
9、站点访问控制常见机制
可基于客户端来源地址和账号这两种机制实现访问控制
开可以基于目录、文件、通配模式或者URL来实现访问控制,后续介绍
10、<directory>中基于源地址的访问控制
(1)options 其后可以用跟多个列表选项
indexes 指定URL路径下不存在文件资源时则返回资源列表,不建议使用
followsymlinks 允许访问软连接指向的源文件,默认是启用的
none 表示全部拒绝
all 表示全部允许
示例如下
<directory /var/www/html/aaa>
Options -indexes -followsymlinks
</directory>
+ 表示启用列表选项
- 表示禁用列表选项
(2)allowoverride
哪些指令可以放在 .htaccess 文件中,覆盖之前的配置指令,如下例
cat /var/www/html/aaa/.htaccess
Options indexes
#在指定目录下生成.htaccess文件,并设置好options选项
cat /etc/httpd/conf.d/test.conf
<directory /var/www/html/aaa>
allowoverride all 允许.htaccess文件覆盖此处的所有指令,相当于options indexes
</directory>
注意
allowoverride none 则.htaccess文件无效
allowoverride indexes 只覆盖indexes指令,其他指令不覆盖,即此处的indexes将被.htaccess文件中定义的指令替代
(3)order和allow、deny
order指定allow和deny的优先级,靠后的优先级高,即order allow,deny则deny优先级高,order deny,allow则allow优先级高
order指定优先级顺序,然后使用allow from或者deny from来匹配具体地址,如果allow与deny有重合,则按照order定义的优先级取舍
cat test.conf
<directory /var/www/html/aaa>
<files "a.html">
order allow,deny deny优先级高于allow
deny from 192.168.100.100
allow from 192.168 allow定义的地址与deny定义的地址有重合,以order定义的优先级顺序做取舍
</files>
</directory>
11、日志设定
ErrorLog logs/error_log 错误日志
CustomLog logs/access_log combined 访问日志,combined定义日志格式
两种类型的日志存放位置使用相对路径,即相对ServerRoot "/etc/httpd"
日志格式定义如下
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
%h 远程主机,%l 远程用户,%u 验证远程用户,%t服务器接收请求的时间,%r请求报文的首行,包含了请求方法,%>s状态响应码
%b响应报文大小,%{Referer}i 请求报文首部referer的值,请求报文中user-agent的值
以上是关于apache httpd的常见使用方法的主要内容,如果未能解决你的问题,请参考以下文章