web基础
域名概述 2-1
-
域名的概念:IP 地址不易记忆,域名是互联网络上识别和定位计算机的层次结构式的字符标识,与该计算机的互联网协议 (IP) 地址相对应,用于在数据传输时标识计算机的电子方位,方便人们记忆和输入。
-
早期使用 Hosts 文件解析域名:存在主机名称重复、主机维护困难等问题。在早期计算机数量较少时,可通过修改本地 hosts 文件(C:\Windows\System32\drivers\etc\hosts)解决域名解析工作,但随着互联网发展,这种方式难以满足海量计算机与域名的对应关系需求。计算机会优先查看本地 HOSTS 文件中是否存在相应的域名解析记录,若存在则返回域名对应的 IP 地址,若不存在则通过 DNS 解析。
-
DNS(Domain Name System 域名系统):是一种可以将域名和 IP 地址相互映射的以层次结构分布的数据库系统,采用递归查询请求的方式来响应用户的查询,为互联网的运行提供关键性的基础服务。目前绝大多数的防火墙和网络都会开放 DNS 服务,DNS 数据包不会被拦截,因此可以基于 DNS 协议建立隐蔽信道,在客户端和服务器之间传输数据。
分布式 / 层次性的 DNS
DNS 系统主要包括域名空间(domain namespace)和资源记录(resource record)、域名服务器(name server)、解析器(resolver)这 3 个组成部分。客户端首先向首选域名服务器查询,首选域名服务器检查本地资源记录,若存在则作权威回答;若不存在,则检查本地缓存,有记录则直接返回结果;若本地资源记录和缓存记录都不存在,则向根域名服务器查询。根域名服务器返回相应顶级域的权威域名服务器的地址,首选域名服务器继续向该顶级权威域名服务器查询,如此迭代查询,直到得到对查询域名的权威回答,保存在本地缓存中并返回给客户端,完成此次查询。
域名概述 2-2
-
域名空间结构
-
根域 “.”:代表域名命名空间的根。
-
顶级域:直接处于根域下面的域,如 net、edu、com、gov、mil、org 等,代表一种类型的组织或一些国家,还有国家或地区代码。
-
组织域(二级域):在顶级域下面,用来表示顶级域以内的一个特定的组织。
-
国家 / 地区域名:属于顶级域的一种,由基于国际国家代码的两个字母组成,如.cn 代表中国。
-
二级域名:在顶级域名左侧,通常是组织或公司的名称。
-
FQDN(完全限定域名):主机名.DNS 后缀。
-
-
顶级域、二级域、主机名示例:如www.etiantian.org中,org 是顶级域,etiantian 是二级域,www 是主机名 。
域名注册
-
域名注册的作用:是 Internet 中用于解决地址对应问题的一种方法。
-
注册原则:遵循先申请先注册原则。
-
注册步骤与相关机构:域名注册需要通过域名注册服务机构进行,全球域名由 ICANN(互联网名称与数字地址分配机构)统一管理,具体注册工作由 ICANN 授权各国代理商执行,在中国还有 CNNIC(中国互联网络信息中心)负责相关事务。
网页的概念 3-1
-
网页:是纯文本格式文件,编写语言为 HTML,在用户的浏览器中被 “翻译” 成网页形式显示出来。
-
网站:由一个一个页面构成,是多个网页的结合体。
-
主页:打开网站后出现的第一个网页称为网站主页(或首页)。
网页的概念 3-2
-
域名:浏览网页时输入的网址,是互联网上某个网站或服务器的易于记忆的地址。
-
HTTP:用来传输网页的通信协议。
-
URL:是一种万维网寻址系统。
网页的概念 3-3
-
HTML:用来编写网页的超文本标记语言。
-
超链接:是将网站中不同网页链接起来的功能。
-
发布:将制作好的网页上传到服务器供用户访问的过程。
HTML 概述 2-1
-
HTML 超文本标记语言:是网页的 “源码” 。
-
浏览器:是 “解释和执行” HTML 源码的工具。
-
示例代码与展示:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>标题</title></head><body><h1>一级标题</h1><h2>二级标题</h2><h3>三级标题</h3><h4>四级标题</h4><h5>五级标题</h5><h6>六级标题</h6></body></html>
显示效果: 标题 一级标题 二级标题 三级标题 四级标题 五级标题 六级标题
HTML 概述 2-2
-
HTML 文档的结构
<html><head><title>我的第一个网页 </title></head><body >Hello World!</body></html>
-
HTML 网页:由头部部分、标题部分、主体部分组成,主体部分包含网页内容,包括文本、图像等。
Web 概述
-
Web(World Wide Web):即全球广域网,也称为万维网,是一种分布式图形信息系统,建立在 Internet 上的一种网络服务。
Web1.0 vs Web2.0
-
Web1.0:以编辑为特征,网站提供给用户的内容是编辑处理后的,然后用户阅读网站提供的内容,这个过程是网站到用户的单向行为。
-
Web2.0:更注重用户的交互作用,用户既是网站内容的消费者(浏览者),也是网站内容的制造者,加强了网站与用户之间的互动,网站内容基于用户提供,网站的诸多功能也由用户参与建设,实现了网站与用户双向的交流与参与,具有用户分享、以兴趣为聚合点的社群、开放的平台,活跃的用户等特征。
静态网页
-
定义与扩展名:静态网页是标准的 HTML 文件,扩展名是.htm、.html,包含文本、图像、声音、Flash 动画、客户端脚本和 ActiveX 控件及 Java 小程序等,是网站建设的基础,早期网站一般都由静态网页制作,没有后台数据库、不含程序和不可交互的网页。
-
适用场景:相对更新起来比较麻烦,适用于一般更新较少的展示型网站。
静态网页特点 2-1
-
固定 URL:每个静态网页都有一个固定的 URL,且 URL 以.htm、.html、.shtml 等常见形式为后缀,而不含有 “?”。
-
保存与访问:网页内容一经发布到网站服务器上,无论是否有用户访问,每个静态网页都是保存在网站服务器上的。
-
搜索引擎检索:静态网页的内容相对稳定,容易被搜索引擎检索。
静态网页特点 2-2
-
制作与维护工作量大:没有数据库的支持,在网站制作和维护方面工作量较大,当网站信息量很大时完全依靠静态网页制作方式比较困难。
-
交互性与功能限制:交互性较差,在功能方面有较大的限制。
-
浏览速度优势:页面浏览速度迅速,过程无需连接数据库,开启页面速度快于动态页面。
动态网页
-
URL 与交互特点:网页 URL 不固定,能通过后台与用户交互,在动态网页网址中有一个标志性的符号 ——“?”。
-
常用语言:常用的语言有 PHP、JSP、Python、Ruby 等。
动态网页的特点
-
交互性:网页会根据用户的要求和选择而动态改变和响应,将浏览器作为客户端界面,这将是今后 WEB 发展的大势所趋。
-
自动更新:无须手动地更新 HTML 文档,便会自动生成新的页面,可以大大节省工作量。
-
因时因人而变:当不同的时间,不同的人访问同一网址时会产生不同的页面。
小结
-
DNS 服务器作用:将域名解析为 IP 地址,实现域名与 IP 地址的相互映射,帮助用户通过域名访问网络资源。
-
HTML 文档的结构:由头部、标题、主体部分组成。
-
Web1.0 与 Web2.0 区别:Web1.0 是单向的内容提供,Web2.0 强调用户交互和参与。
-
动态页面与静态页面区别:静态页面 URL 固定、内容稳定但交互性差,动态页面 URL 不固定、可交互且能自动更新和因时因人而变。
HTTP 协议概述
-
HTTP 协议的应用与目的:是互联网上应用最为广泛的一种网络协议,设计这个协议的目的是为了发布和接收 Web 服务器上的 HTML 页面。
-
HTTP 协议的版本:有 HTTP 0.9、HTTP 1.0、HTTP 1.1、HTTP 2.0。
HTTP 方法 2-1
-
HTTP 方法的定义:HTTP 支持几种不同的请求命令,这些命令被称为 HTTP 方法(HTTP method),每条 HTTP 请求报文都包含一个方法,告诉服务器要执行什么动作,如获取一个 Web 页面、运行一个网关程序、删除一个文件等。
HTTP 方法 2-2
-
常用方法:常用的方法有 GET 和 POST,还有 PUT、DELETE 等。
-
方法对比 |HTTP 方法 | 描述 | |---|---| |GET | 请求获取 Request-URI 所标识的资源,发送一个请求来取得服务器上的某一资源,能被缓存,会保存在浏览器的浏览纪录里,有长度的限制(2048 字节),主要用于获取数据,查询的字符串会显示在 URL 中,不安全 | |PUT | 请求服务器存储一个资源,并用 Request-URI 作为其标识,PUT 通常指定了资源的存放位置,而 POST 则没有 | |DELETE | 请求服务器删除 Request-URI 所标识的资源 | |POST | 在 Request-URI 所标识的资源后附加新的数据,用于提交数据,不能被缓存,不会保存在浏览器的浏览纪录里,没有长度限制,查询的字符串不会显示在 URL 中,比较安全 |
GET 方法
-
获取数据与特点:从指定的服务器上获得数据,GET 请求能被缓存,会保存在浏览器的浏览纪录里,有长度限制(2048 字节),主要用于获取数据,查询的字符串会显示在 URL 中,不安全。
POST 方法
-
提交数据与特点:提交数据给指定服务器处理,POST 请求不能被缓存,不会保存在浏览器的浏览纪录里,没有长度限制,查询的字符串不会显示在 URL 中,比较安全。
HTTP 状态码
-
状态码的作用:当使用浏览器访问某一个 URL,会根据处理情况返回相应的处理状态。
-
状态码分类 | 状态码首位 | 已定义范围 | 分类 | |---|---|---| |1xx|100 - 101 | 信息提示 | |2xx|200 - 206 | 成功 | |3xx|300 - 305 | 重定向 | |4xx|400 - 415 | 客户端错误 | |5xx|500 - 505 | 服务器错误 |
-
常见状态码示例:200 表示请求成功;404 表示服务器无法找到被请求的页面。
生产环境常见的 HTTP 状态码
消息 | 描述 |
---|---|
200 OK | 请求成功(其后是对 GET 和 POST 请求的应答文档) |
301 Moved Permanently | 请求的永久页面跳转 |
302 | 临时重定向 |
403 Forbidden | 禁止访问该页面 |
404 Not Found | 服务器无法找到被请求的页面 |
500 Internal Server Error | 内部服务器错误 |
502 Bad Gateway | 无效网关 |
503 Service Unavailable | 当前服务不可用 |
504 Gateway Timeout | 网关请求超时 |
HTTP 协议请求流程分析
-
用户输入 URL。
-
获取端口号(通常为 80)。
-
连接到目标主机的指定端口(如连接到 161.58.228.45 的端口 80 )。
-
获取主机名。
-
通过 DNS 解析主机名获取 IP 地址。
-
发送一条 HTTP GET 请求。
-
从服务器读取 HTTP 响应。
-
关闭连接。
-
浏览器显示页面。
#编译安装nginx
安装编译依赖
dnf -y install zlib-devel pcre-devel gcc openssl-devel
创建 Nginx 用户和组(可选)
useradd -r -s /sbin/nologin nginx
下载软件包
cd /tmpwget https://nginx.org/download/nginx-1.26.0.tar.gz # 替换为最新版本号tar -zxvf nginx-1.26.0.tar.gzcd nginx-1.26.0
创建软连接从而让系统能够运行
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
./configure --prefix=/usr/local/nginx \--user=nginx \--group=nginx \--with-http_ssl_module \--with-http_v2_module \--with-http_realip_module \--with-http_stub_status_module \--with-http_gzip_static_module \--with-pcre \--with-stream \--add-module=./ngx_http_proxy_connect_module
参数说明
参数 | 作用 |
---|---|
--prefix | 指定 Nginx 安装目录 |
--user/--group | 指定运行 Nginx 的用户和组 |
--with-http_ssl_module | 启用 HTTPS 支持 |
--with-http_v2_module | 启用 HTTP/2 支持 |
--with-http_realip_module | 支持获取客户端真实 IP(如配合反向代理) |
--with-http_gzip_static_module | 支持预压缩的静态文件(.gz) |
--with-stream | 启用 TCP/UDP 代理支持(如负载均衡) |
--with-debug | 启用调试模式(生产环境可移除) |
编译并安装
makemake install
配置系统命令(systemd)
vim /etc/systemd/system/nginx.service
写入下列配置
[Unit]Description=my nginxAfter=network.target[Service]Type=forkingPIDFile=/usr/local/nginx/logs/nginx.pidExecStart=/usr/local/sbin/nginxExecStop=/usr/local/sbin/nginx -s stopExecRelaod=/usr/local/sbin/nginx -s reload[Install]WantedBy=multi-user.target
重载 systemd 并启动服务
systemctl daemon-reload
systemctl start nginx
systemctl enable nginx