**************************************************html
1、Http协议简介
web
2、Http协议特色数据库
3、Http版本介绍apache
4、Http之URL(统一资源定位符)vim
5、HTTP请求报文与响应报文
浏览器
**************************************************缓存
1、Http协议简介安全
HTTP在TCP协议中的位置,以下图所示:
bash
2、Http协议特色服务器
支持客户/服务器模式(C/S模式)
简单快速:客户向服务器请求服务时,只需传送请求方法和路径。因为HTTP协议简单,使得HTTP服务器的程序规模小,于是通讯速度很快。
灵活: HTTP容许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
无链接:无链接的含义是限制每次链接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开链接。采用这种方式能够节省传输时间。
无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺乏状态意味着若是后续处理须要前面的信息,则它必须重传,这样可能致使每次链接传送的数据量增大。另外一方面,在服务器不须要先前信息时它的应答就较快。
3、Http版本介绍
HTTP目前有三个版本:HTTP0.九、HTTP1.0、HTTP1.1。
HTTP0.9是最先的版本 ,它仅能响应文本;
HTTP1.0开始引用MIME(多功能多用途互联网邮件扩展)技术,smtp发送邮件的时候携带非文本数据,引用保存链接技术(keep——alive),引用缓存机制;
HTTP1.1更多的请求方法,更精细的缓存控制(条件式存储方式),持久链接(persistent connection),目前被普遍的使用。
HTTP1.0与HTTP1.1对比:
在HTTP1.0,单一TCP链接内仅执行一个“客户端发送请求—服务器发送应答”周期,以后释放TCP链接。在HTTP1.1优化支持持续活跃链接:客户端连续屡次发送请求、接收应答;批量多请求时,同一TCP链接在活跃(Keep-Live)间期内复用,避免重复TCP初始握手活动,减小网络符合和响应周期。
4、Http之URL(统一资源定位符)
URL 的通常形式是:
<URL的访问方式>://<主机>:<端口>/<abs_path>
URL的访问方式有:
1.ftp —— 文件传送协议 FTP
2.http —— 超文本传送协议HTTP
3.https —— 用安全套接字层传送的超文本传输协议
4.file —— 当地电脑或网上分享的文件
host表示合法的Internet主机域名或者IP地址;port指定一个端口号,为空则使用缺省端口80;abs_path指定请求资源的URI;若是URL中没有给出abs_path,那么当它做为请求URI时,必须以“/”的形式给出,一般这个工做浏览器自动帮咱们完成。
eg:
输入:www.google.com.hk
浏览器自动转换成:http://www.google.com.hk/
5、HTTP请求报文与响应报文
Http请求报文
一个HTTP请求报文由请求行(request line)、请求头部(header)、空行和请求数据4个部分组成,下图给出了请求报文的通常格式:
1.请求头
请求行由请求方法字段、URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔。例如,
GET /index.html HTTP/1.1。
HTTP协议的请求方法有GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT。
1)、GET
最多见的一种请求方式,当客户端要从服务器中读取文档时,当点击网页上的连接或者经过在浏览器的地址栏输入网址来浏览网页的,使用的都是GET方式。GET方法要求服务器将URL定位的资源放在响应报文的数据部分,回送给客户端。使用GET方法时,请求参数和对应的值附加在URL后面,利用一个问号(“?”)表明URL的结尾与请求参数的开始,传递参数长度受限制。
客户端请求
[root@localhost ~]# telnet www.google.com.hk 80 Trying 74.125.128.199... Connected to www.google.com.hk. Escape character is '^]'. GET / HTTP/1.1 HOST:www.google.com.hk
(末尾有一个空行。第一行指定方法、资源路径、协议版本;第二行是在1.1版里必带的一个header做用指定主机)
服务器响应:
HTTP/1.1 200 OK Date: Thu, 22 Aug 2013 14:06:47 GMT Expires: -1 Cache-Control: private, max-age=0 Content-Type: text/html; charset=Big5 Set-Cookie: PREF=ID=191d6c8d0bb04095:FF=0:NW=1:TM=1377180407:LM=1377180407:S=u8OwwZ_w0a5YzJLT; expires=Sat, 22-Aug-2015 14:06:47 GMT; path=/; domain=.google.com.hk Set-Cookie: NID=67=Jb4v4isJQXT_4WKdwNqVJfT2nJwzArUy_lHzpCYbs5hTAKyFj6-EUAS3Tk5E5r-axhTXuvwGDKP0JZ5DEM8ReCJ3OhTREoJwioqfDWBMrNlg99jGQBBwBa9BZqbeSwKd; expires=Fri, 21-Feb-2014 14:06:47 GMT; path=/; domain=.google.com.hk; HttpOnly P3P: CP="This is not a P3P policy! See http://www.google.com/support/accounts/bin/answer.py?hl=en&answer=151657 for more info." Server: gws X-XSS-Protection: 1; mode=block X-Frame-Options: SAMEORIGIN Alternate-Protocol: 80:quic Transfer-Encoding: chunked
2).POST
使用POST方法能够容许客户端给服务器提供信息较多。POST方法将请求参数封装在HTTP请求数据中,以名称/值的形式出现,能够传输大量数据,这样POST方式对传送的数据大小没有限制,并且也不会显示在URL中。
3).HEAD
HEAD就像GET,只不过服务端接受到HEAD请求后只返回响应头,而不会发送响应内容。当咱们只须要查看某个页面的状态的时候,使用HEAD是很是高效的,由于在传输的过程当中省去了页面内容。
4).PUT
上传资源(不安全)
5).DELETE
删除资源(不安全)
6).OPTIONS:
返回请求的资源所支持请求方法的方法(客户端不知道服务器所支持的方法,须要服务器返回所支持的方法)
7).TRACE
追踪一次资源请求中间所通过的代理服务器
2.请求头部
请求头部由关键字/值对组成,每行一对,关键字和值用英文冒号“:”分隔。请求头部通知服务器有关于客户端请求的信息,典型的请求头有:
User-Agent:产生请求的浏览器类型。
Accept:客户端可识别的内容类型列表。
Host:请求的主机名,容许多个域名同处一个IP地址,即虚拟主机。
3.空行
最后一个请求头以后是一个空行,发送回车符和换行符,通知服务器如下再也不有请求头。
4.请求数据
请求数据不在GET方法中使用,而是在POST方法中使用。POST方法适用于须要客户填写表单的场合。与请求数据相关的最常使用的请求头是Content-Type和Content-Length。
HTTP响应报文
HTTP响应也由三个部分组成,分别是:状态行、消息报头、响应正文。
以下所示,HTTP响应的格式与请求的格式十分相似:
<status-line>
<headers>
<blank line>
[<response-body>]
正如所见,在响应中惟一真正的区别在于第一行中用状态信息代替了请求信息。状态行(status line)经过提供一个状态码来讲明所请求的资源状况。
状态行格式以下:
HTTP-Version Status-Code Reason-Phrase CRLF
其中,HTTP-Version表示服务器HTTP协议的版本;Status-Code表示服务器发回的响应状态代码;Reason-Phrase表示状态代码的文本描述。状态代码由三位数字组成,第一个数字定义了响应的类别,且有五种可能取值。
1xx:指示信息--表示请求已接收,继续处理。
2xx:成功--表示请求已被成功接收、理解、接受。
3xx:重定向--要完成请求必须进行更进一步的操做。
4xx:客户端错误--请求有语法错误或请求没法实现。
5xx:服务器端错误--服务器未能实现合法的请求。
常见状态代码、状态描述的说明以下。
200 OK:客户端请求成功。
301:永久重定向, Location响应首部的值仍为当前URL,所以为隐藏重定向;
302 :临时重定向,显式重定向, Location响应首部的值为新的URL
400 Bad Request:客户端请求有语法错误,不能被服务器所理解。
401 Unauthorized:请求未经受权,这个状态代码必须和WWW-Authenticate报头域一块儿使用。
403 Forbidden:服务器收到请求,可是拒绝提供服务。
404 Not Found:请求资源不存在,举个例子:输入了错误的URL。
500 Internal Server Error:服务器发生不可预期的错误。
503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常。
504 Gateway Timeouteg: 服务器找不到网关服务器
*************************************************
1、Apache简介
2、Apache版本介绍
3、Apache工做模式
4、Http服务器的安装于配置
**************************************************
1、Apache简介
Web服务器软件有Apache,Tomcat,IIS,Nginx 等,因为 Apache是世界使用排名第一的Web服务器软件。它能够运行在几乎全部普遍使用的计算机平台上,因为其跨平台和安全性被普遍使用,是最流行的Web服务器端软件之一,因此咱们在这里详细介绍Apacehe服务器软件
2、Apache版本介绍
httpd-1.3 :很稳定可是官方已经不维护了
httpd-2.0 :经常使用版本
httpd-2.2 :目前使用最广的版本
httpd-2.4 :最新版本(引用了许多新特性)
3、Apache工做模式
Prefork工做模式:
特色:一个进程响应一个客户端请求,prefork用单独的子进程来处理不一样的请求,进程之间是彼此独立的,这也使其成为最稳定的MPM之一。
Worker工做模式:
特色:主进程产生子进程,一个子进程产生多个线程,每一个线程响应一个请求,各个线程独立的处理请求。
Event:(在HTTP-V2.4版本引用了此模式,在V2.2是做为测试模块)
事件驱动模式
4、Apache的安装于配置
使用yum方式安装(源码安装的方式请参照http://xiaodong88.blog.51cto.com/1492564/1006542 )
yum installhttpd -y
HTTP的相关信息:
服务脚本:/etc/rc.d/init.d/httpd
运行目录:/etc/httpd
配置文件:/etc/httpd/conf/
主配置文件:httpd.conf
扩展配置:/etc/httpd/conf.d/*.conf
网页文件目录(DocumentRoot):/var/www/html
详解Apache主配置文件的经常使用选项
[root@localhost conf.d]# vim /etc/httpd/conf/httpd.conf
ServerRoot "/etc/httpd"#软件安装目录 PidFile run/httpd.pid #指定pid文件 KeepAlive Off #关闭永久链接 MaxKeepAliveRequests 100 #最多客户端链接数 KeepAliveTimeout 15 #客户端超时时间 <IfModule prefork.c> #prefork模式 StartServers 8 #开机启动的进程 MinSpareServers 5 #最小空闲进程数 MaxSpareServers 20 #最大空闲进程数 ServerLimit 256 #单个进程的最大并发量 MaxClients 256 #单个进程容许链接的客户端数 MaxRequestsPerChild 4000 #单个进程最大处理请求数 </IfModule> <IfModule worker.c> #work工做模式 StartServers 4 #开机启动的进程数 MaxClients 300 #最大客户端数 MinSpareThreads 25 #最小空闲线程数 MaxSpareThreads 75 #最大空闲线程数 ThreadsPerChild 25 #每进程最多产生多少线程 MaxRequestsPerChild 0 #每一个子进程在其生存期内容许伺服的最大请求数量 </IfModule> Listen 80 #监听端口 User apache #以apache用户身份运行 Group apache #以apache组的身份运行 DocumentRoot "/website"#指定网站的站点(此处修改成/website) <Directory /website> #定义站点的权限 Options none AllowOverride None Order allow,deny Allow from all </Directory> DirectoryIndex index.html index.html.var ErrorLog logs/error_log LogLevel warn LogFormat "%h %l %u %t \"%r\" %>s %b"common #定义日子格式 LogFormat "%{Referer}i -> %U"referer LogFormat "%{User-agent}i"agent CustomLog logs/access_logcombined ServerSignature On Alias /icons/"/var/www/icons/"#定义别名 <Directory "/var/www/icons"> Options Indexes MultiViews FollowSymLinks AllowOverride None Order allow,deny Allow from all </Directory> <IfModule mod_dav_fs.c> DAVLockDB /var/lib/dav/lockdb </IfModule> ScriptAlias /cgi-bin/"/var/www/cgi-bin/"#定义CGI别名 <Directory "/var/www/cgi-bin"> AllowOverride None Options None Order allow,deny Allow from all </Directory>
注释:
第4行:开启永久链接功能之后,下面两行才能生效
第43行:服务器使用alias能够隐藏站点,以提升网站的安全性
第29行:定义站点的访问权限
第7-14行:设置perfork工做模式的属性,此处能够更具站点须要进行调优
第15-23行:设置worker工做模式的属性,此处能够更具站点须要进行调优
第22行:将MaxRequestsPerChild设置成非零值有两个好处:
能够防止(偶然的)内存泄漏无限进行,从而耗尽内存。
给进程一个有限寿命,从而有助于当服务器负载减轻的时候减小活动进程的数量。
一、网站访问目录的权限设置
<Directory "/var/www/html"> #默认网站存放目录 Options Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from all </Directory>
注释:
第2行:Options:
Indexes: 索引文件(通常不是下载站点建议关闭此功能)
FollowSynLinks: 是否跟随软连接文件
ExecCGI:是否容许执行CGI脚本;
None:关闭全部功能
All:开启全部功能
第3行: AllowOverride None 是否容许覆盖
第4行: Orader allow,deny 先拒绝后容许
第5行:Allow from all 容许全部
经过以上对权限的说明,不知道你是否已经理解,下面咱们举例说明一下。。
例1.
仅拒绝172.16.0.0/16端的主机访问/var/www/html
<Directory "/var/www/html"> Options Indexes FollowSymLinks AllowOverride None Order deny,allow Deny from 172.16.0.0/16 </Directory>
例2.
拒绝172.16.1.1的主机访问,容许172.16.0.0/16网端的主机访问。
<Directory "/var/www/html"> Options Indexes FollowSymLinks AllowOverride None Order allow,deny Deny from 172.16.1.1 Allow from 172.16.0.0/16 </Directory>
二、查看与修改默认工做模式
重启httpd服务。。。
此时httpd已经切换到worker模式,可是worker模式不必定比prefork模式性能要强。稳定性相对要略一些。此时启用与不启用依据环境而定。正如适合本身的才是最好的。。
三、站点别名设置
HTTP服务器设置
注意xiaodong这个目录不须要创建
客户端验证
设置别名能够有效隐藏站点目录,能够提升安全性。
四、基于SSL的虚拟主机配置
1)、创建CA服务器(用户颁发证书)
生成CA的私钥
[root@stu10 CA]# (umask 077; openssl genrsa -out private/cakey.pem 2048) Generating RSA private key, 2048 bit long modulus ..................+++ ............................................................................................................................................................................................................+++ e is 65537 (0x10001)
为CA生成自签证书
创建序列号文件和数据库文件
1
2
3
|
[root@localhost CA]# touch serial index.txt
[root@localhost CA]# echo
01
> serial
[root@localhost CA]#
|
2)、客户端配置
生成私钥
[root@stu10 ~]# (umask 077; openssl genrsa -out /key/httpd.key 2048) Generating RSA private key, 2048 bit long modulus .........................................................................................+++ ..+++ e is 65537 (0x10001) [root@stu10 ~]#
制做一个证书签署请求:
CA 签署证书
3)、 安装ssl模块
[root@stu10 htdoc]# yum install mod_ssl -y [root@stu10 htdoc]# rpm -ql mod_ssl /etc/httpd/conf.d/ssl.conf /usr/lib64/httpd/modules/mod_ssl.so /var/cache/mod_ssl /var/cache/mod_ssl/scache.dir /var/cache/mod_ssl/scache.pag /var/cache/mod_ssl/scache.sem [root@stu10 htdoc]#
4)、服务器配置
[root@stu10 CA]# htpasswd -c -m /key/.htpass user1 #设置user1为虚拟用户 New password: #设置密码 Re-type new password: #再次输入密码 Adding password for user user1 [root@stu10 htdoc]# vim /etc/httpd/conf.d/ssl.conf <VirtualHost _default_:443> #定义虚拟主机 DocumentRoot "/var/www/html" #网站目录 ServerName www.xiaodong.com:443 #定义主机名 <Directory "/var/www/html"> Options None AllowOverride AuthConfig #设置用户认证 AuthName "Only for employees." #认证名称 AuthType Basic #认证类型为Basic AuthUserFile /key/.htpass #指定用户文件 Require valid-user #指定虚拟用户 </Directory> SSLCertificateFile /key/httpd.crt #指定HTTP服务器证书文件 SSLCertificateKeyFile /key/httpd.key #指定HTTP服务器私钥文件 [root@stu10 htdoc]# service httpd restart #重启服务
5)、客户端验证:
客户端下载CA证书(/etc/pki/CA/cacert.pem ),并修改cacert.pem扩展名为.crt ;安装证书并访问验证
CA的建立过程若有疑惑能够访问http://xiaodong88.blog.51cto.com/1492564/1275878