nginx反向代理是什么?原理有哪些?

TheDisguiser 2020-05-03 16:31:58 java常见问答 6256

在NGinx服务器中,反向代理是它最重要的功能之一,今天我们就来了解下,NGinx中的反向代理究竟是什么,又有什么用吧。

一、NGinx基本理念

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

一般的代理服务器,只用于代理内部网络对Internet的连接请求,客户端必须指定代理服务器,并把要直接发送到Web服务器上的http请求发送到代理服务器中。如果代理服务器能够代理外部网络上的主机,访问内部网络时,它代理服务的方式就被称为反向代理服务。

二、反向代理实现原理

反向代理服务器一般有两种模型,它可以作为内容服务器的替身,也可以作为内容服务器集群的负载均衡器。

1,作为内容服务器的替身

假如你的内容服务器具有必须保持安全的敏感信息,可以在防火墙外部设置一个代理服务器作为内容服务器的替身。当有外部客户机尝试访问内容服务器时,就会送到代理服务器中。实际上内容还是在内容服务器上,在防火墙内部受到安全保护。代理服务器位于防火墙外部,在客户机看来就像是内容服务器。

当客户机向站点提出请求时,请求将转到代理服务器。然后,代理服务器通过防火墙中的特定通路,把客户机的请求发送到内容服务器。内容服务器再来通过该通道将结果回传给代理服务器。代理服务器就会把检索到的信息发送给客户机,这样就好像代理服务器就是真的内容服务器。如果内容服务器返回的是错误消息,代理服务器就会先行截取该消息并更改标头中列出的所有 URL,然后把消息发送给客户机。如此可防止外部客户机获取内部内容服务器的重定向 URL。

这样,代理服务器就在安全数据库和可能的恶意攻击之间提供了又一道屏障。与有权访问整个数据库的情况相对比,就算是侥幸攻击成功,作恶者也仅限于访问单个事务中所涉及的信息。未经授权的用户无法访问到真正的内容服务器,因为防火墙通路只允许代理服务器有权进行访问。

2,作为内容服务器的负载均衡器

作为内容服务器的负载均衡器可以在一个组织内使用多个代理服务器来平衡到各个Web服务器之间的网络负载。在这个模型中,利用代理服务器的高速缓存特性,创建一个用于负载平衡的服务器池。此时,代理服务器可以位于防火墙的任意一侧。如果一个Web服务器每天都会接收超多请求,就可以使用代理服务器分担Web服务器的负载并提高网络访问效率。

对于客户机发往到真正服务器的请求,代理服务器有着中间调停者的作用。代理服务器会将所请求的文档存入高速缓存。如果有不止一个代理服务器,DNS 可以采用“循环复用法”选择其 IP 地址,随机地为请求选择路由。客户机每次都使用同一个 URL,但请求所采取的路由每次都可能经过不同的代理服务器。

可以使用多个代理服务器来处理对一个高用量内容服务器的请求,这样做的好处是内容服务器可以处理更高的负载,并且比其独自工作时更有效率。在初始启动期间,代理服务器首次从内容服务器检索文档,此后,对内容服务器的请求数会大大下降。

以上就是本文的全部内容了,关于Java常见问答的更多详细知识请关注我们了解详情吧。