课程后续阶段不再使用到虚拟机相关。
1 简介
1.1 是什么
反向代理服务器,而非部署应用的服务器(Tomcat)。 运维管理,对于我们了解即可。
1.2 核心功能
1,高性能的静态web服务器
2,反向代理
正向代理:代理服务器是代表⽤户客户端去访问后端服务器,代理的对象是前⾯的⽤户 反向代理:代理服务器是代表后端服务器供客户端去访问,对于前⾯的⽤户来说是⽆感知的,代理的对象是后⾯的后台服务器
1.3 优势
- ⾼并发、⾼性能(⼀个进程可以处理多个请求)
- 扩展性好(模块化设计)
- 异步⾮阻塞的事件驱动模型
- ⾼可靠性(热部署、7*24)
2 使用
2.1 安装(Ubuntu使用apt源来安装)
执行3条指令完成安装**sudo add-apt-repository ppa:nginx/stable****sudo apt-get update****sudo apt-get install nginx**
2.2 常用命令(Ubuntu 18.04)
cd /usr/sbin#启动命令**./nginx**
#关闭命令**./nginx -s stop**
#重启命令**./nginx -s reload**
2.3 配置文件——nginx.conf

(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)
########### 每个指令必须有分号结束。##################user administrator administrators; #配置⽤户或者组,默认为nobody nobody。#worker_processes 2; #允许⽣成的进程数,默认为1#pid /nginx/pid/nginx.pid; #指定nginx进程运⾏⽂件存放地址error_log log/error.log debug; #制定⽇志路径,级别。这个设置可以放⼊全局块,http块,server块,级别以此为:debug|info|notice|warn|error|crit|alert|emergevents {accept_mutex on; #设置⽹路连接序列化,防⽌惊群现象发⽣,默认为onmulti_accept on; #设置⼀个进程是否同时接受多个⽹络连接,默认为off#use epoll; #事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventportworker_connections 1024; #最⼤连接数,默认为512}http {include mime.types; #⽂件扩展名与⽂件类型映射表default_type application/octet-stream; #默认⽂件类型,默认为text/plain#access_log off; #取消服务⽇志log_format myFormat '$remote_addr–$remote_user [$time_local] $request$status $body_bytes_sent $http_referer $http_user_agent$http_x_forwarded_for'; #⾃定义格式access_log log/access.log myFormat; #combined为⽇志格式的默认值sendfile on; #允许sendfile⽅式传输⽂件,默认为off,可以在http块,server块,location块。sendfile_max_chunk 100k; #每个进程每次调⽤传输数量不能⼤于设定的值,默认为0,即不设上限。keepalive_timeout 65; #连接超时时间,默认为75s,可以在http,server,location块。upstream mysvr {server 127.0.0.1:7878;server 192.168.10.121:3333 backup; #热备}error_page 404 https://www.baidu.com; #错误⻚server {keepalive_requests 120; #单连接请求上限次数。listen 4545; #监听端⼝server_name 127.0.0.1; #监听地址location ~*^.+$ { #请求的url过滤,正则匹配,~为区分⼤⼩写,~*为不区分⼤⼩写。#root path; #根⽬录#index vv.txt; #设置默认⻚proxy_pass http://mysvr; #请求转向mysvr 定义的服务器列表deny 127.0.0.1; #拒绝的ipallow 172.18.5.54; #允许的ip}}}
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 迭代开发(每次只开发一部分功能),敏捷开发(以用户的需求进化为核心)
**迭代式开发:**也被称作迭代增量式开发或迭代进化式开发,是一种与传统的瀑布式开发相反的软件开发过程,它弥补了传统开发方式中的一些弱点,具有更高的成功率和生产率
**敏捷开发:**以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。
3.2 商城项目
项目架构:
阶段1[ 3个模块 ]:(用户模块)(商品模块)(订单模块)
阶段2:高端的支付模块,更高端的秒杀模块(高并发)(分布式事务,分布式锁)(下来复习理解好分布式事务和分布式锁)
商城项目:要学习到的技术(20几个,业务功能不多,技术比较多)
了解微服务的概念
服务器框架Dubbo——基于Dubbo去实现我们的微服务
Redis(稍微复习一下)(更高端的客户端)
JWT
邮件发送
pipeline设计模式(订单模块)(简历上的亮点)(单例,工厂,建造者等)
Gateway
消息队列——RocketMQ
秒杀业务讲解
分布式事务
发号器——生成一个唯一ID
分布式锁——多个进程使用同一把锁
支付整合——支付宝
限流(讲),熔断(不讲)
Docker(提供视频自学)——云上的技术(运维技术,开发也应该知道)


