一、Nginx

Nginx介绍

为什么要学习Nginx?:

  • 单体架构搭建集群后出现了很多问题:

    • 客户端如何存储大量的服务器的ip地址和端口号
    • 客户端的请求到底发送给哪台服务器
    • 静态资源和动态资源如何分开处理
  • Nginx解决:
    • 客户端只需要记住Nginx的ip地址和端口号即可
    • 客户端不需要关注请求到底发送给了哪台服务器,Nginx会做统一的请求转发
    • Nginx可以代理静态资源,也可以代理动态资源,实现动静分离

二、安装Nginx

安装Nginx的docker-compose.yml

version: '3.1'
services:nginx:restart: alwaysimage: 10.9.12.254:5000/nginx:lastestcontainer_name: nginxports:- 80:80

三、Nginx的配置文件

  • 全局块:work_processer 1; 值越大,并发能力越强
  • events块:work_connections 1024;值越大,并发能力越强
  • http块:引入了Mime.type文件,文件中存储着大量的媒体类型
    • server块:listen 80; server_name localhost; 指定Nginx接收请求的ip和port

      • location / 块:root 路径; index index.html; location映射请求路径,基于root和index跳转静态资源

四、添加Nginx容器的数据卷

docker-compose.yml:

version: '3.1'
services:nginx:restart: alwaysimage: 10.9.12.254:5000/nginx:lastestcontainer_name: nginxports:- 80:80volumes:- ./conf.d/:/etc/nginx/conf.d/

手动在宿主机的conf.d目录下,编写以.conf为结尾的配置文件:

server{listen 80;server_name localhost;location / {root /usr/share/nginx/html;index index.html;}
}

可以保证访问Nginx的首页即可

五、Nginx的反向代理

  • 正向代理:

    • 代理服务器配置在客户端
    • 突破客户端的访问权限,提升访问速度
    • 对目标服务器隐藏客户端信息
  • 反向代理:
    • 代理服务器配置在服务端
    • 由代理服务器统一接收客户端的请求信息
    • 对客户端隐藏其他服务的地址信息,只对外暴露代理服务器的地址
  • 实现Nginx反向代理服务器
    • 准备目标服务,并测试访问:
version: '3.1'
services:tomcat1:image: 10.9.12.254:5000/tomcat:8.5.15container_name: tomcat1ports:- 8081:8080volumes:- ./webapps1:/usr/local/tomcat/webapps

编写Nginx配置,并重启Nginx:

