Nginx的反向代理和负载均衡

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

Nginx:

Nginx作为面试中的大…小头目,自然是不能忽视的,而以下两点就是它能成为面试中头目的招牌。
反向代理和负载均衡

在此之前,我们先对Nginx做一个简单的了解

Nginx概述:

Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。因它的稳定性、丰富的功能集、简单的配置文件和低系统资源的消耗而闻名。
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好。在连接高并发的情况下,Nginx能够支持高达 50,000 个并发连接数的响应。

Nginx的应用场景:

http 服务器。Nginx 是一个 http 服务可以独立提供 http 服务。可以做网页静态服务器
虚拟主机。可以实现在一台服务器虚拟出多个网站。例如个人网站使用的虚拟主机。
反向代理,负载均衡。当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用 nginx 做反向代理。并且多台服务器可以平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况。


代理:

对Nginx做了简单了解后,我们去了解一下它的最核心的两个功能:
想要了解反向代理,我们需要去了解一下什么是代理

代理概述:

代理服务器(Proxy Server)是一种重要的服务器安全功能,它的工作主要在开放系统互联(OSI)模型的会话层,从而起到防火墙的作用。代理服务器大多被用来连接INTERNET(国际互联网)和INTRANET(局域网)。

正向代理:

Nginx的反向代理和负载均衡
正向代理是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端才能使用正向代理。
正向代理的典型用途是为在防火墙内的局域网客户端提供访问Internet的途径。正向代理还可以使用缓冲特性(由mod_cache提供)减少网络使用率。

关于正向代理我们不做过多阐述。

反向代理:

反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。

反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务器的地址,也无须在用户端作任何设定。反向代理服务器通常可用来作为Web加速,即使用反向代理作为Web服务器的前置机来降低网络和服务器的负载,提高访问效率。

Nginx的反向代理和负载均衡

反向代理相关配置:

我们去配置一下linux中Nginx的配置文件:
去你的Nginx的安装目录下找到nginx.conf文件,一般是在/usr/local/nginx/conf/nginx.con中,如果是第一次打开可以把#的注释都删除了,为了方便查看。

server {
        listen       81; # 监听的端口
        server_name  localhost; # 域名或ip
        location / {	# 访问路径配置
            root   index;# 根目录
            index  index.html index.htm; # 默认首页
        }
        
        error_page   500 502 503 504  /50x.html;	# 错误页面
        location = /50x.html {
            root   html;
        }
    }

第一步:我们去配置反向代理
先在Nginx主机修改nginx.conf配置文件,在server上加上一个

upstream 自定义名称{
	   server 192.168.177.129:8080; 网站的访问路径
    }

如下:

upstream tomcat-travel{
	   server 192.168.177.129:8080;
    }
server {
        listen       80; # 监听的端口
        server_name  www.hmtravel.com; # 域名或ip
        location / {	# 访问路径配置
            # root   index;# 根目录
	    proxy_pass http://tomcat-travel;
            index  index.html index.htm; # 默认首页
        }
}

第二步:重新启动Nginx
我们进入到Nginx的安装目录下的sbin目录下

./nginx -s quit		  关闭Nginx
./nginx -s stop  	  关闭Nginx
./nginx          	  启动Nginx
ps aux|grep nginx     查看Nginx进程
./nginx -s reload 	  重启Nginx(会重新读取配置文件)

反向代理执行流程

当我们没有配置反向代理时:
Nginx的反向代理和负载均衡
浏览器通过tomcat主机的ip地址直接请求网站
当我们设置反向代理后:
Nginx的反向代理和负载均衡
浏览器请求服务器,请求的是代理服务器Nginx,通过Nginx设置的域名,也就是我们在nginx.conf中设置的server_name。然后通过proxy_pass去查找代理的服务器的ip,就会查到server上面的upstream,通过upstream获取里面设置的ip地址。然后我们通过ip去访问tomcat中部署的项目。


负载均衡:

当你理解了反向代理的执行流程,负载均衡也就很简单了
首先我们先去了解一下负载均衡的基本描述:

负载均衡概述:

负载均衡,英文名称为Load Balance,其含义就是指将负载(工作任务)进行平衡、分摊到多个操作单元上进行运行,例如FTP服务器、Web服务器、企业核心应用服务器和其它主要任务服务器等,从而协同完成工作任务。

负载均衡构建在原有网络结构之上,它提供了一种透明且廉价有效的方法扩展服务器和网络设备的带宽、加强网络数据处理能力、增加吞吐量、提高网络的可用性和灵活性。

