探索Nginx的奥秘--从代理到负载均衡的艺术实践

这篇具有很好参考价值的文章主要介绍了探索Nginx的奥秘--从代理到负载均衡的艺术实践。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

⭐在分布式微服务架构中,服务是分布在不同主机、服务器上的。我们希望访问不同的服务,就需要一个代理服务器来为我们做请求转发,这个时候我们就引入了Nginx。⭐

🌺Nginx的引入🌺

我们在请求传统的单体项目时,常常是在低并发的情况下进行的。一个公司项目刚刚上线的时候,并发量小,用户使用的少,所以在低并发的情况下,一个jar包启动应用就够了,然后内部tomcat返回内容给用户。

探索Nginx的奥秘--从代理到负载均衡的艺术实践,java,nginx,负载均衡,运维

但是慢慢的,使用公司平台的用户越来越多了,并发量慢慢增大了,这时候一台服务器满足不了我们的需求了。

探索Nginx的奥秘--从代理到负载均衡的艺术实践,java,nginx,负载均衡,运维

于是我们横向扩展,又增加了服务器。这个时候几个项目启动在不同的服务器上,用户要访问,就需要增加一个代理服务器了,通过代理服务器来帮我们转发和处理请求。下图的服务器1就是代理服务器

探索Nginx的奥秘--从代理到负载均衡的艺术实践,java,nginx,负载均衡,运维

我们希望这个代理服务器可以帮助我们接收用户的请求,然后将用户的请求按照规则帮我们转发到不同的服务器节点之上。这个过程用户是无感知的,用户并不知道是哪个服务器返回的结果,我们还希望他可以按照服务器的性能提供不同的权重选择。保证最佳体验!所以我们使用了Nginx。

还有一种情况就是,当我们的分布式微服务项目不同服务部署在不同主机下的时候,我们希望通过不同的路径访问不同的服务怎么来实现?

探索Nginx的奥秘--从代理到负载均衡的艺术实践,java,nginx,负载均衡,运维

公司的项目不一定都部署在一台服务器上,对吧?通常情况下都会被拆分在不同主机上的,我们希望通过不同路径访问它们,而且我们为了分担服务器的访问压力,我们希望轮训访问这两台服务器。在访问服务器上的资源的时候,我们还希望静态资源和动态资源能够分开,这又怎么办?

所以整理一下我们的需求,我们的访问需求如下:

  • 需要代理服务器
  • 负载均衡
  • 动静分离

实现上面的需求可以用 网关服务,也可以使用 Nginx

使用Nginx还有一个好处就是可以使用 高可用集群 防止服务器宕机。

探索Nginx的奥秘--从代理到负载均衡的艺术实践,java,nginx,负载均衡,运维

如上图,我们用两个Nginx服务器搭建了一个简单的集群,这个也叫双机热备。当其中一台Nginx宕机之后,仍能用另一台来工作,两台Nginx之间是用keeplived来监测心跳,从而确定主从设备之间是否宕机。

探索Nginx的奥秘--从代理到负载均衡的艺术实践,java,nginx,负载均衡,运维

🌺深刻理解正向代理与反向代理🌺

正向代理反向代理Nginx的重要概念、功能。因为国内的砖家起名字的时候一开始说正向代理,反向代理。但是,从逻辑处理上来说有漏洞,就是一个必要的前提需要说明,正向和反向是基于什么来定方向的?就像坐标轴一样,原点是什么,定义右边是正,左边是负。

我们先看一下官网解释:

🌹Reverse proxy🌹

From Wikipedia, the free encyclopedia

探索Nginx的奥秘--从代理到负载均衡的艺术实践,java,nginx,负载均衡,运维

