当前位置: 首页 > news >正文

Nginx从入门到入土(三): 静态资源管理与代理服务

软负载和硬负载的区别

软负载均衡是通过在服务器上运行的软件应用程序来实现负载均衡的。这些软件可以是开源的,如Nginx、HAProxy,也可以是商业产品。

工作原理:

  • 运行环境: 软件负载均衡器通常运行在标准的物理服务器或虚拟机上。
  • 流量分配: 它通过软件算法来分析传入的网络请求,并根据预定的规则(如轮询、最小连接数、IP哈希等)将请求分发到后端服务器。
  • 可扩展性: 软件负载均衡器可以根据需要轻松添加或移除节点,通常与云服务兼容,支持自动扩展。
  • 成本: 相对于硬件负载均衡器,软件负载均衡器通常成本较低,特别是开源解决方案。

特点:

  • 灵活性: 软件负载均衡器易于配置和定制,可以快速适应不同的应用场景。
  • 性能: 性能取决于运行软件的服务器硬件,对于高流量的应用可能会有性能瓶颈。
  • 故障恢复: 通常依赖于服务器自身的冗余机制和高可用性配置。

硬负载均衡是通过专门的硬件设备来实现负载均衡的。这些设备通常由网络设备制造商提供,如F5 Networks的BIG-IP系列产品。

工作原理:

  • 专用硬件: 硬件负载均衡器是专门设计用于处理网络流量的硬件设备,具有高性能的网络处理器和优化的操作系统。
  • 流量分配: 硬件负载均衡器同样使用算法来分配流量,但通常提供更高级的功能,如SSL终止、压缩、数据缓存等。
  • 可扩展性: 硬件负载均衡器通常具有固定的处理能力,扩展需要购买额外的硬件设备。
  • 成本: 硬件负载均衡器成本较高,但提供了高性能和稳定性。

特点:

  • 高性能: 硬件负载均衡器设计用于处理高流量,通常具有更好的吞吐量和较低的延迟。
  • 可靠性: 硬件设备通常具有冗余电源、风扇和硬件组件,以提高可靠性。
  • 安全性: 硬件负载均衡器可能提供更高级的安全特性,如防火墙、DDoS防护等。

基于Nginx存放HTML静态资源

总的来说就是在html文件夹下面放置项目的静态资源文件,需要的时候调用。 

 

1. 在html文件夹下面创建两个文件夹,分别对应创建两个html文件。

2. 在hosts文件夹下面((一)中提到过)配置上相关的域名

为什么要配置不同的域名:项目中会根据业务分域名,每个子项目都是有自己的独立的团队的域名

例如  处理会员业务的团队域名member.boyatop.cn ;处理支付业务的团队域名order.boyatop.cn

3.修改nginx访问的端口与服务名称 

(conf文件允许多个server存在)

 在原有的server下面新添加两个server

listen:监听的端口

server_name:访问的服务名称,与host文件相匹配。

location  / : 用于匹配对 Web 服务器根目录(即域名后面的第一个 /)的请求

root :存放静态资源的目录相对路径

index:静态资源文件的名称  例如上图下面那个server里的内容应该修改成order.html

4.开启服务器防火墙,开放端口

 如果没有,就添加规则,添加你想要的端口

开启成功: 

5.在地址栏输入127.0.0.1:+你的端口

即可显示,没有显示的出来可以后台查看nginx是否正常运行等等

网页源代码:

成功页面: 

 基于nginx的反向代理/正向代理

反向代理

见图思义

客户端请求到达Nginx代理服务器,再通过代理服务器转发到后端服务器。

可以看到两个服务器都有各自的ip。反向代理的好处之一就是隐藏后端服务器的IP地址,由nginx代为转发

通过下面一个例子来验证:(先演示再解释)

1.打开nginx.conf文件

可以看到我们设置的服务名为www.boyatop.cn,要代理的服务器ip为127.0.0.1:8071/

确保你在host文件里面设置了127.0.0.1 www.boyatop.cn

2.启动nginx,防火墙没起的起防火墙等等(具体见小编的前两节)

第一篇文章中写过一个本地程序,端口起的是8071,也就是说能通过127.0.0.1:8071访问

如果访问的是“127.0.0.1:8071/ ”则走下面,输出Hello World!

如果访问的是“127.0.0.1:8071/getBoyatop” 则走上面,输出Hello World Nginx8071!!!!

3.在浏览器地址栏里输入 www.noyatop.cn:8070

跳到了我们通过127.0.0.1:8071/ 才能访问到的页面,8071也是能访问的

缘由,什么是反向代理??? 

  • 反向代理:Nginx作为代理服务器,接收客户端的请求,然后将请求转发到实际处理请求的服务器(本例中是运行在127.0.0.1:8080的服务器)。客户端不需要知道后端服务器的具体位置,对外表现就像是直接与Nginx进行交互。

