9月28日 centos6上httpd2.2基本配置 2和https的实现

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了9月28日 centos6上httpd2.2基本配置 2和https的实现相关的知识,希望对你有一定的参考价值。

参考技术A Satisfy ALL|Any
ALL 客户机IP和用户验证都需要通过才可以
Any客户机IP和用户验证,有一个满足即可

有三种实现方案:
基于ip:为每个虚拟主机准备至少一个ip地址
基于port:为每个虚拟主机使用至少一个独立的port
基于FQDN:为每个虚拟主机使用至少一个FQDN
注意:一般虚拟机不要与main主机混用;因此,要使用虚拟主机,一般先禁用main主机
禁用方法:注释中心主机的DocumentRoot指令即可
实验步骤

总结: 基于FQDN的虚拟主机是生产中最常用的,一般我们在搭建虚拟主机时,要将main主机禁用,但如果不禁用,基于ip和端口号创建虚拟主机时main主机不会失效,访问main主机的主站点文件时仍然可以访问到,但如果基于FQDN创建时,main主机就会失效,这个时候如果访问main主机的主站点时,就会跳到虚拟主机的主站点,并且谁是第一个虚拟主机时就会跳到谁那里。因 此创建虚拟主机时最好将main主机禁用。当基于FQDN创建虚拟主机后,如果用http://172.18.21.106/,默认访问的是第一个虚拟主机的主网站文件。

4、访问这个网站就可以看到服务器的状态信息了

①http协议
http/0.9, http/1.0, http/1.1, http/2.0
http协议:stateless 无状态
服务器无法持续追踪访问者来源,也就是当你第二次访问这个服务器时,服务器又不知道你是谁了。
解决http协议无状态方法
cookie :客户端存放,分为两种,一种为重cookie,一种为轻cookie,比如你在淘宝上买东西放到购物车里的东西,服务器会将你的登录信息和一些购物车里的信息以cookie的形式发送给你,并存储在你的主机上,当你下次用同一个主机去访问淘宝时,你会携带这个cookie信息,这时服务器就知道你的身份了,这样购物车里的东西就不会丢失,这种称为重cookie,轻cookie只存放你的登录信息。cookie是服务器端生成后传给客户端的。在浏览器的选项/设置--->高级设置---->网页内容高级设置中可以看到cookie。
session :服务器端存放,cookie要配合session使用,因为cookie只是存放在特定的主机,换了主机之后你之前访问的信息,比如购物车里面的信息又丢失了,session的作用就是将你的cookie里面的登录信息和网站访问记录到一个session表里,并且存储到服务器上,下次你登录淘宝的时候,服务器就会和session里面记录的一些登录信息对比,发现是你的登录信息,就识别出了你,你的访问记录及购物车里面的东西不会丢失。
http事务:一次访问的过程
请求:request
响应:response
②HTTP请求报文和响应报文

③报文语法格式:
request报文
<method> <request-URL> <version>
<headers>
<entity-body>
response报文
<version> <status> <reason-phrase>
<headers>
<entity-body>
method: 请求方法,标明客户端希望对服务器资源执行的动作。
Method 方法:
GET:从服务器获取一个资源
HEAD:只从服务器获取文档的响应首部
POST:向服务器输入数据,比如字符串等,通常会再由网关程序继续处理
PUT:将请求的主体部分存储在服务器中,如上传文件
DELETE:请求删除服务器上指定的文档
TRACE:追踪请求到达服务器中间经过的代理服务器
OPTIONS:请求服务器返回对指定资源支持使用的请求方法
version:
HTTP/<major>.<minor>,比如HTTP/1.1---目前用的比较多的协议类型
status:
三位数字,如200,301, 302, 404, 502; 标记请求处理过程中发生的情况
reason-phrase:
状态码所标记的状态的简要描述
headers:
每个请求或响应报文可包含任意个首部;每个首部都有首部名称,后面跟一个冒号,而后跟一个可选空格,接着是一个值
entity-body:请求时附加的数据或响应时附加的数据
④http协议状态码分类
status(状态码):
1xx:100-101信息提示
2xx:200-206成功
3xx:300-305重定向
4xx:400-415错误类信息,客户端错误
5xx:500-505错误类信息,服务器端错误
常用的状态码
200:成功,请求数据通过响应报文的entity-body部分发送;OK
301:请求的URL指向的资源已经被删除;但在响应报文中通过首部Location指明了资源现在所处的新位置;Moved Permanently,表示永久重定向,在配置文件里设置网站的别名时就是永久的重定向。

