01-basic

  • ECS(Elastic Compute Service)

1. 初级

  1. 版本区别与安装
  2. 基础知识
    1. Nginx安装部署
    2. http协议基础
    3. 域名与dns
  3. 核心功能与应用场景
    1. 网站静态资源访问
    2. 虚拟主机
    3. 反向代理服务
    4. 负载均衡
    5. rewrite(防爬虫)
    6. 软防火墙
    7. Tengine的扩展模块
  4. 实战:构建一个可供大家访问的静态网站

多数的应用

  1. 反向代理
  2. Web服务器,用来做网站的

2. 高级

  1. 核心配置与调优
  2. 深入http1/2
  3. Squid
  4. 缓存服务
  5. 日志管理
  6. 高可用 keepalived
  7. 监控管理 zabbix prometheus
  8. kubernetes集群化管理
  9. lua语言基础
  10. Openresty扩展模块
  11. Nginx二次开发
  12. 实战:构建高性能、高可用、高并发的亿级流量网关系统

  1. Nginx之所以性能高,借助了linux操作系统特性,epoll对文件访问的加载,sendFile特性…
  2. Linux下Nginx纯静态访问的性能极高
  3. Squid缓存代理服务器。cdn主要是Squid实现的,跨网络的,并不同一服务器上,不在同一机房里加的
  4. 后端服务日志是审计日志,对业务的操作,对数据的curd。Nginx日志是轻量级的,用户低价值的请求,用户的行为轨迹,后期做画像系统、风险监控

3. 版本区别

1. Openresty(国产)

Openresty 官网open in new window

  1. Nginx是c写的,c++、php做二次开发成本太高了
  2. lua语言做二次开发,lua是内嵌在Nginx内部的,性能高,易学
  3. Openresty整合了大量lua脚本,可以连接各种中间件。最常用Kafka、Redis
image-20220402111226137

2. Tengine(国产)

3. Nginx plus(商业版本)

  • 可以连接Nginx_controller控制面板,可视化的对Nginx进行监控。Openresty、Tengine都不具备

4. 其他web服务器

1. IIS

  • Windows系统

性能最高,全部利用操作系统的特性来实现

  1. 接收请求,先收到的是操作系统
  2. 利用winOS,纯异步的网络、文件IO,提供高性能的访问
  3. Nginx是跑在CentOS(RedHat免费版本),基于Linux内核,和Windows内核性能差一点(包括unix)
  4. 开源社区在做Java研发,全是开源生态,eg:Redis没Windows版本。多数软件都是基于Linux开发,基于Linux特性。强行移植到Windows上,性能下降

2. Apache Httpd1/2(开源)

  1. 1.0稳定,20历史
  2. 2.0效率高
  3. 单纯的做web服务器,响应js、css、image,纯静态的资源。Java项目应用的很少了,现在web服务器更多的需要其提供网关的功能(即路由,请求来了路由到后端系统上)
  4. Apache基金会,不是商业组织

3. lighttpd

  • 没什么人用了,开源社区也不活跃了

4. http

image-20240823085124569
  • Content-Length:指的是body的长度
image-20220713093145382
image-20220713152502163

1. 域名

  1. 顶级域名(唯一):listao.cn
  2. 二级域名:xxoo.listao.cn
  3. 三级域名:xx.xxoo.listao.cn
  4. 范解析

  • .com:公司缩写
  • .org:自发组织缩写
  • .net:工作室缩写

2. 域名访问

  1. hosts解析,存在则返回ip
  2. 本机配置DNS服务器,存在则返回ip
  3. 公网顶级注册商,找域名mapping的DNS,从DNS中得到域名mapping的ip
  4. 本机DNS存,域名和ip的映射,下次直接返回

1. hosts

  • hosts文件被保护,怕恶意软件篡改ip

2. 本机DNS

  • 向DNS服务器发送域名,获取ip
image-20220713093225785

3. 公网DNS

  • 买了域名,提供两个自带的DNS用
image-20240823085656114
  • 域名和ip的mapping关系。两个域名能mapping一个ip
image-20240823085959768
  • 平时ping的是域名
  • tcp/ip协议只能向ip发请求,不能向域名发请求
~# ping www.listao.cn
PING www.listao.cn (192.168.*.*): 56 data bytes
64 bytes from 192.168.*.*: icmp_seq=0 ttl=63 time=0.729 ms
64 bytes from 192.168.*.*: icmp_seq=1 ttl=63 time=0.649 ms
^C
--- www.listao.cn ping statistics ---
2 packets transmitted, 2 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.649/0.689/0.729/0.040 ms
 







3. 虚拟化

  • 把一台主机,虚拟化为多台主机,物理上的虚拟,硬件隔离。相当一台主机上装了几个OS
    • 代表:kvm。虚拟出来的东西叫vps
    • 性能很大损耗

4. 容器化

  • 软件隔离方式,在OS上创建出像是主机的主机,资源做不到像kvm一样隔离
    • podman、docker
    • 性能高,牺牲小

5. 虚拟主机

  • 虚拟主机是一种特殊的软硬件技术,它可以将网络上的一台计算机分成多个虚拟主机,每个虚拟主机可以独立对外提供www服务,这样就可以实现一台主机对外提供多个web服务,每个虚拟主机之间是独立的,互不影响的
  • vhost,应用层软件来虚拟,Nginx虚拟多台主机,靠的是域名、ip和配置。完全没有隔离概念。无法对性能进行限制
  1. 只能限制请求连接数
  2. 限制空间大小,和软件没有太大关系,靠分配好的物理路径来限制
    • /vhost/fangxinkan.com限制目录最多写多少字节。限制磁盘资源。cpu、内存完全限制不了
image-20240823090550481