体现在以下几个方面:

  1. URL隐藏:客户端访问的是www.boyatop.cn:8070,但实际处理请求的服务器地址是127.0.0.1:8071。客户端不会直接与后端服务器通信,因此后端服务器的地址被隐藏起来。

  2. 请求转发:Nginx配置中的proxy_pass指令指示Nginx将匹配到/的请求转发到127.0.0.1:8071。我们的Nginx配置是这样的:

    server {listen  8070;server_name www.boyatop.cn;location / {proxy_pass http://127.0.0.1:8071/;# 其他可能需要的代理设置...}
    }
    

    当请求www.boyatop.cn:8070时,Nginx会将请求转发到127.0.0.1:8071

  3. URL重写:在某些配置中,我们可以调整proxy_pass指令后的URL路径,以确保请求的URI正确地传递到后端服务器。例如,我们的proxy_pass指令也可以是这样的:

    proxy_pass http://127.0.0.1:8071/getBoyatop;
    

    那么请求www.boyatop.cn:8070会被转发到http://127.0.0.1:8071/getBoyatop

  4. 响应返回:后端服务器处理完请求后,将响应返回给Nginx,然后Nginx再将响应返回给客户端。客户端看到的始终是来自www.boyatop.cn:8070的响应,而不会知道实际上是由127.0.0.1:8071提供的内容。

通过这种方式,Nginx不仅可以实现反向代理,还可以提供负载均衡、SSL终止、缓存静态内容等附加功能。

当然负载均衡会在下面提到。

正向代理

是在用户端的,比如需要访问某些国外网站 ,例如Github。在相关部门的允许下,我们可以使用VPN,并且VPN是在我们的用户浏览器端设置的(并不是在远端的服务器设置)。浏览器先访问vpn地址,vpn地址转发请求,并最后将请求结果原路返回回来。

正向代理与反向代理的区别 

正向代理隐藏用户的真实行为,反向代理隐藏真实服务器

正向代理

  1. 服务的对象是客户端:正向代理服务器代表客户端发送请求,客户端知道代理的存在,并且通常需要配置代理设置。
  2. 隐藏客户端身份:正向代理可以隐藏客户端的真实IP地址,使服务器无法直接知道客户端的IP。
  3. 突破访问限制:正向代理可以用于绕过网络访问限制,比如翻墙访问被限制的网站。
  4. 缓存和加速:正向代理可以缓存常用资源,加快客户端访问速度。
  5. 安全性较低:由于客户端配置了代理,如果代理不安全,客户端的信息可能会泄露。

反向代理

  1. 服务的对象是服务器:反向代理服务器代表服务器接收客户端的请求,客户端通常不知道代理的存在。
  2. 隐藏服务器身份:反向代理可以隐藏服务器的真实IP地址和端口,提高服务器安全性。
  3. 负载均衡:反向代理可以分发请求到不同的后端服务器,实现负载均衡,提高服务的可用性和可靠性。
  4. SSL终止:反向代理可以处理SSL加密连接,减轻后端服务器的负担。
  5. 缓存和加速:反向代理可以缓存静态内容,加速内容的交付。
  6. 安全性较高:由于客户端不知道后端服务器的具体信息,因此反向代理可以作为一种安全措施,保护后端服务器免受直接攻击。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 腾讯云2024年数字生态大会开发者嘉年华(数据库动手实验)TDSQL-C初体验
  • npm 安装 与 切换 淘宝镜像
  • 使用 SpringBoot 基础web开发的支持
  • RT-DETR改进策略:BackBone改进|Next-ViT主干赋能下的革命性改进
  • 解决最短路径问题
  • HarmonyOS axios 拦截器处理token 及异常
  • vue websocket 使用
  • 【Ubuntu】虚拟机安装USB摄像头ROS驱动 usb_cam(最新方法)
  • 机器学习--神经网络
  • 一文了解高速工业相机
  • 【Linux】—— muduo网络库的安装配置与使用
  • 【ansible】role流程实验
  • 硬件基础知识
  • 2024 屡发屡中的论文方向:时空预测!
  • Spring 事务与 MySQL 事务:深度解析与实战指南
  • 【刷算法】从上往下打印二叉树
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • codis proxy处理流程
  • FastReport在线报表设计器工作原理
  • javascript从右向左截取指定位数字符的3种方法
  • JAVA多线程机制解析-volatilesynchronized
  • Mac转Windows的拯救指南
  • MySQL常见的两种存储引擎:MyISAM与InnoDB的爱恨情仇
  • PermissionScope Swift4 兼容问题
  • Vue 2.3、2.4 知识点小结
  • vue-loader 源码解析系列之 selector
  • 浮现式设计
  • 高性能JavaScript阅读简记(三)
  • 时间复杂度与空间复杂度分析
  • 腾讯优测优分享 | Android碎片化问题小结——关于闪光灯的那些事儿
  • 系统认识JavaScript正则表达式
  • ​iOS安全加固方法及实现
  • # Swust 12th acm 邀请赛# [ E ] 01 String [题解]
  • #【QT 5 调试软件后,发布相关:软件生成exe文件 + 文件打包】
  • #define,static,const,三种常量的区别
  • #HarmonyOS:基础语法
  • #前后端分离# 头条发布系统
  • (八)光盘的挂载与解挂、挂载CentOS镜像、rpm安装软件详细学习笔记
  • (带教程)商业版SEO关键词按天计费系统:关键词排名优化、代理服务、手机自适应及搭建教程
  • (附源码)ssm基于微信小程序的疫苗管理系统 毕业设计 092354
  • (免费领源码)Java#ssm#MySQL 创意商城03663-计算机毕业设计项目选题推荐
  • (三十五)大数据实战——Superset可视化平台搭建
  • (十)T检验-第一部分
  • (五)关系数据库标准语言SQL
  • (转)linux 命令大全
  • (转)ORM
  • (最全解法)输入一个整数,输出该数二进制表示中1的个数。
  • .mysql secret在哪_MYSQL基本操作(上)
  • .NET CF命令行调试器MDbg入门(四) Attaching to Processes
  • .net core 调用c dll_用C++生成一个简单的DLL文件VS2008
  • .net refrector
  • .NET实现之(自动更新)
  • @SuppressWarnings(unchecked)代码的作用
  • [2016.7 Day.4] T1 游戏 [正解:二分图 偏解:奇葩贪心+模拟?(不知如何称呼不过居然比std还快)]
  • [④ADRV902x]: Digital Filter Configuration(发射端)