简单理解为:多个tomcat,分担并发量,虽然我们可以在一台linux上复制多个tomcat,但是,在企业中,都是一台linux上一个tomcat。
举个例子:假设一台tomcat的并发量只有200,现在你的网页系统同一时候处理的请求数量(事务数)大于200,那么你的tomcat就会挂掉,这时就需要多台tomcat来分担这个并发量。

Nginx的负载均衡,反向代理是它的基础,只需要在upstream中写入多个server即可。

upstream tomcat-travel {
	   server 192.168.177.129:8080;
	   server 192.168.177.129:8081;
	   server 192.168.177.129:8082;
    }

    server {
        listen       80; # 监听的端口
        server_name  www.hmtravel.com; # 域名或ip
        location / {	# 访问路径配置
            # root   index;# 根目录
	    proxy_pass http://tomcat-travel;

            index  index.html index.htm; # 默认首页
        }
        error_page   500 502 503 504  /50x.html;	# 错误页面
        location = /50x.html {
            root   html;
        }
    }

此处代码使用的是一台linux上3个tomcat使用不同端口来实现的。正常为,一台linux上只有一个tomcat。
负载均衡的执行流程和上面写的反向代理一样,只是在通过server_name去查找服务时,从一个变为从3个中随机选取一个。3个被选的概率一致,均为33%。
当然我们可以进行一个权重的配置。只需要在upstream中路径后面加一个weight属性就行,如:

	upstream tomcat-travel {
	   server 192.168.177.129:8080 weight 2;
	   server 192.168.177.129:8081;
	   server 192.168.177.129:8082;
    }

现在8080端口的访问量占从原来的3分之一,变成了2分之一。(原来3台中随机一台,现在相当于新增一台8080端口的访问路径,就变成4台,8080占两份)。文章来源地址https://www.toymoban.com/news/detail-481389.html


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

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

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

相关文章

  • Nginx反向代理与负载均衡

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

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

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

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

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

    2024年02月12日
    浏览(30)
  • 【nginx实战】nginx正向代理、反向代理、由反向代理实现的负载均衡、故障转移详解

    本文将要讨论以下内容 正向代理与反向代理的基本概念 Nginx正向代理服务的配置指令、Nginx反向代理服务的配置指令 Nginx反向代理服务器的应用——负载均衡、故障转移 案例分析   正向代理的概念 局域网内的机器借助代理服务访问局域网外的网站,此代理服务器提供的服务

    2024年01月24日
    浏览(35)
  • Nginx【反向代理负载均衡动静分离】--中

    示意图 示意图 负载均衡就是将负载分摊到不同的服务单元,既保证服务的可用性,又保证响应足够快 linux 下有Nginx、LVS、Haproxy 等等服务可以提供负载均衡服务, Nginx 提供了几种分配方式(策略): 轮询(默认) ​ 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服

    2024年02月09日
    浏览(41)
  • Nginx【反向代理负载均衡动静分离】--上

    需求1: 访问不同微服务 示意图 需求2: 轮询访问服务 示意图 解决方案: Nginx 反向代理 负载均衡 动静分离 高可用集群 Nginx 在分布式微服务架构的位置 Nginx 是什么? 能干什么? 是什么:Nginx (“engine x”) 是一个高性能的HTTP 和反向代理WEB 服务器 能干什么:反向代理负载均衡动静

    2024年02月08日
    浏览(46)
  • Nginx【反向代理负载均衡动静分离】--下

    示意图 图解 一个master 管理多个worker ● 争抢机制示意图 图解 一个master Process 管理多个worker process, 也就是说Nginx 采用的是多进程结构, 而不是多线程结构. 当client 发出请求(任务)时,master Process 会通知管理的worker process worker process 开始争抢任务, 争抢到的worker process 会开启连

    2024年02月08日
    浏览(41)
  • nginx反向代理及负载均衡的实现

    目录 1.nginx反向代理 2.nginx负载均衡 3.nginx反向代理及负载均衡实现 nginx反向代理 4台主机都需要的操作: 两台服务器操作: 两台主机服务器进行测试; nginx负载均衡配置 4.nginx配置其他参数 多虚拟机访问 后端服务器日志中需要记录客户端真实ip nginx设置不同的url访问不同页面

    2024年02月14日
    浏览(34)
  • Nginx反向代理实现负载均衡webshell

    目录 本实验所用的环境: 问题一:由于nginx采用的反向代理是轮询的方式,所以上传文件必须在两台后端服务器的相同位置上传相同的文件 问题二:我们在执行命令时,无法知道下次的请求交给哪台机器去执行我们在执行hostname -i查看当前执行机器的IP时,可以看到IP地址一

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

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

    2024年02月13日
    浏览(32)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包