nginx使用学习之正向代理、反向代理、负载均衡

正向代理Nginx 不仅可以做反向代理,实现负载均衡 。还能用作正向代理来进行上网等功能 。正向代理:如果把局域网外的 Internet 想象成一个巨大的资源库,则局域网中的客户端要访 问 Internet,则需要通过代理服务器来访问,这种代理服务就称为正向代理 。

  • 简单一点:通过代理服务器来访问服务器的过程 就叫 正向代理 。
  • 需要在客户端配置代理服务器进行指定网站访问
 
nginx使用学习之正向代理、反向代理、负载均衡

文章插图
 
 
反向代理反向代理,其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问 。
我们只 需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返 回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器 地址,隐藏了真实服务器 IP 地址 。
nginx使用学习之正向代理、反向代理、负载均衡

文章插图
 
nginx反向代理配置实例
1. 实现效果
打开浏览器,在浏览器地址栏输入地址 www.123.com,跳转到 liunx 系统 Tomcat 主页 面中
2. 准备工作
(1)在 liunx 系统安装 tomcat,使用默认端口 8080,我这里8080被其他应用占用,所以我已修改端口为8081 。在conf目录下的server.xml配置文件中,如下,将port改为 8081,其实下面也有类似的Connector 标签,但是要看protocol协议为HTTP/1.1的标签修改即可 。
<Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />tomcat 安装文件放到 liunx 系统中,解压 。
Tomcat的路径:/usr/feng/apach-tomcat/tomcat8081下
进入 tomcat 的 bin 目录中,./startup.sh 启动 tomcat 服务器 。
(2)对外开放访问的端口 (我这里不需要)
firewall-cmd --add-port=8080/tcp --permanent
firewall-cmd –reload
查看已经开放的端口号 firewall-cmd --list-all
(3)在 windows 系统中通过浏览器访问 tomcat 服务器
别忘了开启tomcat,在bin目录下,使用 命令:
./startup.sh 
nginx使用学习之正向代理、反向代理、负载均衡

文章插图
 
3. 访问过程的分析
 
nginx使用学习之正向代理、反向代理、负载均衡

文章插图
 
4、具体配置
a. 第一步 在 windows 系统的 host 文件进行域名和 ip 对应关系的配置
nginx使用学习之正向代理、反向代理、负载均衡

文章插图
 
添加内容在 host 文件中
nginx使用学习之正向代理、反向代理、负载均衡

文章插图
 
b . 第二步 在 nginx 进行请求转发的配置(反向代理配置)
 
nginx使用学习之正向代理、反向代理、负载均衡

文章插图
 
5、最终测试
如上配置,我们监听 80 端口,访问域名为 www.123.com,不加端口号时默认为 80 端口,故 访问该域名时会跳转到 127.0.0.1:8081 路径上 。在浏览器端输入 www.123.com 结果如下:
 
nginx使用学习之正向代理、反向代理、负载均衡

文章插图
 
 
负载均衡增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的 情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,也就是我们所说的负 载均衡
客户端发送多个请求到服务器,服务器处理请求,有一些可能要与数据库进行交互,服 务器处理完毕后,再将结果返回给客户端 。
这种架构模式对于早期的系统相对单一,并发请求相对较少的情况下是比较适合的,成 本也低 。但是随着信息数量的不断增长,访问量和数据量的飞速增长,以及系统业务的复杂 度增加,这种架构会造成服务器相应客户端的请求日益缓慢,并发量特别大的时候,还容易 造成服务器直接崩溃 。很明显这是由于服务器性能的瓶颈造成的问题,那么如何解决这种情 况呢?
【nginx使用学习之正向代理、反向代理、负载均衡】我们首先想到的可能是升级服务器的配置,比如提高 CPU 执行频率,加大内存等提高机 器的物理性能来解决此问题,但是我们知道摩尔定律的日益失效,硬件的性能提升已经不能 满足日益提升的需求了 。最明显的一个例子,天猫双十一当天,某个热销商品的瞬时访问量 是极其庞大的,那么类似上面的系统架构,将机器都增加到现有的顶级物理配置,都是不能 够满足需求的 。那么怎么办呢?上面的分析我们去掉了增加服务器物理配置来解决问题的办法,也就是说纵向解决问题 的办法行不通了,那么横向增加服务器的数量呢?这时候集群的概念产生了,单个服务器解 决不了,我们增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,也就是我们 所说的负载均衡


推荐阅读