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. 安全性较高:由于客户端不知道后端服务器的具体信息,因此反向代理可以作为一种安全措施,保护后端服务器免受直接攻击。
相关推荐
Java 第一深情12 分钟前
详细教程-Linux上安装单机版的Hadoop
linux·运维·hadoop
Linux运维技术栈34 分钟前
ELK配置索引清理策略
linux·运维·elk
44漏洞观察员35 分钟前
linux实战-黑链——玄机靶场
linux·运维·服务器·web安全·网络安全
风虎云龙科研服务器37 分钟前
GPU服务器厂家:科研服务器领域机遇与博弈,AMD 新UDNA 架构
运维·服务器·架构
Suckerbin1 小时前
linux从0到1——shell编程6
linux·运维·服务器
一颗青果1 小时前
【Linux】详解shell代码实现(上)
linux·运维·服务器·前端·chrome·算法·1024程序员节
CT随1 小时前
Linux
linux·运维·服务器
誓约酱1 小时前
Linux 下进程基本概念与状态
linux·运维·服务器·开发语言·c++
Bug.ink1 小时前
Linux——1_系统的延迟任务及定时任务
linux·运维·服务器
LaoZhangGong1231 小时前
Linux第95步_Linux内核中的INPUT子系统
linux·运维·数据库·经验分享·stm32·input·stm32mp127