C++文件服务器项目—项目总结与反向代理—7

  • 1. 项目总结
  • 2. 项目提炼
  • 3. web服务器的反向代理
  • 4. 存储节点的反向代理

  组件介绍基本写完了,后续进行深入。

  本专栏知识点是通过零声教育的线上课学习,进行梳理总结写下文章,对c/c++linux课程感兴趣的读者,可以点击链接 C/C++后台高级服务器课程介绍 详细查看课程的服务。

1. 项目总结

  1. 客户端

    • 浏览器–>http协议
  2. nginx反向代理服务器
    • 如果为web服务器服务,web服务器需要集群化
    • 如果为fastdfs服务,存储节点需要集群化
  3. web服务器 - nginx
    • 处理静态请求 - > 访问服务器文件
    • 动态请求 -> 客户端给服务器提交的数据
      • 借助fastCGI进行处理

        • 讲的是单线程处理方式 - API
        • 也可以多线程处理 -> 另外的API
        • 使用spawn-fcgi启动
  4. mysql
    • 关系型数据库 - 服务器端
    • 存储什么?
      • 项目中所有用到的数据
  5. redis
    • 非关系型数据库 - 服务器端使用
    • 数据默认在内存, 不需要sql语句, 不需要数据库表
    • 键值对存储, 操作数据使用的是命令
    • 和关系型数据库配合使用
    • 存储服务器端经常访问的数据
  6. fastDFS
    • 分布式文件系统
    • 追踪器, 存储节点, 客户端
    • 存储节点的集群
      • 横向扩容 -> 增加容量

        • 添加新组, 将新主机放到该组中
      • 纵向扩容 -> 备份
        • 将主机放到已经存在的组中
      • 存储用户上传的所有的文件
      • 给用户提供下载服务器

2. 项目提炼

  1. 文件服务器可以用在哪些地方

    • 电商网站
    • 旅游网站
    • 租房
    • 装修公司
    • 医院
    • 短视频网站
    • 云盘
    • 图床
  2. 需要什么?
    • 首先需要的是fastDFS

      • 配置环境
      • 扩容
    • 操作fastDFS - 客户端
      • 浏览器
      • 桌面终端 - Qt,mfc
    • 数据库操作
      • mysql
      • oralce
    • 有一个web服务器 - Nginx
      • 静态资源部署
      • 动态请求 - 编写fastCGI程序
        • 注册
        • 登录
        • 上传
        • 下载
        • 秒传
        • 文件列表的获取等等
    • redis
      • 存储服务器访问比较频繁的数据

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相关推荐

  1. 使用 nginx 同域名下部署多个 vue 项目,并使用反向代理

    花了 3 天时间,趁着我还没有忘记,先记录下来 效果 目前有 2 个项目(project1, project2),还有一个 nginx 自带的 index.html,我添加了对应的链接代码(稍后粘贴出 ...

  2. 分布式项目-Nginx安装(反向代理)

    可以根据parent_id来查询分类的列表 服务器上的图片是如果管理的? 1.如果是分布式环境引用会存在问题 2.图片的下载也会给服务器增加压力 3.如果存在高并发的话,就需要增加tomcat服务器, ...

  3. Linux中 Nginx+uwsgi部署flask项目 Nginx负载均衡 反向代理

    Nginx是一款自由的.开源的.高性能HTTP服务器和反向代理服务器. 轻量级,同样起web服务,比 apache占用更少的内存及资源 抗并发, nginx处理请求是异步非阻塞的,而 apache则是 ...

  4. 图解跨域请求、反向代理原理,对前端更友好的反向代理服务器 - Caddy

    关注 程序员成长指北,回复"1" 加入我们一起学习,天天进步 转载自:https://github.com/a1029563229/blogs/ 作者:晒兜斯 caddy 写在开头 ...

  5. Windows下的Nginx部署React项目及解决反向代理跨域问题等-20.8.1更新

    文章目录 1. 概述 2. 优点 3. 为什么选择Nginx 4. 下载 5. 安装 6. 配置参数详细说明 7. 命令行参数 7.1 启动nginx 7.2 重启nginx--重新加载配置 7.3 ...

  6. 创建vue项目(三)路由跳转、反向代理、本地存储、状态管理

    数据更新渲染,axios请求数据,配置环境 一.路由跳转 app.vue <template><div id="app"><keep-alive> ...

  7. history模式 nginx配置_nginx反向代理部署vue项目(history模式)的方法

    前言: 根据标题我们要区分出两个信息 1. history 模式部署 ( vue的路由模式如果使用history,刷新会报404错误.) 2. Nginx 做反向代理 问题1思考: vue-route ...

  8. Nginx反向代理及域名解析访问本地项目

    ···目录··········································· 终极目标 明确思路 域名解析 破解域名 Nginx反向代理解决端口问题 完成测试 注意事项 终极目标 ...

  9. 宝塔面板部署nuxt项目线程守护启动以及Nginx反向代理

    宝塔面板部署nuxt项目 宝塔部署Vue,nuxt等项目需要是使用到node.jshe nginx才能实现部署.因此使用宝塔面板使用软件安装安装PM2管理器以及nginx代理软件 步骤一 新建文件夹上 ...

最新文章

  1. es 查询语法_ES 在数据量很大的情况下(数十亿级别)如何提高查询效率啊?
  2. 'webpack-dev-server' 不是内部或外部命令,也不是可运行的程序 或批处理文件。
  3. oracle学习笔记系列------oracle 基本操作之表的增删改查
  4. c保留小数点后三位数没有则为0_C语言中……“计算结果保留三位小数。”怎么表示?...
  5. silverlight 自定义资源整理(待后续补充)
  6. Struts中ActionActionForm
  7. 学习笔记--数据结构与算法基础(青岛大学-王卓)--第八章排序
  8. Mac安装numpy
  9. hp6960无法连接计算机,惠普6960驱动
  10. CAD2020学习教程
  11. 【FastDFS-V5.11】Linux下FastDFS+Nginx实现分布式图片服务器搭建详细教程(单机模式)
  12. Java开发快递物流项目(7)
  13. BankNext 微服务:案例研究
  14. mapping的介绍和实战
  15. 日常问题:上传接口报错
  16. 北京电影学院及中央戏剧学院老师推荐的必看影片,我真是一条一条翻的,一条一条写的,是真的。...
  17. 总结VS下opencv无法正常显示图片的几种问题及其解决方案
  18. 孔雀优化算法(POA)——(含MATLAB代码)
  19. EasyExcel工具类(开箱即用)
  20. Saltstack自动化运维详解(数据系统 jinja模板 job管理)

热门文章

  1. 【Linux探索之旅】第二部分第三课:文件和文件夹,组织不会亏待你
  2. 锻造1-300快速冲技能指南
  3. 求历年奥斯卡获奖动画影片
  4. CloudCompare进行点云标注
  5. 计算机入门及操作技能训练,计算机入门及操作技能训练.ppt
  6. 解决使用代理时无法访问 Microsoft Store 0x80131500
  7. 华为服务器登陆不了系统,服务器的数据库怎么登陆不了怎么办
  8. 如何分析处理32亿条实时日志的?
  9. H5手机移动端开发常用资源整合
  10. 一文告诉你智能语音中的VAD模块为什么这么重要