C++文件服务器项目—项目总结与反向代理—7
C++文件服务器项目—项目总结与反向代理—7
- 1. 项目总结
- 2. 项目提炼
- 3. web服务器的反向代理
- 4. 存储节点的反向代理
组件介绍基本写完了,后续进行深入。
本专栏知识点是通过零声教育的线上课学习,进行梳理总结写下文章,对c/c++linux课程感兴趣的读者,可以点击链接 C/C++后台高级服务器课程介绍 详细查看课程的服务。
1. 项目总结
- 客户端
- 浏览器–>http协议
- nginx反向代理服务器
- 如果为web服务器服务,web服务器需要集群化
- 如果为fastdfs服务,存储节点需要集群化
- web服务器 - nginx
- 处理静态请求 - > 访问服务器文件
- 动态请求 -> 客户端给服务器提交的数据
- 借助fastCGI进行处理
- 讲的是单线程处理方式 - API
- 也可以多线程处理 -> 另外的API
- 使用spawn-fcgi启动
- 借助fastCGI进行处理
- mysql
- 关系型数据库 - 服务器端
- 存储什么?
- 项目中所有用到的数据
- redis
- 非关系型数据库 - 服务器端使用
- 数据默认在内存, 不需要sql语句, 不需要数据库表
- 键值对存储, 操作数据使用的是命令
- 和关系型数据库配合使用
- 存储服务器端经常访问的数据
- fastDFS
- 分布式文件系统
- 追踪器, 存储节点, 客户端
- 存储节点的集群
- 横向扩容 -> 增加容量
- 添加新组, 将新主机放到该组中
- 纵向扩容 -> 备份
- 将主机放到已经存在的组中
- 存储用户上传的所有的文件
- 给用户提供下载服务器
- 横向扩容 -> 增加容量
2. 项目提炼
- 文件服务器可以用在哪些地方
- 电商网站
- 旅游网站
- 租房
- 装修公司
- 医院
- 短视频网站
- 云盘
- 图床
- 需要什么?
- 首先需要的是fastDFS
- 配置环境
- 扩容
- 操作fastDFS - 客户端
- 浏览器
- 桌面终端 - Qt,mfc
- 数据库操作
- mysql
- oralce
- 有一个web服务器 - Nginx
- 静态资源部署
- 动态请求 - 编写fastCGI程序
- 注册
- 登录
- 上传
- 下载
- 秒传
- 文件列表的获取等等
- redis
- 存储服务器访问比较频繁的数据
- 首先需要的是fastDFS
3. web服务器的反向代理
注意,这里对web服务器做反向代理,完全是拓展知识点。实际上,单台web服务器能够承载很高的并发了,再做反向代理,真的适用吗?有这么高的并发来吗?本项目用的是单台web服务器,并没有对其做反向代理。
在C++文件服务器项目—Nginx—3一文中以及详细写了如何做反向代理和负载均衡,这里不做详细介绍。
# 反向代理的那台服务器nginx.conf配置如下server {listen 80; # 客户端访问反向代理服务器, 代理服务器监听的端口server_name reverse.proxy.com; # 客户端访问反向代理服务器, 需要一个域名location / {# 指令 / 转发所有# 反向代理服务器转发指令, http:// 固定的头proxy_pass http://linux.com;}}# 添加一个代理模块,代理两台服务器upstream linux.com{ # 可以配置权重# 1/4 概率 走102# 3/4 概率 走103#server 192.168.109.102:80 weight=1;#server 192.168.109.103:80 weight=3;server 192.168.109.102:80;server 192.168.109.103:80;}## =====================================# web服务器
# 相对于web服务器来说,它们的工作都是一样的
# 所有它们的所有location也应该相同
web服务器需要做什么?
# 192.168.109.102
location /
{root xxx;index xxx;
}location /hello/
{root xx;index xxx;
}location /upload/
{root xxx;index xx;
}# 192.168.109.103
location /
{root xxx;index xxx;
}location /hello/
{root xx;index xxx;
}location /upload/
{root xxx;index xx;
}
4. 存储节点的反向代理
上图的反向代理服务器代理的是每个存储节点上部署的Nginx。每个存储节点上的Nginx的职责: 解析用户的http请求, 帮助用户快速下载文件。
客户端上传了一个文件, 被存储到了fastDFS上, 得到一个文件ID "/group1/M00/00/00/wKgfbViy2Z2AJ-FTAaM3Asg3Z0782.mp4"
。因为存储节点有若干个, 所有下载的时候不知道对应的存储节点的访问地址,给存储节点上的nginx web服务器添加反向代理服务器之后, 下载的访问地址:只需要知道nginx反向代理服务器的地址就可以了:192.168.109.100。只需要访问:http://192.168.109.100/group1/M00/00/00/wKgfbViy2Z2AJ-FTAaM3Asg3Z0782.mp4
即可
客户端的请求发送给了nginx反向代理服务器,反向代理服务器不处理请求, 只转发, 转发给存储节点上的nginx服务器。
# 反向代理服务器的配置- nginx.conf- 找出处理指令: 去掉协议, iP/域名, 末尾文件名, ?和后边的字符串- /group1/M00/00/00/ - 完整的处理指令 - 添加location
server{location ~/group1/M([0-9])([0-9]){# 数据转发, 设置转发地址proxy_pass http://test1.com;}location ~/group2/M([0-9])([0-9]){# 数据转发, 设置转发地址proxy_pass http://test2.com;}
}
# 都属于group1一组,所以轮询发给谁都能,会自动同步
upstream test1.com
{# fastDFS存储节点的地址, 因为存储节点上安装了nginx, 安装的nginx作为web服务器的角色server 192.168.1.101;server 192.168.1.102;server 192.168.1.103;
}
# 都属于group2一组,所以轮询发给谁都能,会自动同步
upstream test2.com
{# fastDFS存储节点的地址, 因为存储节点上安装了nginx, 安装的nginx作为web服务器的角色server 192.168.2.101;server 192.168.2.102;server 192.168.2.103;
}# ===================================
存储节点上的web服务器的配置
存储节点1location ~/group1/M([0-9])([0-9]){# 请求处理ngx_fastdfs_module;}存储节点2location ~/group2/M([0-9])([0-9]){# 请求处理ngx_fastdfs_module;}
C++文件服务器项目—项目总结与反向代理—7相关推荐
- 使用 nginx 同域名下部署多个 vue 项目,并使用反向代理
花了 3 天时间,趁着我还没有忘记,先记录下来 效果 目前有 2 个项目(project1, project2),还有一个 nginx 自带的 index.html,我添加了对应的链接代码(稍后粘贴出 ...
- 分布式项目-Nginx安装(反向代理)
可以根据parent_id来查询分类的列表 服务器上的图片是如果管理的? 1.如果是分布式环境引用会存在问题 2.图片的下载也会给服务器增加压力 3.如果存在高并发的话,就需要增加tomcat服务器, ...
- Linux中 Nginx+uwsgi部署flask项目 Nginx负载均衡 反向代理
Nginx是一款自由的.开源的.高性能HTTP服务器和反向代理服务器. 轻量级,同样起web服务,比 apache占用更少的内存及资源 抗并发, nginx处理请求是异步非阻塞的,而 apache则是 ...
- 图解跨域请求、反向代理原理,对前端更友好的反向代理服务器 - Caddy
关注 程序员成长指北,回复"1" 加入我们一起学习,天天进步 转载自:https://github.com/a1029563229/blogs/ 作者:晒兜斯 caddy 写在开头 ...
- Windows下的Nginx部署React项目及解决反向代理跨域问题等-20.8.1更新
文章目录 1. 概述 2. 优点 3. 为什么选择Nginx 4. 下载 5. 安装 6. 配置参数详细说明 7. 命令行参数 7.1 启动nginx 7.2 重启nginx--重新加载配置 7.3 ...
- 创建vue项目(三)路由跳转、反向代理、本地存储、状态管理
数据更新渲染,axios请求数据,配置环境 一.路由跳转 app.vue <template><div id="app"><keep-alive> ...
- history模式 nginx配置_nginx反向代理部署vue项目(history模式)的方法
前言: 根据标题我们要区分出两个信息 1. history 模式部署 ( vue的路由模式如果使用history,刷新会报404错误.) 2. Nginx 做反向代理 问题1思考: vue-route ...
- Nginx反向代理及域名解析访问本地项目
···目录··········································· 终极目标 明确思路 域名解析 破解域名 Nginx反向代理解决端口问题 完成测试 注意事项 终极目标 ...
- 宝塔面板部署nuxt项目线程守护启动以及Nginx反向代理
宝塔面板部署nuxt项目 宝塔部署Vue,nuxt等项目需要是使用到node.jshe nginx才能实现部署.因此使用宝塔面板使用软件安装安装PM2管理器以及nginx代理软件 步骤一 新建文件夹上 ...
最新文章
- es 查询语法_ES 在数据量很大的情况下(数十亿级别)如何提高查询效率啊?
- 'webpack-dev-server' 不是内部或外部命令,也不是可运行的程序 或批处理文件。
- oracle学习笔记系列------oracle 基本操作之表的增删改查
- c保留小数点后三位数没有则为0_C语言中……“计算结果保留三位小数。”怎么表示?...
- silverlight 自定义资源整理(待后续补充)
- Struts中ActionActionForm
- 学习笔记--数据结构与算法基础(青岛大学-王卓)--第八章排序
- Mac安装numpy
- hp6960无法连接计算机,惠普6960驱动
- CAD2020学习教程
- 【FastDFS-V5.11】Linux下FastDFS+Nginx实现分布式图片服务器搭建详细教程(单机模式)
- Java开发快递物流项目(7)
- BankNext 微服务:案例研究
- mapping的介绍和实战
- 日常问题:上传接口报错
- 北京电影学院及中央戏剧学院老师推荐的必看影片,我真是一条一条翻的,一条一条写的,是真的。...
- 总结VS下opencv无法正常显示图片的几种问题及其解决方案
- 孔雀优化算法(POA)——(含MATLAB代码)
- EasyExcel工具类(开箱即用)
- Saltstack自动化运维详解(数据系统 jinja模板 job管理)