302:响应报文Location指明资源临时新位置Moved Temporarily,是临时重定向。

304:客户端发出了条件式请求,但服务器上的资源未曾发生改变,则通过响应此响应状态码通知客户端;Not Modified,表示服务器端是利用缓存把资源发送给客户端,可以用ctrl+f5强制刷新。
401:需要输入账号和密码认证方能访问资源;Unauthorized,基于basic认证登录时会在日志里面发现这个状态码。
403:请求被禁止;Forbidden,一个原因是服务器的配置文件里面设定了允许哪些主机访问,另外一个原因可能是你访问的文件夹文件系统的权限不足。
404:服务器无法找到客户端请求的资源;Not Found
500:服务器内部错误;Internal Server Error
502:代理服务器从后端服务器收到了一条伪响应,如无法连接到网关;Bad Gateway
503 :服务不可用,临时服务器维护或过载,服务器无法处理请求
504:网关超时
总结:method是客户端请求服务器端要做什么,而状态码是服务器端返回给客户端的状态信息。
更多信息可以参考火狐浏览器: https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status
⑤http协议首部
首部的分类:通用首部、请求首部、响应首部、实体首部、扩展首部
通用首部:
Date: 报文的创建时间
Connection:连接状态,如keep-alive, close
Via:显示报文经过的中间节点(代理,网关)
Cache-Control:控制缓存,如缓存时长
MIME-Version:发送端使用的MIME版本
请求首部:
Accept:通知服务器自己可接受的媒体类型
Accept-Charset:客户端可接受的字符集
Accept-Encoding:客户端可接受编码格式,如gzip
Accept-Language:客户端可接受的语言
Client-IP: 请求的客户端IP
Host: 请求的服务器名称和端口号
Referer:跳转至当前URI的前一个URL
User-Agent:客户端代理,浏览器版本

curl [options] [URL...]
-A/--user-agent <string> 设置用户代理发送给服务器
-e/--referer<URL> 来源网址
--cacert<file> CA证书(SSL)
-k/--insecure 允许忽略证书进行SSL 连接
--compressed 要求返回是压缩的格式
-H/--header <line>自定义首部信息传递给服务器
-i显示页面内容,包括报文首部信息
-I/--head 只显示响应报文首部信息
-D/--dump-header <file>将url的header信息存放在指定文件中
--limit-rate <rate> 设置传输速度
--basic 使用HTTP基本认证
-u/--user <user[:password]>设置服务器的用户和密码
-L 如果有3xx响应码,重新发请求到新位置,进行强制重定向
-o<file> 将网络文件保存为指定的文件中
-O使用URL中默认的文件名保存文件到本地
-0/--http1.0 使用HTTP 1.0
-C -选项可对文件使用断点续传功能
-c/--cookie-jar <file name> 将url中cookie存放在指定文件中
-x/--proxy <proxyhost[:port]> 指定代理服务器地址
-X/--request <command> 向服务器发送指定请求方法
-U/--proxy-user <user:password> 代理服务器用户和密码
-T 选项可将指定的本地文件上传到FTP服务器上
--data/-d 方式指定使用POST方式传递数据
elinks工具:
elinks[OPTION]... [URL]...
-dump: 非交互式模式,将URL的内容输出至标准输出
-source:打印源码
用法和links相同。
示例