server{listen 80;server_name localhost;location / {proxy_pass http://10.9.63.210:8081/;}
}

客户端访问Nginx,并由Nginx代理到目标服务:

六、location路径映射优先级(了解)

location映射方式:

路径映射方式 效果
location = /路径 精准匹配,一旦匹配上,不去匹配其他项
location ^~ /路径 字符串匹配,一旦匹配上,不去匹配其他项
location ^~ /路径 正则匹配,匹配上之后,会继续匹配其他项,要么匹配更高优先级,匹配正则最长
location ~ /^正则$/ 正则匹配,效果同上,忽略路径的大小写问题
location /路径 字符串匹配,使用较多,优先级最低,一般会配置 location / 保证尽量没有404

七、Nginx的负载均策略

  • 轮询:one by one
  • 权重:根据服务器硬件条件设施的不同,分配不同的权重值,按权重比例分配请求到不同的服务器
  • ip_hash:根据客户端请求时的ip地址不同,直接分配到指定的服务器上,将ip进行hash运算,再取余获取指定服务器的标识。ip_hash可以解决多服务之间数据共享问题。

7.1 实现Nginx的轮询效果

准备两台以上的目标服务器:(测试访问)

version: '3.1'
services:tomcat1:image: 10.9.12.254:5000/tomcat:8.5.15container_name: tomcat1ports:- 8081:8080volumes:- ./webapps1:/usr/local/tomcat/webappstomcat2:image: 10.9.12.254:5000/tomcat:8.5.15container_name: tomcat2ports:- 8082:8080volumes:- ./webapps2:/usr/local/tomcat/webapps

配置Nginx的配置文件:

upstream tomcats{server 10.9.63.210:8081;server 10.9.63.210:8082;# ...
}
server{listen 80;server_name localhost;location / {proxy_pass http://tomcats/;}
}

访问测试。。。

7.2 权重

准备两台以上的目标服务器:(测试访问)

version: '3.1'
services:tomcat1:image: 10.9.12.254:5000/tomcat:8.5.15container_name: tomcat1ports:- 8081:8080volumes:- ./webapps1:/usr/local/tomcat/webappstomcat2:image: 10.9.12.254:5000/tomcat:8.5.15container_name: tomcat2ports:- 8082:8080volumes:- ./webapps2:/usr/local/tomcat/webapps

配置Nginx的配置文件:

upstream tomcats{server 10.9.63.210:8081 weight=100;server 10.9.63.210:8082 weight=50;# ...
}
server{listen 80;server_name localhost;location / {proxy_pass http://tomcats/;}
}

访问测试。。。

7.3 ip_hash

准备两台以上的目标服务器:(测试访问)

version: '3.1'
services:tomcat1:image: 10.9.12.254:5000/tomcat:8.5.15container_name: tomcat1ports:- 8081:8080volumes:- ./webapps1:/usr/local/tomcat/webappstomcat2:image: 10.9.12.254:5000/tomcat:8.5.15container_name: tomcat2ports:- 8082:8080volumes:- ./webapps2:/usr/local/tomcat/webapps

配置Nginx的配置文件:

upstream tomcats{ip_hash;server 10.9.63.210:8081;server 10.9.63.210:8082;# ...
}
server{listen 80;server_name localhost;location / {proxy_pass http://tomcats/;}
}

访问测试。。。

八、Nginx的动静分离

  • 因为Nginx针对静态资源和动态资源使用的连接数是不一样的,针对静态资源需要2个链接数,动态资源需要4个连接数,可能将资源分离,变相的提升Nginx的并发能力。
  • 动态资源代理:proxy_pass http://ip:port/
  • 静态资源代理:root 资源目录 (如果location携带路径,默认会追加到资源目录后):
server{listen 80;server_name localhost;location /html {root /usr/share/nginx/;    # 因为路径携带html,所以或去/usr/share/nginx/html下找静态资源index index.html;  }location /img {root /usr/share/nginx/;autoindex on;         # 访问/img路径时,会以列表的形式展示当前目录下的全部静态资源}
}

九、Nginx集群

  • Nginx存在单点故障问题,如果Nginx宕机,会导致所有功能都无法使用,Nginx是客户端请求的入口。
  • 搭建Nginx集群存在问题:
    • 如果准备多台Nginx,客户端请求到底发送到哪一台。
    • 搭建了多台Nginx,如果一台Nginx出问题,如果不访问出问题的Nginx。
  • 统一使用Haproxy和Keepalived解决,Haproxy提供统一的入口,Keepalived监控Nginx的生存情况
  • 如果Haproxy出现问题:可以选择分组搭建Nginx集群,并分配haproxy,由DNS服务器来对域名解析,处理Haproxy宕机问题。
  • 搭建Nginx集群:
    • 找到预习资料中的Nginx集群搭建,并复制内部全部内容,到Linux中,直接docker-compose up -d

《Nginx入门这一篇就够了》相关推荐

  1. ComeFuture英伽学院——2020年 全国大学生英语竞赛【C类初赛真题解析】(持续更新)

    视频:ComeFuture英伽学院--2019年 全国大学生英语竞赛[C类初赛真题解析]大小作文--详细解析 课件:[课件]2019年大学生英语竞赛C类初赛.pdf 视频:2020年全国大学生英语竞赛 ...

  2. ComeFuture英伽学院——2019年 全国大学生英语竞赛【C类初赛真题解析】大小作文——详细解析

    视频:ComeFuture英伽学院--2019年 全国大学生英语竞赛[C类初赛真题解析]大小作文--详细解析 课件:[课件]2019年大学生英语竞赛C类初赛.pdf 视频:2020年全国大学生英语竞赛 ...

  3. 信息学奥赛真题解析(玩具谜题)

    玩具谜题(2016年信息学奥赛提高组真题) 题目描述 小南有一套可爱的玩具小人, 它们各有不同的职业.有一天, 这些玩具小人把小南的眼镜藏了起来.小南发现玩具小人们围成了一个圈,它们有的面朝圈内,有的 ...

  4. 信息学奥赛之初赛 第1轮 讲解(01-08课)

    信息学奥赛之初赛讲解 01 计算机概述 系统基本结构 信息学奥赛之初赛讲解 01 计算机概述 系统基本结构_哔哩哔哩_bilibili 信息学奥赛之初赛讲解 02 软件系统 计算机语言 进制转换 信息 ...

  5. 信息学奥赛一本通习题答案(五)

    最近在给小学生做C++的入门培训,用的教程是信息学奥赛一本通,刷题网址 http://ybt.ssoier.cn:8088/index.php 现将部分习题的答案放在博客上,希望能给其他有需要的人带来 ...

  6. 信息学奥赛一本通习题答案(三)

    最近在给小学生做C++的入门培训,用的教程是信息学奥赛一本通,刷题网址 http://ybt.ssoier.cn:8088/index.php 现将部分习题的答案放在博客上,希望能给其他有需要的人带来 ...

  7. 信息学奥赛一本通 提高篇 第六部分 数学基础 相关的真题

    第1章   快速幂 1875:[13NOIP提高组]转圈游戏 信息学奥赛一本通(C++版)在线评测系统 第2 章  素数 第 3 章  约数 第 4 章  同余问题 第 5 章  矩阵乘法 第 6 章 ...

  8. 信息学奥赛一本通题目代码(非题库)

    为了完善自己学c++,很多人都去读相关文献,就比如<信息学奥赛一本通>,可又对题目无从下手,从今天开始,我将把书上的题目一 一的解析下来,可以做参考,如果有错,可以告诉我,将在下次解析里重 ...

  9. 信息学奥赛一本通(C++版) 刷题 记录

    总目录详见:https://blog.csdn.net/mrcrack/article/details/86501716 信息学奥赛一本通(C++版) 刷题 记录 http://ybt.ssoier. ...

  10. 最近公共祖先三种算法详解 + 模板题 建议新手收藏 例题: 信息学奥赛一本通 祖孙询问 距离

    首先什么是最近公共祖先?? 如图:红色节点的祖先为红色的1, 2, 3. 绿色节点的祖先为绿色的1, 2, 3, 4. 他们的最近公共祖先即他们最先相交的地方,如在上图中黄色的点就是他们的最近公共祖先 ...

最新文章

  1. [Scala]集合中List元素转Tuple元素的函数迭代写法
  2. SCRIPT70: 没有权限
  3. 阿里云IoT将举办第三届极客创新挑战赛,吸引全球极客参赛
  4. java string的作用_浅谈java String不可变的好处
  5. 学习Spring Boot:(八)Mybatis使用分页插件PageHelper
  6. mysql设置账号过期
  7. 【Java】程序调试
  8. 如何打造139团队(不同层次人员的选择与培养,大型研发团队,大型敏捷开发团队)...
  9. 分块编码(Transfer-Encoding: chunked)
  10. ELM327 OBD to RS232 Interpreters
  11. mysql热拷贝_MySQL备份与恢复之热拷贝
  12. wpf listview透明但字不要透明_透明胶带放水里泡一泡,真是厉害,解决了很多家庭一大烦恼,实用...
  13. 第三篇:关于MVPArms与OKGO结合报错--mRootView为空
  14. 机顶盒系统升级服务器,服务器及其软件升级方法、IP机顶盒及其软件升级方法...
  15. 图片,表格末尾紧贴上方图片或表格添加脚注/备注
  16. 测试从业人员的职业规划
  17. 全屏 虚拟机_虚拟机的导入
  18. 恶意软件隐身术:把可执行文件隐藏在注册表里
  19. 【刘晓燕语法长难句】 简单句
  20. win 10iis php7,win10下设置IIS、安装php7.2

热门文章

  1. Eclipse 简介和插件开发天气预报
  2. 什么是镜像?阿里云服务器镜像是什么?镜像怎么选?
  3. 【渝粤题库】广东开放大学 电子支付与安全 形成性考核
  4. jQuery实现悬浮显示效果
  5. Build.VERSION.SDK_INT = Build.VERSION_CODES.HONEYCOMB
  6. python鼠标点击位置_python鼠标点击位置 Python3怎么模拟鼠标点击?
  7. ansys怎么使用anand模型_Anand粘塑性模型的UMAT子程序及验证
  8. 在ABAQUS中如何使用修正DPC帽盖模型
  9. android 10.0 SystemUI屏蔽某个app的通知
  10. 太极链——区块链可在在三个方面改善供应