A reverse proxy taking requests from the Internet and forwarding them to servers in an [internal network](https://www.zhihu.com/search?q=internal network&search_source=Entity&hybrid_search_source=Entity&hybrid_search_extra={“sourceType”%3A"answer"%2C"sourceId"%3A471185862}). Those making requests to the proxy may not be aware of the internal network.
In computer networks, a reverse proxy is a type of proxy server that retrieves resources on behalf of a client from one or more servers. These resources are then returned to the client, appearing as if they originated from the proxy server itself.[1] Unlike a forward proxy, which is an intermediary for its associated clients to contact any server, a reverse proxy is an intermediary for its associated servers to be contacted by any client.
Quite often, popular web servers use reverse-proxying functionality, shielding application frameworks of weaker HTTP capabilities.

重点是这句:

Unlike a forward proxy, which is an intermediary for its associated clients to contact any server, a reverse proxy is an intermediary for its associated servers to be contacted by any client。

翻译:正向代理是客户端和其他所有服务器(重点:所有)的代理者,而反向代理是客户端和所要代理的服务器之间的代理。

总结:一个对客户端负责,一个对所代理的服务器负责。一个,一个

我们配合下图来理解:

客户端这个时候想访问,但是因为国内原因不能访问,这个时候就用了代理服务器,代理服务器帮你访问服务器资源,拿到以后传给国内的你。这个时候代理服务器是在帮你去其他网络拿资源,整个时候整个网络的资源走向如下图,从外网服务器到代理服务器,最后到客户端,所以这个是 正向代理正向=代理服务器在帮你(客户端)=资源走向

探索Nginx的奥秘--从代理到负载均衡的艺术实践,java,nginx,负载均衡,运维

探索Nginx的奥秘--从代理到负载均衡的艺术实践,java,nginx,负载均衡,运维

那什么是 反向代理 呢?看下图:

客户端将请求发送到代理服务器,由代理服务器去选择目标服务器获取数 据后,返回给客户端,这种代理方式为反向代理

接下来我们就理解什么是 反向代理?

项目设计者, 不希望客户端直接访问目标 Web 服务器(比如目标 Web 服务器是集群, 如 果直接访问就会提供多个公网 IP), 而是希望提供一个统一的访问 IP, 这个是理解反向代理 的前提,即为什么要反向代理

探索Nginx的奥秘--从代理到负载均衡的艺术实践,java,nginx,负载均衡,运维

  • 反向代理帮助的对象是目标 Web 服务器。

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

当前面的内容理解后,对于正向代理和反向代理的区别就很好理解了。

最核心的不同在于代理的对象不同。

  • 正向代理是代理客户端
  • 反向代理是代理服务器。

而根据这核心的区别,我们也可以记住:代理哪端便可以隐藏哪端

也就是说:

  • 正向代理隐藏真实客户端
  • 反向代理隐藏真实服务端

🌹反向代理为什么叫反向代理🌹

从我们用户的角度来看:

  • 代理我们发出请求的客户端被称为正向代理
  • 而代理我们访问的服务器,则被称为反向代理

从代理结构的角度来看(代理服务器在两种代理中的作用均为收发请求与响应)

探索Nginx的奥秘--从代理到负载均衡的艺术实践,java,nginx,负载均衡,运维

🌹负载均衡🌹

当客户端向反向代理服务器(比如 Nginx)发出请求,如果 Nginx 代理了多个 WEB 服务器(集群),Nginx 会将请求/负载分发到不同的服务器,也就是负载均衡。

这么做的好处就是分担服务器压力,提高并发效率。

探索Nginx的奥秘--从代理到负载均衡的艺术实践,java,nginx,负载均衡,运维

🌹动静分离🌹

为了加快网站的解析速度,可以把动态资源和静态资源由不同的服务器来 解析,降低单个服务器的压力。

探索Nginx的奥秘--从代理到负载均衡的艺术实践,java,nginx,负载均衡,运维

🌺Nginx的安装🌺

⭐Windows安装⭐

🌹下载nginx🌹

http://nginx.org/en/download.html 下载稳定版本。
以nginx/Windows-1.16.1为例,直接下载 nginx-1.16.1.zip。
下载后解压,解压后如下

探索Nginx的奥秘--从代理到负载均衡的艺术实践,java,nginx,负载均衡,运维

###🌹启动nginx🌹

有很多种方法启动nginx

(1)直接双击nginx.exe,双击后一个黑色的弹窗一闪而过

(2)打开cmd命令窗口,切换到nginx解压目录下,输入命令 nginx.exe ,回车即可

🌹检查nginx是否启动成功🌹

直接在浏览器地址栏输入网址 http://localhost:80 回车,出现以下页面说明启动成功!

探索Nginx的奥秘--从代理到负载均衡的艺术实践,java,nginx,负载均衡,运维

###🌹配置监听🌹

nginx的配置文件是conf目录下的nginx.conf,默认配置的nginx监听的端口为80,如果80端口被占用可以修改为未被占用的端口即可。

探索Nginx的奥秘--从代理到负载均衡的艺术实践,java,nginx,负载均衡,运维

当我们修改了nginx的配置文件nginx.conf 时,不需要关闭nginx后重新启动nginx,只需要执行命令 nginx -s reload 即可让改动生效

🌹关闭nginx🌹

如果使用cmd命令窗口启动nginx, 关闭cmd窗口是不能结束nginx进程的,可使用两种方法关闭nginx

(1)输入nginx命令 nginx -s stop(快速停止nginx) 或 nginx -s quit(完整有序的停止nginx)

(2)使用taskkill taskkill /f /t /im nginx.exe文章来源地址https://www.toymoban.com/news/detail-757785.html

  1. taskkill是用来终止进程的,
  2. /f是强制终止 .
  3. /t终止指定的进程和任何由此启动的子进程。
  4. /im示指定的进程名称 .

🌹Linux下常用命令🌹

# 开启
service firewalld start
# 重启
service firewalld restart
# 关闭
service firewalld stop
# 查看防火墙规则
firewall-cmd --list-all
# 查询端口是否开放
firewall-cmd --query-port=8080/tcp
# 开放80端口
firewall-cmd --permanent --add-port=80/tcp
# 移除端口
firewall-cmd --permanent --remove-port=8080/tcp
#重启防火墙(修改配置后要重启防火墙)
firewall-cmd --reload
# 参数解释
1、firwall-cmd:是Linux提供的操作firewall的一个工具;
2、--permanent:表示设置为持久;
3、--add-port:标识添加的端口;
⭐负载均衡⭐
upstream lb{
    server 127.0.0.1:8080 weight=1;
    server 127.0.0.1:8081 weight=1;
}
location / {
    proxy_pass http://lb;
}

到了这里,关于探索Nginx的奥秘--从代理到负载均衡的艺术实践的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • nginx负载均衡+反向代理

    最近业务上遇到一个需求,其它系统因业务校验需要调用上级系统进行数据发送或校验,如果上级系统停机维护,其它下级系统发送的http通讯会丢失,还要一次次补发数据,耗费人工与时间。使用nginx+反向代理解决了部分需求。 目标:当服务A停机维护,其它系统会调用服务

    2024年02月08日
    浏览(34)
  • nginx反向代理 负载均衡

    目录 1.反向代理介绍:  2.七层代理和四层代理:   2.1 七层代理:   2.2 四层代理: 3.反向代理web服务器:   3.1 代理服务器配置: 3.2 服务器配置 : 3.3 客户端访问: 3.4 代理不同端口: 4.反向代理动静分离:   4.1  准备:   4.2 代理服务器配置:   4.3 动态服务器配置:

    2024年02月10日
    浏览(34)
  • nginx反向代理、负载均衡

         

    2024年02月12日
    浏览(29)
  • Nginx反向代理与负载均衡

    代理是在服务器和客户端之间假设的一层服务器,代理将接收客户端的请求并将它转发给服务器,然后将服务端的响应转发给客户端。 不管是正向代理还是反向代理,实现的都是上面的功能。 正向代理,意思是一个位于客户端和原始服务器(origin server)之间的服务器,为了从

    2023年04月26日
    浏览(32)
  • Nginx反向代理和负载均衡

    ` 正向代理 反向代理 七层反向代理: (基于http协议) http { upstream 服务器组名称 { server IP1:PORT [weight=1 …]; server IP2:PORT; … 调度算法(rr轮询/加权轮询,least_conn最小连接,ip_hash,url_hash,fair); } server { location ~ … { proxy_pass http://服务器组名称; proxy_set_header HosT $host; proxy_set_he

    2024年02月03日
    浏览(73)
  • 06、Nginx反向代理与负载均衡

    反向代理 : 这种代理方式叫做,隧道代理。有性能瓶颈,因为所有的数据都经过Nginx,所以Nginx服务器的性能至关重要 负载均衡 : 把请求,按照一定算法规则,分配给多台业务服务器(即使其中一个坏了/维护升级,还有其他服务器可以继续提供服务) 反向代理+负载均衡:

    2024年02月12日
    浏览(34)
  • Nginx的反向代理和负载均衡

    Nginx作为面试中的大…小头目,自然是不能忽视的,而以下两点就是它能成为面试中头目的招牌。 反向代理和负载均衡 在此之前,我们先对Nginx做一个简单的了解 Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。因它的稳定性、丰富的功能

    2024年02月08日
    浏览(38)
  • Nginx代理功能与负载均衡详解

    Nginx的代理功能与负载均衡功能是最常被用到的,关于nginx的基本语法常识与配置已在上篇文章中有说明,这篇就开门见山,先描述一些关于代理功能的配置,再说明负载均衡详细。 1、上一篇中我们在http模块中有下面的配置,当代理遇到状态码为404时,我们把404页面导向百度

    2024年02月12日
    浏览(28)
  • 【Nginx】静态资源部署、反向代理、负载均衡

    个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ nginx配置文件整体分为三部分: 全局块 :Nginx运行相关的全局配置 events块 :网络连接相关的配置 http块 :代

    2024年02月13日
    浏览(36)
  • Nginx反向代理配置+负载均衡集群部署

    什么是代理 正向代理既是通过代理服务器访问外网资源,而反向代理与之相反是将局域网的资源通过反向代理服务器提供给互联网用户浏览和使用等。 实验环境图 流量过程 当客户端发起请求后通过Internet (本实验为NAT网卡)来到代理服务器上,代理服务器经算法选择后调用

    2024年02月13日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包