一:web基础
1.域名和DNS
1.1域名的概念
网络是基于TCP/IP协议进行通信和连接的,每一台主机都有一个唯一的标识(固定的IP地址),用以区别在网络上成千上万个用户和计算机。网络在区分所有与之相连的网络和主机时,均采用一种唯一、通用的地址格式,即每一个与网络相连接的计算机和服务器都被指派一个独一无二的地址。
为了保证网络上每台计算机的IP地址的唯一性,用户必须向特定机构申请注册,分配IP地址。网络中的地址方案分为两套:IP地址系统和域名地址系统。这两套地址系统其实是一一对应的关系。IP地址用二进制数来表示,每个IP地址长32比特,由4个小于256的数字组成,数字之间用点间隔,例如 100.10.0.1表示一个P地址。由于IP地址是数字标识,使用时难以记忆和书写,因此在IP地址的基础上又发展出一种符号化的地址方案,来代替数字型的IP地址。每一个符号化的地址都与特定的IP地址对应,这样网络上的资源访问起来就容易得多了
(1)域名的结构

DNS 规定,域名中的标号都由英文字母和数字组成,每一个标号不超过 63个字符, 也不区分大小写字母。标号中除连字符(-)外不能使用其他的标点符号。级别最低的域名写在最左边,而级别最高的域名写在最右边。
(2)域名结构类型
根域:指的是根服务器,要用来管理互联网的主目录,全世界只有13台。1个为 主根服务器,放置在美国。其余 12个均为辅根服务器,所有根服务器均由美国政府授权的互联网域名与号码分配机构ICANN 统一管理,负责全球互联网域名根服务器、 域名体系和 IP 地址等的管理。
顶级域:包括组织域和国家/地区域名。域名的最右侧是国家/地区域名,国家代码 由两个字母组成的如.cn,.uk,.de 和.jp, 其中.cn 是中国专用的顶级域名。在国家/地区域名左侧,是组织域名,常见的.com 用于商业机构,.net用于网络组织,.org 用于各种组织包括非盈利组织。
二级域名 :在顶级域名之前的域名,在顶级域名前面,它是指域名注册人的网
上名 称,例如 baidu,ibm ,yahoo , microsoft 等。
FQDN:是主机名.DNS 后缀,是指主机名加上全路径,全路径中列出了序列中所有 域成员。全域名可以从逻辑上准确地表示出主机在什么地方,也可以说全域名是主机名的一种完全表示形式。
2.Hosts文件
Hosts 文件是一个用于存储计算机网络中节点信息的文件,它可以将主机名映射到 相应的 IP 地址,实现 DNS 的功能,它可以由计算机的用户进行修改控制。
(1)Hosts文件作用
在网络上访问网站,要首先通过 DNS 服务器把要访问的域名解析成 IP 地址后,计 算机才能对这个网络域名作网站进行访问。在网络上访问网站,要首先通过 DNS 服务器把要访问的域名解析成 IP 地址后,计算机才能对这个网络域名作网站进行访问。
因为DNS 做域名解析和返回 IP 都需要时间。为了提高对经常访问的 网络域名的解析效率,可以通过利用在 Hosts 文件中建立域名和IP的映射关系来达到目的
在进行DNS请求以前,系统会先检查自己的 Hosts 文件中是否 有这个网络域名映射关系。如果有则调用这个IP 地址映射,如果没有,再向已知的 DNS 服务器提出域名解析,即 Hosts 的请求级别比 DNS 高
(2)修改hosts文件
Windows 系统中 Hosts 文件存储在目录 c:\windows\system32\drivers\etc下面,用 记事本可以对其进行修改,0penEuler 系统中 Hosts 文件存储在目录/etc/目录下面,用 vim /etc/hosts 可以对其进行修改。
3.DNS
主机名到 IP 地址的映射有两种方式:
静态映射:每台设备上都配置主机到IP地址的映射,各设备独立维护自己的映射 表,而且只供本设备使用;
动态映射:建立一套域名解析系统(DNS),只在专门的DNS服务器上配置主机 到IP地址的映射,网络上需要使用主机名通信的设备,首先需要到 DNS服务器查询主机所对应的 IP 地址。
4.域名注册
域名注册是 Internet 中用于解决地址对应问题的一种方法。域名注册遵循先申请先注册原则,管理机构对申请人提出的域名是否违反了第三方的权利不进行任何实质审 查。每个域名都是独一无二的,不可重复的。
域名注册的所有者都是以域名注册提交人填写域名订单的信息为准的,成功24 小时后,即可在国际(ICANN)、国内(CNNIC)管理机构査询 whois 信息(域名所有 者等信息)。
下面是域名注册步骤:
(1)准备申请资料:com 域名无需提供身份证、营业执照等资料,cn 域名已开放 个人申请注册,所以申请则需要提供身份证或企业营业执照;
(2)寻找域名注册网站:由于.com、.cn 域名等不同后缀均属于不同注册管理机构 所管理,如要注册不同后缀域名则需要从注册管理机构寻找经过其授权的顶级域名注册
服务机构。如 com 域名的管理机构为 ICANN,cn 域名的管理机构为CNNIC(中国互 联网络信息中心)。若注册商已经通过 ICANN、CNNIC双重认证,则无需分别到其他 注册服务机构申请域名;
(3)查询域名:在域名注册查询网站注册用户名成功后并查询域名,选择要注册的 域名,并点击注册;
(4)正式申请:查到想要注册的域名,并且确认域名为可申请的状态后,提交注册, 并缴纳年费;
(5)申请成功:正式申请成功后,即可开始进入 DNS 解析管理、设置解析记录等 操作。
二:网页与HTML
网页是构成网站的基本元素,是承载各种网站应用的平台。通俗地说,网站就是由 网页组成的。如果只有域名和虚拟主机而没有制作任何网页,那么客户仍旧无法访问这 个网站。因为网页是由 HTML(超文本标记语言)编写的。
1.网页概述
网页是一个文件,他存放在世界某个角落的某一部计算机中,而这部计算机必须是 与互联网相连的。网页经由网址(URL)来识别与存取,是互联网中的一"页"。
网页可以包括如下内容:
- 文本:文本是网页上最重要的信息载体与交流工具,网页中的主要信息般都以文 本形式为主。
- 图像:图像元素在网页中具有提供信息并展示直观形象的作用。静态图像:在页面中可能是图片或矢量图形。图片格式通常为GIFJPEG 或 PNG 等;矢量格式通常为 SVG 或 Flash。动画图像:通常动画为 GIF 和 SVG
- Flash 动画:动画在网页中的作用是有效地吸引访问者更多的注意。
- 声音:声音是多媒体和视频网页重要的组成部分。
- 视频:视频文件的采用使网页效果更加精彩且富有动感
- 表格:表格是在网页中用来控制页面信息的布局方式。
- 导航栏:导航栏在网页中是一组超链接,其连接的目的端是网页中重要的
页面。 - 交互式表单:表单在网页中通常用来联接数据库并接受访问用户在浏览器端输入的 数据,利用数据库为客户端与服务器端提供更多的互动。
网页相关概念如下:
- 域名:是浏览网页时输入的网址。
- HTTP:用来传输网页的通信协议,使用浏览器访问网址时,在域名前面要加上 http:// ,表示使用 http 协议传输网页。
- URL:是一种万维网寻址系统,表示网络上资源的位置路径。
- HTML:是编写网页的超文本标记语言。
- 超链接:具备将网站中不同网页链接起来的功能。
- 发布:将制作好的网页上传到服务器供用户访问的过程
2.1HTML概述
HTML, 叫做超文本标记语言,是一种规范,也是一种标准,它通过标记符号来标记 要显示的网页中的各个部分。网页文件本身是一种文本文件,通过在文本文件中添加标 记符,可以告诉浏览器如何显示其中的内容。如:文字如何处理,画面如何安排,图片 如何显示等。浏览器按顺序阅读网页文件,然后根据标记符解释和显示其标记的内容,对书写出错的标记将不指出其错误,且不停止其解释执行过程,开发者只能通过显示效果来分析出错原因和出错部位。但需要注意的是,不同的浏览器,对同一标记符可能会有不完全相同的解释,因而可能会有不同的显示效果。
HTML 文件可以使用任何能够生成 txt 文件的文本编辑器来编辑,生成超文本标记 语言文件,只用修改文件名后缀为".html"或".htm" 即可。
2.2HTML基本标签
(1)HTML语法规则
HTML 标签采用双标记符的形式,前后标记符对应,分别表示标记开始和结束,标记符中间的内容被标签描述。前标记符由"<XXX>"表示,结尾标记符多了一个"/",由 "</XXX>"表示。
(2)HTML 文件结构
HTML 文件最外层由<html></htm>表示,说明该文件是用 HTML 语言描述的。在它里面是并列的头标签(<head>)和内容标签(<body>),最基本的 HTML 文件结构如下:

