要想弄明白反向代理,首先要知道啥是正向代理,要搞懂正向代理只需要知道啥是代理即可。代理其实就是一个中介,在不同事物或同一事物内部起到居间联系作用的环节。比如买票黄牛,房屋中介等等。
在互联网中代理更多指的是代理服务器,代理服务器位于客户端和服务器之间,它充当两者之间的中介。这种代理在生活中是比较常见的,比如我们常说的搭个梯子上网,用到的就是代理技术。
正向代理
正向代理(forward proxy):是一个位于客户端和目标服务器之间的服务器(代理服务器),为了从目标服务器取得内容,客户端向代理服务器发送一个请求并指定目标,然后代理服务器向目标服务器转交请求并将获得的内容返回给客户端。
比如国内访问谷歌,直接访问是不行的,我们可以通过一个能够访问谷歌的正向代理服务器,请求发到代理服务器,由代理去谷歌获取数据并返回,这样就变相的实现了访问谷歌的需求。
一句话总结:正向代理,就是代理服务器代理了客户端,去和目标服务器进行交互。
正向代理的用途:
突破 IP 访问限制
通过缓存加速访问资源
隐藏客户端真实 IP
客户端访问授权
反向代理
反向代理(Reverse Proxy):与正向代理正好相反,反向代理中的代理服务器,代理的是服务器那端。代理服务器接收客户端请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给客户端,此时代理服务器对外表现为一个反向代理服务器的角色。
反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务器的地址,也无须在用户端作任何设定。
一句话总结:反向代理,就是代理服务器代理了目标服务器,去和客户端进行交互。
反向代理的用途:
隐藏服务器真实 IP
通过缓存加速访问资源
提供安全保障
负载均衡
实际生产环境中,反向代理服务器代理的目标服务器可能不止一个。比如开发好的某个应用部署在一台 Tomcat 服务器上,而 Tomcat 的并发上限不优化情况下,默认只有两百左右,这时候为了解决高并发的问题,就只能选择更替服务器或者搭建多台服务器通过反向代理与负载均衡的技术解决并发问题。
负载均衡(Load Balance)是由多台服务器以对称的方式组成一个服务器集群,每台服务器都具有等价的地位,都可以单独对外提供服务而无须其他服务器的辅助。经过某种负载分管技术,将外部发送来的中央请求均匀分配到对称结构中的某一台服务器上。
总结
正向代理,就是代理服务器代理了客户端,去和目标服务器进行交互。现实生活中的场景:黄牛买票。
反向代理,就是代理服务器代理了目标服务器,去和客户端进行交互。现实生活中的场景:房屋中介。
Nginx 反向代理与负载均衡
前面我们提到搭建多台服务器并通过反向代理与负载均衡的技术可以解决并发问题,那么负载均衡的实现从哪来?为了避免重复造轮子,我们选择现成已有的成熟工具帮助我们完成这项工作。Nginx 就是一个不错的选择。
Nginx 是由 Igor Sysoev(伊戈尔 · 赛索耶夫)为俄罗斯访问量第二的 https://www.rambler.ru/ 站点开发的。Nginx 是一个高性能的 HTTP 和反向代理服务器,可以扛得住 5W 左右的并发。Ngnix 一方面可以做反向代理服务器,另外一方面还可以做静态资源服务器。本文主要学习如何使用 Nginx 实现反向代理与负载均衡。
官网:
环境
三台 CentOS 7.8.2003 机器
192.168.10.101 安装 Nginx 1.18.0
192.168.10.102 和 192.168.10.103 安装 Tomcat 9.0.38
安装 Nginx
下载资源
下载 Nginx 并解压。
# 下载 nginx 压缩包 wget -P /usr/local/src # 解压 tar -zxvf /usr/local/src/nginx-1.18.0.tar.gz -C /usr/local/src安装依赖