标签:llinux httpd
1,进程和线程
进程类似于一个大工程项目,线程相当于大工程项目的每个小的任务单元,进程比较耗资源,线程消耗的资源要少得多,一个进程中可能有一个或者多个线程,根据工作需要的程度。
2. 一个进程中的多个线程之间由于是共享资源,所以可能会互相影响,可以采用复用的多进程I/O进程。
3. 建立请求,处理请求(单进程,多进程,复用进程,多进程复用)
4. tomcat是apaceh下的一个软件,tomcat是一款开源的程序,通常用于动态页面的制作。
MPM(多路处理模块)工作模式
Pereork:一个进程响应一个用户的请求,但是它有一个主进程,这个主进程可以生成多个子进程,最多1024个,每个子进程响应一个用户的请求,相当于每一个子进程中只有一个线程
Worker:一个主进程生成若干子进程,子进程又可以分为多个线程
Event:centos6中是测试版,不可用,7以后可用。
Httpd功能特性
虚拟主机:可以根据ip,port,FQDN的不同,创建不同的网站
CGI(通用网关接口):支持应用程序开发的接口,例如httpd本身只支持静态页面,但是要想支持动态页面,可以通过CGI使用php语言
正向代理:
在叉出可以设置一个缓存区,这样当1号用户访问过mage后,2号用户再访问mage就可以通过缓存区直接获得,而不用浪费资源,再去互联网上寻找了,同时也可以在代理服务器上设置acl等,指定策略等,来定义指定的用户访问指定的资源
反向代理:
在某个时间段内,互联网内的某个请求很大的时候,可以在反向代理服务器(调度器)这里将所有此请求的请求都指定到一个专门的web服务器上,这个被指定的web服务器只会处理这个请求量很大的请求,但是一般都不用apache作为反向代理服务器,市面上一般比较常见的是nigix,haproxy,lvs
路径别名:将网站主页指向一个别的地方,例如www.magedy.com/bbs访问的是本机的bbs目录
用户认证机制:就是用户名,密码
支持第三方模块:扩展apache的功能
Httpd-2.2
主配置文件格式(/etc/httpd/conf/httpd.conf),三大块部分
第一部分:全局环境
第二部分:主服务配置
第三部分:虚拟主机
这三部分的顺序对功能的实现没有影响,分为三部分主要是为了看起来美观。
Httpd-2.2配置
1)修改监听的IP和Port
可以实现监听多个端口
106只能通过9527访问,106只能通过80访问
https(是加密的http),端口号是443和http(端口号是80),是不一样的
2)持久连接
链接后,不操作的情况下等多久自动断开连接
3)多路处理模块MPM
如:启用worker模块
Startservers 开启的服务个数
Minspareservers 最小的空闲进程,预先准备5个空闲进程,也就是当用到第四个的时候,就会立马增加新的5个进程,始终保证系统有5个空闲进程
Maxspareservers 最大的空闲进程,就是最多20个空闲的时候,就会被关掉
Serverlimit 最多256个,也就是并发连接数最多256个进程
Maxclients 最多多少个线程
Maxrequestsperchild 达到4000了,就自动关闭,开启新的进程
服务个数是4,但是ps -aux查看的时候只能看到三个,这是因为,一个进程可以开25个线程,也就是说服务一开就会有100个线程,但是由于最大空闲数是75所以,会自动关掉一个进程,也就变成三个了
4)加载动态模块配置
主配置文件中,前面加#的模块不会被启用
5)主站点
主页面,可以更改,如
如果两行同时启用,会使用下面的根文件目录
创建网站目录,就在html下创建子目录就行
指定默认网站目录下访问的默认页面,也可以在访问的时候指定访问目录
6)站点访问控制常见机制
/app/site1下的网页不允许使用软连接访问,默认支持软连接,不支持索引
Options none 全都不支持
Options all 全都支持
主站点的子目录下想实现个性化的访问控制,可以在下面继续加
7)order和deny,allow
Only的时候,只看only 的
Both和none的时候,看deny和allow哪个在后面
8)针对url控制访问
Site1下的文件,conf和sh结尾的都文件拒绝访问
主站点下的admin目录,只允许允许的主机访问,其他的都拒绝
10)日志的设定
错误日志:默认的是warn,也就是马上就要错了就记录日志
访问日志:
日志格式
默认的日志目录,和格式,即combined ,%是间隔
%h 远程主机地址
%l 远程登陆的用户的用户名
%u 远程用户身份验证
%t 用户发起请求的时间,而且默认标准是英语国家的时间
%r 第一行的请求
%>s 最后的响应码,每一个响应都有一个对应的一个号码
%b 相应报文的文件大小
Referer 从哪个地址跳转到这里的
可以自己制定日志格式,然后在/conf.d/name.conf文件中使用自己定义的日志格式,如基于FQDN的虚拟主机的定义的.conf文件中,如下,testlog就是自己定义的日志格式
11)设定默认字符集,就是针对不同语言设计的不同的字符集,有些字符集不支持中文,有些全球通用,如utf-8
修改默认的字符集:
12)定义路径别名
这样访问/bbs目录的时候,会变成访问/app/bbsdir下的文件,而且bbs这个目录不管存在不存在,都不影响,它是个虚拟目录
13)基于用户的访问控制
Basic基本验证
针对目录以及用户的访问控制,require 改为valid-user,
用户以及用户的密码文件可通过htpasswd -c/s/m 添加 c只在文件不存在时使用,s,m代表不同的加密机制,sha,md5
require-vaild,即为允许所有用户访问
同时可以i将控制访问的内容放到/secret/下的一个.htaccess文件下,这样这个文件内的内容就会对secret的权限生效,另外,需要在/conf.d/test.conf文件中将allowoverride后加上 authconfig,即允许用验证的权限通过 .htaaccess文件覆盖。
13)基于组账号进行认证
创建.htgroups文件,里面定义组成员的信息,如下
然后修改.htaaccess文件,类似用户访问控制的格式
14)Status页面,状态页面
这里去掉#并修改配置后,可以访问本机的状态
虚拟主机(一个主机多个站点,一个站点代表一个虚拟主机)
通常对于访问量不是很大的访问,一个主机划分多个虚拟主机进行访问。
1)制作三个虚拟主机,建立三个站点的工作目录
2)添加三个ip地址
3)三种实现方法
1. 为每个虚拟主机准备一个ip地址(基于ip)
访问这些虚拟地址
2. 为每个虚拟主机使用至少一个的端口(基于port)
通关端口访问
3. 为每个虚拟主机至少准备一个FQDN(基于FQDN)
NamevirtualHost *:80 是主配置文件里的内容,如果不修改主配置文件,也可以写在这里,表示启用基于FQDN的虚拟主机访问
另外,虚拟主机配置的位置决定了谁先被访问,如图website3在第一个,那么就会放任website3,如下
Cookie
重cookie:记录用户的各种数据,用户数量一旦太多,对服务器压力就很大,这种cookie就不太合适了,而且用户换了登陆主机后,无法加载cookie中的用户的数据
轻cookie:只会记录每个用户的一个uid,并在后台通过用户的uid为其访问其对应的数据,而且当用户换了主机登陆后,依然可以加载出来用户的数据
常见状态码
使用火狐浏览器可以方便的查看响应码
CURL命令(常用)
-A 设置用户代理发送给服务器
-e 选择来源的网址
日志如下
日志如下
-i 额外显示页面内容
-I 只显示响应报文的首部信息
-D将url的header信息存放在在指定文件中
-o
下载服务器中的文件,可以指定下载完后的文件名
-O
下载服务器中的文件,文件名默认和服务器上的一样
下载的时候进行限速
-L
进行真的跳转,不加的话,只是显示要跳转的内容,但是不会真的跳转
Mod_deflate模块实现
定义在/etc/httpd/conf.d/name.conf文件中,作用是通过压缩传输的页面,节约宽带,减少额外消耗的cpu,但是有些老旧的浏览器可能不支持,而且只能压缩适用于压缩的数据
Deflatecompressionlevel 默认是9,不写这一行也是9,这里写的1,即1:1压缩,也就是不压缩
AddOutputFilterByType DEFLATE text/* 可以选择需要压缩的数据类型
本文出自 “11083860” 博客,请务必保留此出处http://11093860.blog.51cto.com/11083860/1974897
标签:llinux httpd
原文地址:http://11093860.blog.51cto.com/11083860/1974897