常用的头标签:
|------------|-------------------|
| 标签 | 描述 |
| <title> | 定义了文档的标题 |
| <base> | 定义了页面链接标签的默认链接地址 |
| <link> | 定义了一个文档和外部资源之间的关系 |
| <meta> | 定义了HTML文档中的元数据 |
| <script> | 定义了客户端的脚本文件 |
| <style> | 定义了HTML文档的样式文件 |
内容标签中常用的标签表:
|-----------|--------------|
| 标签 | 描述 |
| <table> | 定义一个表格 |
| <tr> | 定义了表格中的一行 |
| <td> | 定义了表格中某一行的一列 |
| <a> | 定义了一个超链接 |
| <br> | 定义了换行 |
| <font> | 定义了字体 |
2.3网站和主页
网站是由网页组成的,包含多个网页页面,具有独立域名、独立存放空间的内容集 合,这些内容可能是网页,也可能是程序或其他文件。
主页(首页)是用户打开浏览器时默认打开的网页。
3.静态网页与动态网页
3.1静态网页
在网站设计中,纯粹 HTML, 格式的网页通常被称为"静态网页",静态网页是标准的 HTML 文件,它的文件扩展名是.htm、.html 。静态网页是网站建设的基础,早期的网 站一般都是由静态网页制作的。静态网页也可以出现各种动态的效果,如.GIF 格式的动画、FLASH 、滚动字幕等。这些"动态效果" 只是视觉上的,与下面将要介绍的动态网页 是不同的概念。
3.2动态网页
所谓的动态网页,是指跟静态网页相对的一种网页编程技术。静态网页,随着 HTML 代码的生成,页面的内容和显示效果就基本上不会发生变化了--除非是修改页面代
码。而动态网页则不然,页面代码虽然没有变,但是显示的内容却是可以随着时间、环境或者数据库操作的结果而发生改变的。动态网页URL的后缀不是·htm、.html、.shtml、.xml 等静态网页的常见网页制作格式,而是以.aspx、.asp、·jsp、·php、·perl 、.cgi 等形式为后缀,并且在动态网页网址中有一个 标志性的符号--"?"动态网页是基本的 html 语法规范与 Java、PHP、C#等高级程序设计语言、数据库 编程等多种技术的融合,以期实现对网站内容和风格的高效、动态和交互式的管理。因 此,从这个意义上来讲,凡是结合了 HTML 以外的高级程序设计语言和数据库技术进行 的网页编程技术生成的网页都是动态网页。
三:HTTP协议
超文本传输协议(HTTP ,HyperText Transfer Protocol)是互联网上应用最广泛的一种网络协议。所有的网页文件都必须遵守这个标准。设计HTTP最初的目的是为 了提供一种发布和接收 HTML 页面的方法。
1.HTTP协议概述
HTTP 协议采用了请求/响应模型。客户端向服务器发送一个请求,请求头包含请求 的方法、URL、协议版本、以及包含请求修饰符、客户信息和内容的类似于 MIME 的消 息结构。服务器以一个状态行作为响应,响应的内容包括消息协议的版本,成功或者错 误编码加上服务器信息、实体元信息以及可能的实体内容。
HTTP 已经演化出了很多版本,它们中的大部分都是向下兼容的。
(1)HTTP/0.9 已过时。只接受 GET 一种请求方法,没有在通讯中指定版本号且不支持请求头。由于该版本不支持POST方法,所以客户端无法向服务器传递太多 信息。
(2)HTTP/1.0 这是第一个在通讯中指定版本号的 HTTP 协议版本,至今仍被广泛 采用,特别是在代理服务器中。
(3)HTTP/1.1 当前版本。持久连接被默认采用,并能很好地配合代理服务器工作。还支持以管道方式同时发送多个请求,以便降低线路负载,提高传输速度。
2.HTTP方法
HTTP 支持几种不同的请求命令,这些命令被称为 HTTP 方法(HTTP method)。每条 HTTP 请求报文都包含一个方法,告诉服务器要执行什么动作,包括:获取一个页 面,运行一个网关程序,删除一个文件等。最常用的获取资源的方法是 GET、POST 。 HTTP 常用方法如表 1-3 所示。
|---------|---------------------------------|
| HTTP 方法 | 描述 |
| GET | 请求获取 Request-URI 所标识的资源 |
| PUT | 请求服务器存储一个资源,并用Request-URI 作为其标识 |
| DELETE | 请求服务器删除 Request-URI 所标识的资源 |
| POST | 在 Request-URI 所标识的资源后附加新的数据 |
| HEAD | 请求获取由 Request-URI 所标识的资源的响应消息报头 |
GET 方法采用的是 URL 后缀的形式,比如 http://www.test.com/a.php?Id=123 就是一个 GET 请求,服务器接收后可以解析出 Id=123 。而 POST 方法不需要在 URL 中 显示"?Id=123",参数作为内容进行了隐藏的提交。因此,表单类或者有用户名、密码 等内容提交时建议使用 POST 方法。
GET 方法在 URL 上显示参数,而 URL 是有长度限制,故不适合提交过大的数据。 GET方法可以被浏览器缓存,当请求已经被请求过一次的 URL时,浏览器不需要向服 务器再次发出请求,直接在本地缓存中获得页面。GET 和 POST方法对比如表 1-4 所示。
|----------|-------------------------------------------------------------|-----------------------------------------|
| | GET 方法 | POST 方法 |
| 对数据长度的限制 | URL 的长度是受限制的(URL 的最大长度是2048个字符) | 无限制 |
| 缓存 | 能被缓存 | 不能缓存 |
| 安全性 | 与POST 相比,GET 的安全性较差,因 为所发送的数据是URL的一部分。在发送密码或其他敏感信息时绝不要使用GET | POST 比GET更安全,因为参数不会被保存在浏览器历史或Web 服务器日志中 |
| 历史 | 参数保留在浏览器历史中 | 参数不会保存在浏览器历史中 |
| 后退按钮/刷新 | 无害 | 数据会被重新提交,浏览器应 该告知用户数据会被重新提交 |
| 书签 | 可收藏为书签 | 不可收藏为书签 |
3.HTTP状态码
HTTP 状态码(HTTP Status Code )是用以表示网页服务器 HTTP 响应状态的 3 位数字代码,当浏览器请求某一URL 时,服务器根据处理情况返回相应的处理状态。
HTTP 状态码可以分为五大类,如图 1.2所示。其中 1XX 表示信息提示,2XX、3XX表示请求正常,4XX、5XX 表示出现异常情况。
|-------|---------|-------|
| 状态码首位 | 已定义范围 | 分类 |
| 1xx | 100-101 | 信息提示 |
| 2xx | 200-206 | 成功 |
| 3xx | 300-305 | 重定向 |
| 4xx | 400-415 | 客户端错误 |
| 5xx | 500-505 | 服务端错误 |
生产环境常见的HTTP状态码
|--------------------------|---------------|
| 消息 | 描述 |
| 200 OK | 请求成功 |
| 301 Moved Permanently | 请求的永久页面跳转 |
| 403 Forbidden | 禁止访问该页面 |
| 404 Not Found | 服务器无法找到被请求的页面 |
| 500 Internal ServerError | 内部服务器错误 |
| 502 Bad Gateway | 无效网关 |
| 503 Service Unavailable | 当前服务不可用 |
| 504 Gateway Timeout | 网关请求超时 |
4.HTTP请求流程

