1.客户端所用资源信息详解
1.1什么是www
www是world wide web的缩写,及万维网,也就是全球信息广播的意思。
通常说的上网就是使用www来查询用户所需要的信息。
www可以结合文字、图形、影像以及声音等多媒体,超链接的方式将信息以Internet传递到世界各处去。
当你连接www网站,该网站会提供一些数据,客户端要使用可以解析这些数据的软件来处理,那就是浏览器。
1.2网址
URl:Uniform Resource ldentifier统一资源标识,分为URL和URN。
URN:Uniform Resource Naming,统一资源命名,P2P下载使用的磁力链接是URN的一种实现。
URL:Uniform Resorce Locator,统一资源定位符用于描述某服务器某特定资源位置。
两者区别:而URL提供查找该事物的方法。URN仅用于命名,而不指定地址
1.3URL组成
URL组成机构如下
<scheme>://<user>:<password>@<host>:<port>/<path>:<params>?<query>#<frag>
定义:
scheme | 方案 | 访问服务器以获取资源时要使用那种协议 |
use | 用户 | 某些方案访问资源时需要的用户名 |
password | 密码 | 用户对应的密码,中间用:分隔 |
host | 主机 | 资源宿主服务器的主机名或IP地址 |
port | 端口 | 资源宿主服务器正在监听的端口号,很多方案有默认端口号 |
path | 路径 | 服务器资源的本地名,由一个/将其与前面的URL组件分隔 |
params | 参数 | 指定输入的参数,参数为名/值对,多个参数,用;分隔 |
query | 查询 | 传递参数给程序,如数据库,用?分隔,多个查询用&分隔 |
frag | 片段 | 一小片或一部分资源的名字,此组件在客户端使用,用#分隔 |
2.http协议访问原理
2.1什么是HTTP
HTTP协议:全称为Hyper Text Transfer Protocol(超文本传输协议)。
简单来说http就是从服务器传输超文本(html)到本地浏览器的传输协议。
HTTP协议工作于B/S架构上,浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务端发送请求(Request)Web服务端根据接收到的请求数据后,向客户端发送响应信息(Response)。
https://developer.mozilla.org/zh-CN/docs/Web
2.2http工作机制
一次http事务包括:
http请求:http request
http响应:http responseWeb资源:web resource
一个网页由多个资源(文件)构成,打开一个页面,通常会有多个资源展示出来,但是每个资源都要单独请求。因此,一个"Web页面”通常并不是单个资源,而是一组资源的集合资源类型:
静态文件:无需服务端做出额外处理,服务器端和客户端的文件内容相同
常见文件后缀:.html,.txt,jpg,js,.css,mp3,avi
动态文件:服务端执行程序,返回执行的结果,服务器端和客户端的文件内容不相同
常见文件后缀:.php,jsp,asp
web中常用的语言
html语言:超文本标记语言
css 层叠样式表:表述网站的风格
js实现html和css实现不了的功能:比如动画效果
mine ( Multipurpose Internet Mail Extensions )多用途因特网邮件扩展
它设计的最初目的是为了在发送电子邮件时附加多媒体数据,让邮件客户程序能根据其类型进行处理。
为了支持多媒体数据类型, HTTP 协议中就使用了附加在文档之前的 MIME 数据类型信息来标识数据类型。
其主要功能是让服务器将它们发送的多媒体数据的类型告诉浏览器。服务器将 MIME 标志符放入传送的数据中来告诉浏览器使用哪种插件读取相关文件。
MIME 类型存在于 HTTP 响应报文的响应头部信息里,它是一种文本标记。
MIME 格式:type/subtype 文件类型后缀(html txt jpg png....)
http访问请求过程
3.http协议报文详解
请求报文
请求报文由三部分组成即:开始行、首部行、是体主体
开始行:请求方法 url 版本 CRLF
首部行通常用键值表示
空格
实体主题数据,一般在post动作中可以提看到
响应报文
状态代码
状态码 | 含义 | 详解 |
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 Server Unavailable
| 服务器当前不能处理客户端的请求,一段时间后可能恢复正常 |
4.web服务的配置详解
4.1web服务的常用种类
ApacheNginxopenresty大厂自研
4.2 nginx的部署与基本信息
开源版本的Nginx官网: http://nginx.org Nginx
在安装的过程中可以选择源码安装也可以选择使用软件包安装
源码安装下载相应的源码压缩包解压后编译完成安装
软件安装包可以使用rpm或者apt命令进行安装,也可以使用dnf通过软件仓库安装
以软件仓库安装为例:
创建软件库并挂载到目录
配置软件仓库
执行安装命令
查看selinux是否关闭
这里可以看到selinux是关闭的如果不是关闭的就输入以下代码关闭selinux并且重启
要使用nginx的话还需要关闭防火墙
开启nginx服务
本机ip为192.168.71.207,在浏览器上输入本机ip,7可以看到nginx已经下载完成并且启动服务。
默认发布访问文件
4.3 使用nginx服务
修改默认发布文件
修改默认端口
查看端口
修改端口,如果直接访问会被拒绝
输入:8080才可以访问
修改网页内容
默认发布文件
在/usr/share/nginx/html/增加一个以.html结尾的文件
写入lee'page内容,并查看是否写入,再进入/etc/nginx/nginx.conf文件
在44行增加 index lee.html内容,输入nginx -t查看命令是否修改正确
在输入nginx -s reload重启nginx服务,在网页输入本机IP可以看到网页内容被修改了
[root@localhost ~]# cd /usr/share/nginx/html/
[root@localhost html]# vim lee.html
[root@localhost html]# cat lee.html
lee'page
#修改
[root@localhost html]# vim /etc/nginx/nginx.conf
[root@localhost html]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@localhost html]# nginx -s reload
在/usr/share/nginx/html/增加一个/html目录
在目录中写入 /html/lee.html,/etc/nginx/nginx.conf文件里将42行注释掉,在第43行写入 root /html;内容
输入nginx -t查看命令是否修改正确,在输入nginx -s reload
重启nginx服务在网页输入本机IP可以看到网页内容被修改了
[root@localhost html]# mkdir /html
[root@localhost html]# echo /html/lee.html > /html/lee.html
[root@localhost html]# cat /html/lee.html
/html/lee.html
[root@localhost html]# vim /etc/nginx/nginx.conf
[root@localhost html]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@localhost html]# nginx -s reload
web服务器的访问控制
目录索引功能
在/usr/share/nginx/html/增加一个admin,将admin page内容输入进admin/index.html,下载httpd-tools服务
[root@localhost html]# mkdir admin
[root@localhost html]# echo admin page > admin/index.html
[root@localhost html]# cd
可直接访问
基于IP访问控制
基于用户访问认证
4.4 nginx虚拟主机设定
基于IP
设定访问
一个web服务器发布多个页面
基于域名
5. web服务器数据加密
5.1 https简介
HTTP协议以明文方式发送内容,不提供任何方式的数据加密。
HTTP协议不适合传输一些敏感信息,比如信用卡号、密码等。
为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS。
HTTPS全称:Hyper Text Transfer Protocol over Secure Socket Layer ),是以安全为目标的 HTTP通道。
HTTPS并不是一个新协议,而是HTTP+SSL(TLS)。
原本HTTP先和TCP直接通信,而加了SSL后,就变成HTTP先和SSL通信,再由SSL和TCP通信相当于 SSL被嵌在了HTTP和TCP之间。
5.2 https握手流程
5.3 部署https
生成密钥
设置配置文件
server {
listen 443 ssl;
server_name login.xuxu.org;
ssl_certificate /etc/nginx/certs/xuxu.org.crt;
ssl_certificate_key /etc/nginx/certs/xuxu.org.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
root /usr/share/nginx/login.xuxu.org/html;
index index.html index.htm;
}
[root@localhost conf.d]# nginx -t
[root@localhost conf.d]# nginx -s reload
5.4 搭建动态网站
动态网站指网站内容可根据不同情况动态变更的网站,一般情况下动态网站通过数据库进行架构。
动态网站除了要设计网页外,还要通过数据库和编程序来使网站具有更多自动的和高级的功能。
动态网页:使用网页脚本语言,比如php、JSP等,通过脚本将网站内容动态存储到数据库,用户访 问网站是通过读取数据库来动态生成网页的方法
配置web服务器对php站点的支持
[root@localhost conf.d]# dnf install php -y
[root@localhost conf.d]# systemctl enable --now php-fpm
修改/etc/nginx/nginx.conf文件内容
创建/php文件,写入内容
[root@localhost ~]# mkdir /php
[root@localhost ~]# cd /php
[root@localhost php]# vim index.php
验证,输入IP(192.168.71.20/index.php)