目录
一.web基础
以下将介绍web基础知识,包括域名的概念、DNS原理、静态网页和动态网页的相关知识。
1.域名和DNS
(1).域名的概念
域名是由一串用点分隔的字符组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置)。以下是关于域名概念的详细解释:
- 作为网站的标识:域名是网站在互联网上的“门牌号码”,是用户访问网站的重要入口。例如,当你在浏览器地址栏输入“https://www.baidu.com/”,其中“www.baidu.com”就是淘宝网站的域名。用户通过输入域名,就能准确地找到他们想要访问的网站,而无需记住复杂的IP地址。
- 具有唯一性:在整个互联网中,每个域名都是独一无二的。这就确保了网络上的每台计算机或网站都能通过其特定的域名被准确识别和访问,避免了地址混淆的问题。
- 由不同部分组成:域名通常由顶级域名、二级域名等多个部分组成,各部分之间用点号分隔。以“www.example.com”为例,“com”是顶级域名,代表商业机构;“example”是二级域名,是用户注册域名时自行定义的部分,用于区分不同的网站所有者;“www”是子域名,通常用于表示网站的不同服务或功能模块,但并非所有域名都有子域名。
- 便于记忆和使用:与IP地址相比,域名更符合人类的记忆习惯。IP地址是由数字组成的,例如“192.168.1.1”,很难被人们记住。而域名可以使用有意义的单词、词组或缩写等,如“baidu”“qq”等,方便用户记忆和输入,极大地提高了人们访问互联网资源的效率。
- 需要注册和管理:要使用一个域名,必须向相关的域名注册机构进行注册,并按照规定缴纳费用。注册后,域名所有者拥有该域名的使用权,并需要遵守相关的域名管理规定,负责对域名进行管理和维护,包括域名的续费、信息变更、解析设置等。
(2).hosts文件
hosts文件是一个操作系统本地的文本文件,用于将主机名映射到IP地址。它的作用类似于一个本地的DNS缓存。
当用户在浏览器中输入一个域名时,操作系统会首先检查hosts文件中是否有该域名对应的IP地址记录。如果有,就会直接使用该IP地址进行访问,而不会去请求DNS服务器;如果没有,才会向DNS服务器发起查询请求。
不同的操作系统,hosts文件的位置有所不同。在Windows系统中,它通常位于 C:\Windows\System32\drivers\etc\hosts
;在Linux和macOS系统中,它位于 /etc/hosts
。
列:在hosts文件中添加如下内容:
127.0.0.1 localhost
这表示将 localhost
这个域名映射到本地的IP地址 127.0.0.1
。
(3).DNS
DNS,即域名系统(Domain Name System),是互联网的一项核心服务。
DNS是一种将域名和IP地址相互映射的分布式数据库系统。它的主要作用是让用户能够通过方便记忆的域名来访问互联网上的各种资源,而无需记住复杂的IP地址。例如,当用户在浏览器中输入“ www.baidu.com”时,DNS系统会将这个域名转换为对应的IP地址,如“14.215.177.38”,这样计算机才能在网络中准确找到目标服务器并获取相应的信息。
当用户在浏览器中输入一个域名时,计算机首先会检查本地的DNS缓存,如果缓存中存在该域名对应的IP地址,就直接使用该地址进行访问。如果缓存中没有,就会向本地DNS服务器发送查询请求。
本地DNS服务器如果不知道该域名的IP地址,它会向上级DNS服务器(如根域名服务器、顶级域名服务器等)发送查询请求,按照域名的层级结构逐步查找,直到找到能够解析该域名的服务器,并获取到对应的IP地址。
最后,本地DNS服务器将获取到的IP地址返回给用户的计算机,同时也会在本地缓存中保存一份,以便下次查询时可以更快地响应。
DNS是互联网运行的基础架构之一,它使得互联网的访问更加便捷和人性化。如果DNS系统出现故障,将会导致用户无法通过域名访问网站,严重影响互联网的正常使用。同时,DNS的安全性也至关重要,一旦遭受,如DNS劫持、缓存污染等,可能会导致用户被重定向到恶意网站,造成信息泄露、财产损失等安全问题。
(4).域名注册
域名注册是Internet中用于解决地址对应问题的一种方法。域名注册遵循先申请先注册原则,管理机构对申请人提出的域名是否违反了第三方的权利不进行任何实质审查。每个域名都是独一无二的,不可重复的。域名注册的所有者都是以域名注册提交人填写域名订单的信息为准的,成功24小时后,即可在国际(ICANN)、国内(CNNIC)管理机构查询whois信息(域名所有 者等信息)。。
2.网页与HTML
网页是构成网站的基本元素,是承载各种网站应用的平台。通俗地说,网站就是由网页组成的。如果只有域名和虚拟主机而没有制作任何网页,那么客户仍旧无法访问这 个网站。因为网页是由HTML(超文本标记语言)编写的。
(1).网页简介
组成元素
- 文本:是网页中最基本的元素,用于传递信息,用户可以通过阅读文本了解网页的内容,
- 图像:能直观地展示信息或美化网页,使网页更具吸引力和视觉效果,常见的图像格式有JPEG、PNG、GIF等。
- 链接:是网页的重要元素,它可以将不同的网页或网站连接起来,使用户能够在互联网上方便地浏览和跳转,实现信息的快速传递和共享。
- 表单:用于收集用户输入的信息,如注册登录信息、调查问卷答案等,实现用户与网站之间的交互。
- 多媒体:包括音频、视频等元素,能丰富网页的内容,提供更生动的用户体验。
分类
- 静态网页:由HTML代码编写而成,内容固定,在不同设备上访问时展示效果基本-致。其优点是加载速度快、制作简单,适用于展示不需要经常更新的信息,如公司简介、产品介绍等页面。
- 动态网页:页面内容可以根据用户的操作或其他条件动态变化。它通常与服务器端技术(如PHP、Python Flask等)结合使用,能够根据用户的请求从数据库中获取数据并动态生成网页内容,常见于电商网站、论坛、博客等需要频繁更新和交互的网站,。
网页相关概念:
- 域名:是浏览网页时输入的网址。
- HTTP:用来传输网页的通信协议,使用浏览器访问网址时,在域名前面要加上 http://,表示使用http 协议传输网页。
- URL:是一种万维网寻址系统,表示网络上资源的位置路径。
- HTML:是编写网页的超文本标记语言。
- 超链接:具备将网站中不同网页链接起来的功能。
- 发布:将制作好的网页上传到服务器供用户访问的过程。
(2).HTML
HTML 叫做超文本标记语言,是一种规范,也是一种标准,它通过标记符号来标记要显示的网页中的各个部分。网页文件本身是一种文本文件,通过在文本文件中添加标记符,可以告诉浏览器如何显示其中的内容。
HTML 文件可以使用任何能够生成txt文件的文本编辑器来编辑,生成超文本标记 语言文件,只用修改文件名后缀为”.html”或“.htm” 即可。
基本标签
HTML 语法规则HTML标签采用双标记符的形式,前后标记符对应,分别表示标记开始和结束,标记符中间的内容被标签描述。青前标记符由“<XXX>”表示,结尾标记符多了一个“/”,由 “</XXX>”表示。
文档结构
HTML 文件最外层由<html></htm>表示,说明该文件是用 HTML 语言描述的。在它里面是并列的头标签(<head>)和内容标签(<body>),最基本的 HTML 文件结构如下:
<html>
<head>网页的内容描述信息<head>
<body>网页显示的内容</body>
</html>
常用头标签如下:
标签 | 描述 |
---|---|
<title> |
定义了文档的标题 |
<base> |
定义了页面链接标签的默认链接地址 |
<link> |
定义了一个文档和外部资源之间的关系 |
<meta> |
定义了 HTML 文档中的元数据 |
<script> |
定义了客户端的脚本文件 |
<style> |
定义了 HTML 文档的样式文件 |
常用内容标签如下 :
标签 | 描述 |
---|---|
<table> |
定义一个表格 |
<tr> |
定义了表格中的一行 |
<td> |
定义了表格中某一行的一列 |
<a> |
定义了一个超链接 |
<br> |
定义了换行 |
<font> |
定义了字体 |
(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#等高级程序设计语言、数据库 编程等多种技术的融合,以期实现对网站内容和风格的高效、动态和交互式的管理。
因此,从这个意义上来讲,凡是结合了HTM以外的高级程序设计语言和数据库技术进行的网页编程技术生成的网页都是动态网页。
二. HTTP协议
超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最广泛的一种网络协议。所有的网页文件都必须遵守这个标准。设计HTTP最初的目的是为 了提供一种发布和接收 HTML页面的方法。
(1). 协议概述
HTTP 协议采用了请求/响应模型。客户端向服务器发送一个请求,请求头包含请求的方法、URL、协议版本、以及包含请求修饰符、客户信息和内容的类似于MIME 的消息结构。服务器以一个状态行作为响应,响应的内容包括消息协议的版本,成功或者错误编码加上服务器信息、实体元信息以及可能的实体内容。
HTTP 已经演化出了很多版本,它们中的大部分都是向下兼容的
- HTTP/0.9已过时。只接受 GET一种请求方法,没有在通讯中指定版本号且不支持请求头。由于该版本不支持POST方法,所以客户端无法向服务器传递太多信息。
- HTTP/1.0 这是第一个在通讯中指定版本号的 HTTP 协议版本,至今仍被广泛 采用,特别是在代理服务器中。
- HTTP/1.1当前版本。持久连接被默认采用,并能很好地配合代理服务器工作。还支持以管道方式同时发送多个请求,以便降低线路负载提高传输速度
(2). HTTP方法
HTTP 支持几种不同的请求命令,这些命令被称为 HTTP 方法(HTTP method)每条 HTTP 请求报文都包含一个方法,告诉服务器要执行什么动作,包括:获取一个页面,运行一个网关程序,删除一个文件等。最常用的获取资源的方法是GET、POSTIHTTP 常用方法如表所示
HTTP方法 | 描述 |
---|---|
GET | 请求获取 Request-URl 所标识的资源 |
PUT | 请求服务器存储一个资源,并用 Request-URl 作为其标识 |
DELETE | 请求服务器删除 Request-URl 所标识的资源 |
POST | 在 Request-URl 所标识的资源后附加新的数据 |
HEAD | 请求获取由 Request-URl 所标识的资源的响应消息报头 |
GET方法采用的是 URL后缀的形式,比如 htp:/wwtest.comla.php?ld=123 就是一个 GET 请求,服务器接收后可以解析出 Id=123。而POST方法不需要在 URL 中 显示”?ld=123",参数作为内容进行了隐藏的提交。因此,表单类或者有用户名、密码 等内容提交时建议使用 POST方法。
GET方法在 URL 上显示参数,而 URL 是有长度限制,故不适合提交过大的数据。 GET方法可以被浏览器缓存,当请求已经被请求过一次的 URL 时,浏览器不需要向服 务器再次发出请求,直接在本地缓存中获得页面。GET 和POST方法对比如表所示。
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 | 服务器错误 |
生产环境常见的状态码如表:
消息 | 描述 |
---|---|
200 OK | 请求成功(其后是对GET 和POST 请求的应答文档) |
301 Moved Permanently | 请求的永久页面跳转 |
403 Forbidden | 禁止访问该页面 |
404 Not Found | 服务器无法找到被请求的页面 |
500 Internet Server Error | 内部服务器错误 |
502 Bad Gateway | 无效网关 |
503 Service Unavailable | 当前服务不可用 |
504 Gateway Timeout | 网关请求超时 |
(4). HTTP请求流程分析
用户在浏览器输入 URL 访问时,发起HTTP 请求报文,请求中包括请求行、请求头、请求体,服务器收到请求后返回响应报文,包括状态行、响应头、响应体,如图所示。
4.1.请求报文
请求行:请求行由请求方法、URL以及协议版本三部分
组成请求头:请求头为请求报文添加了一些附加信息,由“名/值”对组成,每行一对,名和值之间使用冒号分隔,常用的请求头如表所示。
请求头 | 描述 |
---|---|
Host | 接受请求的服务器地址,可以是IP:端口号,也可以是域名 |
User-Agent | 发送请求的应用程序名称 |
Connection | 指定与连接相关的属性,如Connection:Keep-Alive |
Accept-Charset | 通知服务端可以发送的编码格式 |
Accept-Encoding | 通知服务端可以发送的数据压缩格式 |
Accept-Language | 通知服务端可以发送的语言 |
- 空行:请求头部的最后会有一个空行,表示请求头部结束,接下来为请求体,这一 行非常重要,必不可少
- 请求体:请求体是请求提交的参数,GET 方法已经在URL中指明了参数,所以提交时没有数据。POST 方法提交的参数在请求体中
4.2.响应报文
状态行:状态行由协议版本,状态码,状态码描述三部分组成
响应头: 响应头与请求头部类似,为响应报文添加了一些附加信息。常见响应头部如表所示
响应头 | 描述 |
---|---|
Server | 服务器应用程序软件的名称和版本 |
Content-Type | 响应正文的类型(是图片还是二进制字符串) |
Content-Length | 响应正文长度 |
Content-Charset | 响应正文使用的编码 |
Content-Encoding | 响应正文使用的数据压缩格式 |
Content-Language | 响应正文使用的语言 |
空行:响应头部的最后会有一个空行,表示响应头部结束
响应体:服务器返回的相应HTML 数据,浏览器对其解析后显示页面
三. Nginx 网站环境部署
Nginx 是一款轻量级的 HTTP 服务器软件,由俄罗斯的lgor Sysoev 开发,其稳定、高效的特性逐渐被越来越多的用户认可。以下将讲解 Nginx 服务的基本构建、访问控制方式、虚拟主机的搭建,还有应用广泛的LNMP 架构服务器的部署方式,并对PHP FPM 模块如何支持 PHP 语言进行讨论。
(1).Nginx 服务基础
Nginx(发音为[engine x])专为性能优化而开发,其最知名的优点是它的稳定性和低统资源消耗,以及对HTTP并发连接的高处理能力(单台物理服务器可支持30000~50000个并发请求)。正因为如此,大量提供社交网络、新闻资讯、电子商务及虚拟主机等服务的企业纷纷选择Nginx来提供 Web 服务。
(2).编译安装 Nginx
安装支持软件
创建运行用户、组
编译安装 Nginx
(3). Nginx 的运行控制
检查配置文件
启动、停止 Nginx
[root@localhost ~]# killall -s HuP nginx
//重载,选项-SHUP 等同于-1:killall -1 nginx
[root@locahost ~]# killall -s QUIT nginx
//关闭,选项 -S QUIT 等同于 -3:killall -3 nginx
添加 Nginx 系统服务注:
fork 其实本身就是一个进程。
当执行 Execstart 启动 nginx 进程的时候,fork 进程自身以 daemon 模式运行,将 nginx作为一个子进程,并启动起来这个 nginx 的子进程。然后 fork 父进程退出。并将 fork 出的 nginx 子进程作为服务主进程进行跟踪
[root@localhost system]# systemctl daemon-reload
[root@localhost system]# systemctl enable nginx
[root@localhost system]# systemctl start nginx
(4).配置文件 nginx.conf
全局配置
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
#user nobody; ##运行用户
worker processes 1; ##工作进程数量
#error log logs/error.log; ##错误日志文件的位置
#pid logs/nginx.pid; ##PID 文件的位置
I/O 事件配置
events{
use epoll; ##使用 epoll 模型
worker connections 4096; ##每进程处理 4096 个连接
}
HTTP 配置