1.请求报文
- 请求行:请求行由请求方法、URL以及协议版本三部分组成。
- 请求头:请求头为请求报文添加了一些附加信息,由"名/值"对组成,每行一对,名 和值之间使用冒号分隔,常用的请求头如表 1-6 所示。
|-----------------|-----------------------------------|
| 请求头 | 描述 |
| Host | 接受请求的服务器地址,可以是IP:端口号,也可以是域名 |
| User-Agent | 发送请求的应用程序名称, |
| Connection | 指定与连接相关的属性,如Connection:Keep-Alive |
| Accept-Charset | 通知服务端可以发送的编码格式 |
| Accept-Encoding | 通知服务端可以发送的数据压缩格式 |
| Accept-Language | 通知服务端可以发送的语言 |
- 空行:请求头部的最后会有一个空行,表示请求头部结束,接下来为请求体,这一 行非常重要,必不可少。
- 请求体:请求体是请求提交的参数,GET方法已经在URL中指明了参数,所以提交时没有数据。POST 方法提交的参数在请求体中。
2.响应报文
- 状态行:状态行由协议版本,状态码,状态码描述三部分组成。
- 响应头与请求头部类似,为响应报文添加了一些附加信息。常见响应头部如表所示。
|------------------|----------------------|
| 响应头 | 描述 |
| Server | 服务器应用程序软件的名称和版本 |
| Content-Type | 响应正文的类型(是图片还是二进制字符串) |
| Content-Length | 响应正文长度 |
| Content-Charset | 响应正文使用的编码 |
| Content-Encoding | 响应正文使用的数据压缩格式 |
| Content-Language | 响应正文使用的语言 |
- 空行:响应头部的最后会有一个空行,表示响应头部结束。
- 响应体:服务器返回的相应 HTML 数据,浏览器对其解析后显示页面。
四:nginx网站服务
一:Nginx服务基础
Nginx(发音为[engine x])专为性能优化而开发,其最知名的优点是它的稳定性和低系统资源消耗,以及对 HTTP并发连接的高处理能力(单台物理服务器可支持 30000~50000个并发请求)。
作为现代架构的中枢神经,Nginx在电商秒杀、流媒体分发、微服务网关等场景展现独特价值:通过加权轮询/最少连接等智能算法实现毫秒级负载均衡,借助动静分离策略将静态资源响应速度提升 3倍以上,结合 Lua 脚本扩展可构建毫秒级 WAF 防护。典型案例包括 Netflix每日 PB 级视频流量调度、Twitter 亿级消息推送的连接管理,其轻量化特性更在物联网领域支持百万设备并发通信,正因为如此,大量提供社交网络、新闻资讯、电子商务及虚拟主机等服务的企业纷纷选择 Nginx 来提供 Web 服务。本节将介绍 Nginx 的安装配置方法。
1.nginx安装及运行控制
Nginx 安装文件可以从官方网站 http://www.nginx.org/下载。下面以稳定版 Nginx1.12.0为例,介绍 Nginx 的安装和运行控制。
1.1编译安装 Nginx
(1)安装支持软件
Nginx 的配置及运行需要 pcre、zlib 等软件包的支持,因此应预先安装这些软件的开发包(devel),以便提供相应的库和头文件,确保 Nginx 的安装顺利完成。

