http协议运行原理
1)、Web浏览器使用HTTP命令向一个特定的服务器发出Web页面请求。
2)、若该服务器在特定端口(通常是TCP 80端口)处接收到Web页面请求后,就发送一个应答并在客户和服务器之间建立连接。
3)、服务器Web查找客户端所需文档,若Web服务器查找到所请求的文档,就会将所请求的文档传送给Web浏览器。若该文档不存在,则服务器会发送一个相应的错误提示文档给客户端。
4)、Web浏览器接收到文档后,就将它显示出来。
5)、当客户端浏览完成后,就断开与服务器的连接。
- 状态代码由三位数字组成,第一个数字定义了响应的类别,且有五种可能取值。
1xx:指示信息 —— 表示请求已接收,继续处理。
2xx:成功 —— 表示请求已被成功接收、理解、接受。
3xx:重定向 —— 要完成请求必须进行更进一步的操作。
4xx:客户端错误 —— 请求有语法错误或请求无法实现。
5xx:服务器端错误 —— 服务器未能实现合法的请求。
* 常见状态代码、状态描述的说明如下。
200 OK:客户端请求成功。
400 Bad Request:客户端请求有语法错误,不能被服务器所理解。
401 Unauthorized:请求未经授权,这个状态代码必须和 WWW-Authenticate 报头域一起使用。
403 Forbidden:服务器收到请求,但是拒绝提供服务。
404 Not Found:请求资源不存在,举个例子:输入了错误的URL。
500 Internal Server Error:服务器发生不可预期的错误。
503 ServerUnavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常。
web网站搭建
3.1.1 搭建流程(思路)
|——搭建环境:
|——搭建架构C/S
|——(客户端)-网站访问格式:
|——(服务端) 3.1.2 服务搭建执行命令框架
|——安装软件包
|——启用服务
|——设置防火墙,selinux规则策略
|——配置服务,设置访问信息(根据需求设置访问格式,访问内容)
|——重启服务
|——通过客户端测试
1.yum install httpd
安装软件包
2.systemctl start httpd
启用服务
3.systemctl stop firewalld 关闭防火墙
setenfoce 0 关闭selinux
4.Vim /etc/httpd/conf.d/vhosts.conf 设置主机访问目录,以及目录权限
vim /var/www/html/index.html 定义网站资源信息
5.systemctl restart httpd 重启服务
6.打开游览器通过http://ip 通过指定格式访问测试,是否满足需求
1.修改默认界面
[root@localhost ~]#echo helloworld > /var/www/html/index.html
2.基于ip地址对web服务器的访问
[root@localhost~]# mkdir /www/200 -pv
[root@localhost~]# echo this is 192.168.124.200 > /www/200/index.html
[root@localhost~]#vim /etc/httpd/conf.d/vhosts.conf
<Direotory /www>
AllowOverride none ----允许覆盖
Require all granted -----设置访问目录权限
</Directory>
<VirtualHost 192.168.124.200:80>
DocumentRoot/www/200 -------指定当前主机访问网站根目录
ServerName 192.168.124.200 ----指定访问网站名称
</VirtualHost>
[root@localhost~]# systemctl restart httpd 重启服务
测试:
[root@localhost~]# curl http://192.168.124.200
this is 192.168.124.200
3.基于端口对web服务器的访问
LISTEN 10000
<VirtualHost 192.168.10.200:10000>
DocumentRoot /www/200
ServerName 192.168.10.200
</VirtualHost>
4.基于域名对web服务器的访问
<VirtualHost192.168.10.200:80>
DocumentRoot /www/haha
ServerName www.haha.com
ServerAlias www1.haha.com
</VirtualHost>
```
需要改hosts文件:
C:\Windows\System32\drivers\etc\hosts
192.168.124.200 www.haha.com www1.haha.com
Linux :/etc/hosts
html显示优先级问题
自定义的优先级最高 > 修改默认配置文件 > 默认阿帕奇页面
/www/200/index.html > /www/html/index.html
https (ssl认证)
原本HTTP先和TCP(假定传输层是TCP协议)直接通信,而加了SSL后,就变成HTTP先和SSL通信,再由SSL和TCP通信,相当于SSL被嵌在了HTTP和TCP之间。
SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。SSL协议可分为两层: SSL记录协议(SSL
Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。 SSL握手协议(SSL
Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。
ssl提供服务
1)认证用户和服务器,确保数据发送到正确的客户机和服务器;
2)加密数据以防止数据中途被窃取;
3)维护数据的完整性,确保数据在传输过程中不被改变。
认证服务器:
浏览器内置一个受信任的CA机构列表,并保存了这些CA机构的证书。第一阶段服务器会提供经CA机构认证颁发的服务器证书,如果认证该服务器证书的CA机构,存在于浏览器的受信任CA机构列表中,并且服务器证书中的信息与当前正在访问的网站(域名等)一致,那么浏览器就认为服务端是可信的,并从服务器证书中取得服务器公钥,用于后续流程。否则,浏览器将提示用户,根据用户的选择,决定是否继续。当然,我们可以管理这个受信任CA机构列表,添加我们想要信任的CA机构,或者移除我们不信任的CA机构。
- 制作CA证书:
yum install mod_ssl -y
cd /etc/pki/tls/certs
make xixi.crt
输入三次相同密码
国家代码
省份
等等
将ssl配置文件中的五条信息复制到配置文件 /etc/httpd/conf.d/vhost.conf
SSLEngine on 引擎打开
SSLProtocol all -SSLv2 支持所有协议除了v2
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA
密码套件客户端和服务端 协商
SSLCertificateFile /etc/pki/tls/certs/localhost.crt
指定证书路径
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
指定秘钥文件路径
-
重启服务时需输入证书密码,通过浏览器访问时会提示此网站安全证书有问题
要把make 生成的xixi.key 文件移动到 /private/下
mv xixi.key ../private
虚拟目录和用户控制
虚拟目录的作用:
为了便于对网站资源进行灵活管理,还可以把这些文件存放在本地计算机的其它文件夹中或者其它计算机的共享文件夹中,然后再把这个文件夹映射到网站主目录中的一个文件夹上,这个文件夹被称为“虚拟目录”。
每个虚拟目录都有一个别名,这样用户就可以通过这个虚拟目录的别名来访问与之对应的真实文件夹中的资源了。虚拟目录的好处是在不需要改变别名的情况下,可以随时改变其对应的文件夹。
原理:
WEB服务器上的每个WEB站点必须设置有不同的标识信息
WEB浏览器发出的连接和请求信息中包含WEB站点的标识信息
WEB站点的标识信息:
IP地址、端口号、主机名
htpasswd -c /etc/httpd/mysecretpwd user1
首次创建用户加-c 选项,第二次添加-c选项时覆盖第一次
htpasswd /etc/httpd/mysecretpwd user2
mkdir /usr/local/mysecret
echo this is secret messages ! > /usr/local/mysecret/index.html
vim /etc/httpd/conf.d/vhosts.conf
<Direcory "/usr/local/mysecret">
AuthType Basic 基本认证类型(账号)
AuthName "输入密码!" 提示信息
AuthUserFile /etc/httpd/mysecretpwd 用户认证文件用户名和密码
Require user user1 user2 指定有效用户可以尝试登陆认证
</Directory>
<VirtualHost 192.168.124.200:80>
DocumentRoot "/www/haha" 默认访问
Alias /mysecret "/usr/local/mysecret" 虚拟用户访问
ServerName 192.168.124.200
</VirtualHost>
创建网页:
mkdir /www/haha -pv
echo is not mysecret > /www/haha/index.html
mkdir /usr/local/mysecret/
echo this is mysecret > /usr/local/mysecret/index,html