使用deflate_module模块压缩页面优化传输速度
适用场景:
(1) 节约带宽,额外消耗CPU;同时,可能有些较老浏览器不支持
(2) 压缩适于压缩的资源,例如文本文件
Level of compression (Highest 9 -Lowest 1)
DeflateCompressionLevel 9
示例

https:http over ssl
SSL会话的简化过程
(1) 客户端发送可供选择的加密方式,并向服务器请求证书
(2) 服务器端发送证书以及选定的加密方式给客户端,这个证书是用CA的私钥加密的服务器的公钥以及证书的有效期等信息,也就是CA数字签名的证书。
(3) 客户端取得证书并进行证书验证
如果信任给服务器发证书的CA,客户端会实验得到CA的公钥
(a) 验证证书来源的合法性;用CA的公钥解密证书上数字签名
(b) 验证证书的内容的合法性:完整性验证
(c) 检查证书的有效期限
(d) 检查证书是否被吊销
(e) 证书中拥有者的名字,与访问的目标主机要一致
(4) 客户端生成临时会话密钥(对称密钥),并使用服务器端的公钥加密此数据发送给服务器,完成密钥交换
(5) 服务用此密钥加密用户请求的资源,响应给客户端

实现过程如下:

将http请求转发至https的URL
重定向
Redirect [status] URL-path URL
status状态分为两种:
Permanent(永久重定向):Returnsa permanent redirect status (301) indicating that the resource has moved permanently
Temp(临时重定向):Returnsa temporary redirect status (302). This is the default
示例:

HSTS:HTTP Strict Transport Security
服务器端配置支持HSTS后,会在给浏览器返回的HTTP首部中携带HSTS字段。浏览器获取到该信息后,会将所有HTTP访问请求在内部做307跳转到HTTPS,而无需任何网络过程

支持HSTS后只需要两步就实现跳转,而且只有第一次跑到服务器端进行跳转,下一次访问就直接在浏览器端就进行跳转了,浏览器已经记住了这个网站的服务器支持HSTS,这样既提高了效率又比较安全
HSTS preload list
是Chrome浏览器中的HSTS预载入列表,在该列表中的网站,使用Chrome浏览器访问时,会自动转换成HTTPS。Firefox、Safari、Edge浏览器也会采用这个列表,也就是解决了上面的第一次跑到服务器端进行跳转的问题,直接在浏览器端就进行了跳转,更安全,不过这个是浏览器自己设置的功能。
实验

查看CentOS上Apache位置,版本,停止,启动

 

查看Apache是否被安装:

[root@centos64 ~]# find / -name \'httpd\'
/usr/sbin/httpd
/usr/lib64/httpd
/var/run/httpd
/var/log/httpd
/var/lock/subsys/httpd
/etc/logrotate.d/httpd
/etc/httpd
/etc/sysconfig/httpd
/etc/rc.d/init.d/httpd

由此确定Apache被安装的地方是/etc/httpd

查看Apache版本

首先进入httpd所在目录

[root@centos64 ~]# cd /etc/httpd

进而查看版本

[root@centos64 httpd]# httpd -v
Server version: Apache/2.2.15 (Unix)
Server built: Mar 22 2017 06:52:55

停止httpd
[root@asg11 httpd]# service httpd stop
Stopping httpd: [  OK  ]

 

启动httpd
[root@asg11 httpd]# service httpd start
Starting httpd: [  OK  ]

 

用浏览器访问试试:

Apache的重要配置文件httpd.conf的位置在/etc/httpd/conf/httpd.conf

以上是关于9月28日 centos6上httpd2.2基本配置 2和https的实现的主要内容,如果未能解决你的问题,请参考以下文章

HTTP 之 编译安装HTTPD2.4

centos6.9编译安装php5.6(基于php-fpm模式)

进入9月24日变盘时间序列(原创)

历史上的今天9 月 28 日:“超级计算机之父”诞生;三星推出移动支付;LibreOffice 发布

UNIXCOIN凤凰币介绍

centos6 httpd2.2详细剖析