(2)创建运行用户、组和日志目录
Nginx 服务程序默认以 nobody 身份运行,建议为其创建专门的用户账号,以便更准确地控制其访问权限,增加灵活性、降低安全风险。例如,创建一个名为 nginx 的用户,不建立宿主文件夹,也禁止登录到Shell 环境。

(3)编译安装 Nginx
配置 Nginx 的编译选项时,将安装目录设为/usr/local/nginx,运行用户和组均设为 nginx;启用 http stub status module 模块以支持状态统计,便于查看服务器的连接信息。具体选项根据实际需要来定,配置前可参考"./configure --help"给出的说明。


为了使 Nginx 服务器的运行更加方便,可以为主程序 nginx 创建链接文件,以便管理员直接执行"nginx"命令就可以调用 Nginx 的主程序。

- conf:保存 nginx 所有的配置文件,其中 nginx.conf 是 nginx 服务器的最核心最主要的配置文件
- html:目录中保存了 nginx 服务器的 web 文件,但是可以更改为其他目录保存 web 文件
- logs:用来保存 nginx 服务器的访问日志错误日志等日志,logs 目录可以放在其他路径,比如/var/logs/nginx 里面。
- sbin:保存 nginx 二进制启动脚本,可以接受不同的参数以实现不同的功能
1.2nginx的运行控制
(1)检查配置文件
与 Apache 的主程序 httpd 类似,Nginx 的主程序也提供了"-t"选项用来对配置文件进行检查,以便找出不当或错误的配置。配置文件 nginx.conf 默认位于安装目录下的 conf/子目录中。若要检査位于其他位置的配置文件,可使用"-c选项来指定路径。

(2)启动,停止nginx

通过检查 Nginx 程序的监听状态,或者在浏览器中访问此 Web 服务(默认页面将显示"Welcome to nginx!"),可以确认 Nginx 服务是否正常运行。

(3)添加nginx系统服务
为了使 Nginx 服务的启动、停止、重载等操作更加方便,可以编写 Nginx 服务脚本,并使用 chkconfig 和 systemctl 工具来进行管理。


配置完成后可以使用systemctl命令来启动,停止,重启nginx服务


1.3访问状态统计
Nginx 内置了 HTTP STUB STATUS 状态统计模块,用来反馈当前的 Web 访
问情况。
配置编译参数时可添加--with-http stub status module 来启用此模块支持,可以使用命令/usr/local/nginx/sbin/nginx-V 查看已安装的 Nginx 是否包含 HTTP STUB STATUS 模块。

在浏览器中访问 Nginx服务器的/status 网站位置,可以看到当前的状态统计信息,如图所示。其中,"Active connections"表示当前的活动连接数(4);而"server accepts handled requests"表示已经处理的连接信息,三个数字依次表示已处理的连接数(4)、成功的 TCP 握手次数(4)、已处理的请求数(3)。
