域名
例如:www.baidu.com
dns域名:
网络上的通信都是基于ip,通信模式:TCP/IP
Tcp建立连接和断开连接,都是要双方进行确认的
建立连接:三次握手
断开连接:四次挥手
通信时端到端
端口进行通信(进程或者服务都是有指定的端口号)
http 80
Ngigx 80
Ssh 80
Mysql 3306
ip地址:端口号
Ip地址是主机在互联网上唯一的标识
Ip是确定省份,你是谁,从哪来
端口:你要访问谁
公网ip地址已经耗尽,现在这个唯一标识(ip地址),nat地址转换
Ip地址是一个点分十进制组成的
192.168.233.10
192.168.233 网络位
10 主机位
dns解析:
网络都是域名,dns的解析的作用,就是把域名解析成ip地址
迭代:从根域名到二级域
返回用户的过程:递归---运营商---本地hosts---用户
Dns解析的三种方式:
第一种:
/etc/hosts 本地解析,速度最快,如果需要配置的解析地址多,工作量比较大
格式:vim /etc/hosts
例如:192.168.233.10 www.baidu.com
访问域名就是在访问ip地址
第二种:
DNS服务器来进行解析
运营商:运营商提供一个DNS解析的ip地址
cat /etc/resolv.conf
格式
nameserver 8.8.8.8
第三种:
网卡配置:
Ifcfg-ens33
生效的顺序:
Hosts文件的优先级最高----网卡匹配------dns服务器(resolve.conf)
分布式和集群
分布式:把计算机系统或者是应用程序分布在多台独立的计算机和服务器上,通过网络的通信以及协作共同完成特定的任务或者服务
分布式的特点:
工作负载分散到多个节点上,提高性能和可靠性
常见的分布式系统:分布式前段Nginx 分布式数据库 分布式文件系统
集群:把多台计算机或者服务器连接在一块,形成一个单一的计算资源池。计算机通过网络互相连接,共享任务,集群都是由相同类型的计算机组成,运行的程序也是相同的
作用:通过增加计算机节点,扩展系统,然后提高整体的处理能力和容量
LNMP 架构:
L linux部署咋Linux
N Nginx提供网页访问
M MYSQL 数据库,保存用户名和密码
P PHP,处理动动态页面
html:
Html:超文本标记语言,也是我们最常用的网页格式,即是一种规范,也是一种标准,也是一个文本文件。
Xxx.html(主流)
Xxx.htm
网页:纯文本格式的文件 语言HTML。浏览器来翻译html语言形成网页
网站:是由多个网页组成,网页的结合体,打开网站之后,出现的第一个页面就是我们所说的网站或者主页
域名:域名需要注册,访问的网站是输入的网址就是我们说的域名
传输方式:http/https
http:超文本传输协议,https:加密的超文本传输协议,靠ssh证书进行认证,网页的传输通
信协议
URL:万维网的寻址系统(唯一标识)
URI:每一个/后面的就是,例如www.baidu.com/test/index.html
/test后面就是URI匹配网站不同分枝的内容
超链接:超链接把网站中的不同内容连接起来
url:
URL:万维网的寻址系统(唯一标识)
URI:每一个/后面的就是,例如www.baidu.com/test/index.html
/test后面就是URI匹配网站不同分枝的内容
超链接:超链接把网站中的不同内容连接起来
静态页面和动态页面:
静态页面只是文本文件,可以修改,一般以.html .htm保存的文本文件,网站的基础。静态页面和后台数据库没有任何交互,不包含请求程序,更新起来比较复杂,一般适用于更新比较少的展示型网站
一般都是网站的主页,静态页面的URL是固定的
动态页面:
- URL不是固定的,能通过后台和用户交互
- 动态页面的URL当中一般有?问号
- 动态页面:PHP,jsp,python node.js
- 动态页面可以自动更新
- 访问的时间不同,访问的内容会发生变化
http协议:
版本:
http0.9 已淘汰
http1.0:基本淘汰
http1.1:目前最常用的http https http1.1(主要服务于https,端口443,1.1的特点就是提供了加密和安全传输端口的一种http)
http2.0:新一代的加密协议,传输速度比http1.1的速度更快
http协议:超文本传输协议,基于tcp协议的应用层传输协议,简单来说就是客户端和服务端之间(请求和响应)进行数据传输的一种规则
http是应用层上的协议,建立连接:三次握手,断开:四次挥手,建立连接之后,客户端于服务端之间请求和接受,响应都是通过socket接口来调用tcp协议实现
端口到端口的通信
http:是一种无状态协议,http协议不会对发送的请求和响应进行任何处理。就是让http协议能够处理大量的事物,提高效率
http本身无状态,会话保持和缓存的问题
http1.0是没有会话保持这个功能,http1.1,长链接加入到http协议中
http的状态码:
1xx 信息提示100-101 无实际作用
2xx表示请求处理结果成功
3xx重定向,访问网页的时候会跳转304请求的是缓存
4xx客户端错误,403 404 请求的页面不存在或者没有权限访问403表示请求的页面禁止访问,404 表示机器无法请求页面
5xx服务端错误
500 内部服务器错误
解决方法:检查防护墙,检查进程,检查端口,检查配置文件,端口号是否被占了
502 无效网关
503服务不可用,可能下线了
504网关请求超时
生产中常见的状态码:
200 OK 表示请求成功
301 永久重定向
304 表示访问的是本地缓存
403 Forbiden 禁止客户端访问该页面
404 NOT FOUND服务器无法找到被请求的页面
500 internal service error 内部服务器错误
502 BAD getway网关失效 (服务器的网关失效)
503 service Unavailable 服务器不可用(网络维护)
504 GATEWAY timeout 网关请求超时(服务端处于维护或者路由器故障)
缓存:
缓存:cookie记录用户状态,跟踪统计用户访问该网站的习惯,是用户户身份,保存客户信息,可以驻留在我们的计算机上,是一个很小的文件,保存特定的客户端和网站之间的信息数据。
时效性:30天保存的信息就会失效
客户端的ip地址验证:安全验证
传输数据:一旦服务器生成了http服务器响应,会通过之间建立的连接响应返回给客户端
响应当中包含了请求的资源(网页内容)以及其他的需要传输的数据(一般都是自定义)
关闭连接:响应发生完成,服务端发送完成,服务端会进入连接关闭,http1.1 time_wait。双方之间不会再有数据传输,一旦有了新的请求,连接可以继续使用,160秒会话保持或者长链接
http1.1会一次性获取页面的全部资源,然后发起四次挥手,只是不再传输数据,连接并没有断开
客户端解析和现实响应:
客户端收到http响应之后,解析响应内容,包括页面解析,显示图片,播放视频
主要靠的就是浏览器
客户端也可以继续发起请求,或者打开新的连接,请求其他资源
http的请求方式:
分别是get post
Get方式:
get就是向服务器发起请求数据,依照http协议来进行,本质上get就是请求
请求行:
请求体:
Accept:客户端可以接受的数据类型
Accept-encoding 客户端可以接受的编码格式,以及数据是否需要压缩
Accept-language 客户端可以接受的语言类型
Cache-crontab数据在本地缓存的时间
Connection连接的处理方式,一般都是会话保持
Host表示请求的ip和端口号,也可以表示请求的主机名
User-agent客户端请求使用的浏览器信息
响应头:
响应体:
Post方式:
Post向服务端发送数据,按照http协议进行,服务端添加数据,post的请求方式会修改服务器上的数据
Get和post的区别:
Get的请求可以换组
Get的请求还可以保存在浏览器的cookie中
Get的请求时间长度有限
Get就是获取数据
Post
Post的请求不能被缓存,,也不会保存在浏览器的cookie中
Post请求没有长度限制
请求字符串不会显示,比较安全
两个工具:
Talnet
可以测试指定服务器的端口是否正常
格式:telent ip 端口号
nc
两个终端建立通信
一主机
二主机
Nginx网站服务:
它是一个高性能,轻量级的web服务软件
高性能:对http并发连接的处理能很高,单台物理服务器可支持30000-50000个并发请求(实际操作中,为了维持服务器的稳定,一般设置在20000个左右)
轻量级:Nginx软件很小,安装所需的空间也很小
稳定性强:
对系统资源消耗低
Nginx的主要功能:
- 处理动态内容,处理动态内容较差能力较差,Tomcat或srping
- 虚拟主机:Nginx配置多个虚拟主机,每一个虚拟主机都可以作为一个域名和站点,每个虚拟主机都可以拥有独立的配置和资源
- 支持URL重定向:可以对URL的请求进行修改和重定向
- 缓存机制,可以缓存静态文件和动态文件
- 自带日志记录,监控访问日志和报错日志,控制日志还是在/var/log/message中
- 也可以作为代理服务器,通过代理可以访问其他的后端服务器
淘宝使用的就是基于Nginx二次开发的,Tenginet天极
编译安装Nginx:
关闭防火墙和安全机制
安装依赖环境
创建运行用户、组
Cat /etc/passwd检查一下
将压缩包拖入/opt目录,解压
编译安装Nginx
接下来
递归目录,把目录的权限都给Nginx
Conf:保存Nginx的所有配置文件,其中Nginx.Conf是Nginx的主配置文件
Html:保存Nginx的web文件,.html结尾的文件,图片
50x:是Nginx默认的报错提示页面
Logs:保存日志的目录,路径可以改
Access.log记录的是访文日志
Error.log记录的是报错日志
Shin:记录的是二进制的启动文本
vim /lib/systemd/system/nginx.service
常见Nginx 命令
-t 检测语法和配置文件是否正确
-v 查看版本
-V查看Nginx版本和支持的配置模块
-s 给Nginx主程序发送信号,不能开启Nginx服务,例如 stop restart reload
yum安装需要epel源
yum -y install nginx
Nginx的配置文件的内容
全局模块:
hhtp模块:配置代理缓存日志虚拟主机第三方模块
Server块:配置虚拟主机的设备。在http的模块当中可以有多个server
Location块:location模块只能配置在server模块当中,匹配uri.
一个server模块当中可以有多个location. 例如www.baidu.com/test1
Nginx的功能模块:
Proxy:代理功能,核心功能模块之一,配置反向的功能
Proxy_pass指定
定义在location当中.
Headers功能模块:
处理请求和头部的响应信息,获取客户端的真实ip
upstream模块:
七层反向代理模块,只能配置在http模块中,或者stream模块中
Steam:模块
四层反向代理模块,只能写在全局配置当中
限制文件并发打开静态页面数
vim /etc/security/limits.conf
# 65535 为Linux系统最大打开文件数
* soft nproc 65535 *表示所有的应用
* hard nproc 65535
* soft nofile 65535
* hard nofile 65535
reboot
要想生效,必须重启,无法sysctl -p
注意:设置保存后,需要重新ssh连接才会看到配置更改的变化
root指定访问页面的根目录是拼接
/var/www/html/test
Index.html
root指定的目录是location匹配访问的path目录的上一级目录,这个path目录一定要是真实存在root指定目录下的;
Alias也可以指定访问,必须后面跟绝对路径
alias指定的目录是准确的,即location匹配访问的path目录下的文件直接是在alias目录下查找的;
实验:
统计Nginx的访问状态
添加一个location
去网页访问:
Active connections:2
表示当前激活连接数
Server accepts
已经处理的连接数
Handled成功的tcp握手次数
Requests已经处理的请求数
Reading :0
服务器正在从客户端读取数据,正在读取客户端请求的连接数
Writing:1
服务器正在将响应数据发送给客户端,正在阿星客户端写入响应的连接数
Waiting:1
表示有连接处于空闲状态,等待客户端请求连接数time_wait
如何配置虚拟主机:
添加第一个虚拟主机:
添加第二个虚拟机主机
创建所需的目录,同时创建内容
域名进行响应,必须要映射,一个ip可以映射多个域名
Vim /etc/hosts
进入火狐浏览器输入域名
基于ip的虚拟主机
基于端口的虚拟主机
基于授权的访问控制:
内部来做访问控制
工具:httpd-tools
基于客户端的访问控制: