Nginx反向代理
一、正向代理与反向代理
Nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器,同时也是一个IMAP、POP3、SMTP代理服务器。正向与反向相对于自己这台电脑来说,帮我们去上网的就是正向代理,帮助对方服务器的就是反向代理。
- 正向代理
想要访问谷歌,搭建一台代理服务器,为电脑配置上代理服务器的地址,电脑想访问任何网址,都由代理服务器帮我们去访问,访问拿到内容后帮我们返回,所以看到的是搭建的这台服务器帮我们进行上网。
- 反向代理
搭建集群环境的时候非常需要,比如任何人去访问网站内容,它有后台服务集群,这些服务集群的每一个服务器可能都要在内网部署。这是一个内网ip,不可能把服务器的外网ip暴露给外界,这样容易引起攻击。
为了能找到整个内网服务器集群,在它们前面前置一个服务器,把这个服务器叫做反向代理。比如前置一个Nginx,Nginx拥有公网ip,大家都可以进行访问。但是访问公网服务器,真正的内容是在内网集群部署的,所以由Nginx代转给服务集群。
由于Nginx也是和服务集群搭建在一个服务环境里面的,Nginx可以找到服务集群在哪里,Nginx相当于对外界屏蔽了整个内网服务集群的信息。
二、反向代理服务器的作用
2.1 Nginx的缓冲
Nginx在读取完整请求前,会进行缓存,然后再一起发给服务器。因为有时候会出现部分传递的情况,比如网速慢时,请求只能一点一点发给服务器,Nginx通过缓存就可以发给服务器一个完整的http请求。同样,Nginx也可以把响应先缓存,保证回传一次完整的响应,提升性能。
2.2 伪内部服务器
在防火墙外部设置一个代理服务器作为内容服务器的替身,当客户端尝试访问内容服务器时,会被转发到代理服务器。实际内容位于内容服务器上,在防火墙内部受到安全保护,代理服务器就在安全数据库和可能的恶意攻击之间提供了一道屏障。
2.3 负载均衡
如果 Web 服务器每天都会接收大量的请求,则可以使用代理服务器分担 Web 服务器的负载并提高网络访问效率。可以使用多个代理服务器来平衡各 Web 服务器间的网络负载。利用代理服务器的高速缓存特性,创建一个用于负载平衡的服务器池。此时,代理服务器可以位于防火墙的任意一侧。
代理服务器会将所有请求的文档存入高速缓存,如果有不止一个代理服务器,DNS 可以采用循环复用法选择其 IP 地址,随机地为请求选择路由。这使得内容服务器可以处理更高的负载,并且比独自工作时更有效率。在初始启动期间,代理服务器首次从内容服务器检索文档,然后进行缓存,使得后面对内容服务器的请求会大大下降。