课程后续阶段不再使用到虚拟机相关。

1 简介

1.1 是什么

反向代理服务器,而非部署应用的服务器(Tomcat)。 运维管理,对于我们了解即可。

1.2 核心功能

1,高性能的静态web服务器

2,反向代理

正向代理:代理服务器是代表⽤户客户端去访问后端服务器,代理的对象是前⾯的⽤户 反向代理:代理服务器是代表后端服务器供客户端去访问,对于前⾯的⽤户来说是⽆感知的,代理的对象是后⾯的后台服务器

反向代理和正向代理.png

1.3 优势

  1. ⾼并发、⾼性能(⼀个进程可以处理多个请求)
  2. 扩展性好(模块化设计)
  3. 异步⾮阻塞的事件驱动模型
  4. ⾼可靠性(热部署、7*24)

2 使用

2.1 安装(Ubuntu使用apt源来安装)

执行3条指令完成安装
**sudo add-apt-repository ppa:nginx/stable**
**sudo apt-get update**
**sudo apt-get install nginx**

查看是否安装成功
**nginx -v**
image.png
image.png

2.2 常用命令(Ubuntu 18.04)

cd /usr/sbin#启动命令
**./nginx**
#关闭命令
**./nginx -s stop**
#重启命令
**./nginx -s reload**

2.3 配置文件——nginx.conf

image.png

(1)全局配置

**user www-data;** #运⾏worker⼦进程的⽤户
**worker_processes auto;** #⼦进程的个数
**pid /run/nginx.pid;** #运⾏master的pid⽂件存放的路径
**include /etc/nginx/modules-enabled/*.conf;** #将其他配置⽂件包含进来

(2)events配置

**events { **
**worker_connections 768;**
**}**

(3)http配置(location,像servlet-mapping)

  1. ########### 每个指令必须有分号结束。#################
  2. #user administrator administrators; #配置⽤户或者组,默认为nobody nobody
  3. #worker_processes 2; #允许⽣成的进程数,默认为1
  4. #pid /nginx/pid/nginx.pid; #指定nginx进程运⾏⽂件存放地址
  5. error_log log/error.log debug; #制定⽇志路径,级别。这个设置可以放⼊全局块,http块,
  6. server块,级别以此为:debug|info|notice|warn|error|crit|alert|emerg
  7. events {
  8. accept_mutex on; #设置⽹路连接序列化,防⽌惊群现象发⽣,默认为on
  9. multi_accept on; #设置⼀个进程是否同时接受多个⽹络连接,默认为off
  10. #use epoll; #事件驱动模型,
  11. select|poll|kqueue|epoll|resig|/dev/poll|eventport
  12. worker_connections 1024; #最⼤连接数,默认为512
  13. }
  14. http {
  15. include mime.types; #⽂件扩展名与⽂件类型映射表
  16. default_type application/octet-stream; #默认⽂件类型,默认为text/plain
  17. #access_log off; #取消服务⽇志
  18. log_format myFormat '$remote_addr$remote_user [$time_local] $request
  19. $status $body_bytes_sent $http_referer $http_user_agent
  20. $http_x_forwarded_for'; #⾃定义格式
  21. access_log log/access.log myFormat; #combined为⽇志格式的默认值
  22. sendfile on; #允许sendfile⽅式传输⽂件,默认为off,可以在http块,server块,
  23. location块。
  24. sendfile_max_chunk 100k; #每个进程每次调⽤传输数量不能⼤于设定的值,默认为0,即不设
  25. 上限。
  26. keepalive_timeout 65; #连接超时时间,默认为75s,可以在httpserverlocation
  27. 块。
  28. upstream mysvr {
  29. server 127.0.0.1:7878;
  30. server 192.168.10.121:3333 backup; #热备
  31. }
  32. error_page 404 https://www.baidu.com; #错误⻚
  33. server {
  34. keepalive_requests 120; #单连接请求上限次数。
  35. listen 4545; #监听端⼝
  36. server_name 127.0.0.1; #监听地址
  37. location ~*^.+$ { #请求的url过滤,正则匹配,~为区分⼤⼩写,~*为不区分⼤
  38. ⼩写。
  39. #root path; #根⽬录
  40. #index vv.txt; #设置默认⻚
  41. proxy_pass http://mysvr; #请求转向mysvr 定义的服务器列表
  42. deny 127.0.0.1; #拒绝的ip
  43. allow 172.18.5.54; #允许的ip
  44. }
  45. }
  46. }

2.4 核心功能

1,反向代理

1 反向代理(代理单个服务器)

http{
 ...
 ...
 #这部分是被代理服务器的设置 ciggar只是⼀个代号
upstream ciggar{
 server 192.168.45.151:8080;
 }
 #这部分是nginx作为反向代理服务器的配置
 server{
 #nginx监听的端⼝
 listen 80;
 #虚拟服务器的识别标记,⼀般配置为本机ip
 server_name 192.168.45.151;
 #代理设置地址
 location / {
 proxy_pass http://ciggar;
 }
 }
}

2 负载均衡(代理集群)

#负载均衡策略
# 1 轮询(默认)
# 2 weight
# 3 ip_hash
# 4 least_conn 最少连接⽅式
# 5 fair(第三⽅) 响应时间
# 6 url_hash (第三⽅)
#weight weight 代表权重,默认为 1,权重越⾼被分配的客户端越多
...
 upstream ciggar{
 server 192.168.45.151:8080 weight=2;
 server 192.168.45.151:8081 weight=1;
 }
...
#ip_hash 每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问⼀个后端服务器,可以解决
session 的问题。例如:
...
 upstream ciggar{
 ip_hash;
 server 192.168.45.151:8080;
 server 192.168.45.151:8081;
 }
...

2,缓存

3 商城项目介绍

3.1 迭代开发(每次只开发一部分功能),敏捷开发(以用户的需求进化为核心)

**迭代式开发:**也被称作迭代增量式开发或迭代进化式开发,是一种与传统的瀑布式开发相反的软件开发过程,它弥补了传统开发方式中的一些弱点,具有更高的成功率和生产率
image.png
**敏捷开发:**以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。

3.2 商城项目

项目架构:
阶段1[ 3个模块 ]:(用户模块)(商品模块)(订单模块)
阶段2:高端的支付模块,更高端的秒杀模块(高并发)(分布式事务,分布式锁)(下来复习理解好分布式事务和分布式锁)
image.png
商城项目:要学习到的技术(20几个,业务功能不多,技术比较多)
了解微服务的概念
服务器框架Dubbo——基于Dubbo去实现我们的微服务
Redis(稍微复习一下)(更高端的客户端)
JWT
邮件发送
pipeline设计模式(订单模块)(简历上的亮点)(单例,工厂,建造者等)
Gateway

消息队列——RocketMQ
秒杀业务讲解
分布式事务
发号器——生成一个唯一ID
分布式锁——多个进程使用同一把锁
支付整合——支付宝
限流(讲),熔断(不讲)
Docker(提供视频自学)——云上的技术(运维技术,开发也应该知道)
image.pngimage.png