Nginx反向代理的理解

Nginx是异步框架的网页服务器,也可以用作反向代理负载平衡器HTTP缓存.该软件由俄罗斯程序员伊戈尔·赛索耶夫开发并于2004年首次公开发布.2011年成立同名公司以提供支持服务.2019年3月11日,Nginx公司被F5网络公司以6.7亿美元收购.Nginx因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名.

Nginx是免费的开源软件,根据类BSD许可证的条款发布.一大部分Web服务器使用Nginx,通常作为负载均衡器.

特点

Nginx可以部署在网络上使用FastCGI(快速通用网关接口)脚本、SCGI(简单通用网关接口)处理程序、WSGI(Web服务器接口)应用服务器Phusion Passenger模块的动态HTTP内容,并可作为软件负载均衡器.

Nginx使用异步事件驱动的方法来处理请求.Nginx的模块化事件驱动架构可以在高负载下提供更可预测的性能.

Nginx是一款面向性能设计的HTTP服务器.相较于Apache、Lighttpd具有占有内存少,稳定性高等优势.Nginx不采用每客户机一线程的设计模型,而是充分使用异步逻辑从而削减了上下文调度开销,所以并发服务能力更强.整体采用模块化设计,有丰富的模块库和第三方模块库,配置灵活.在Linux操作系统下,Nginx使用epoll事件模型,得益于此,Nginx在Linux操作系统下效率相当高.同时Nginx在OpenBSD或FreeBSD操作系统上采用类似于epoll的高效事件模型kqueue.

可大量并行处理

Nginx在官方测试的结果中,能够支持5万个并行连接,而在实际的运作中,可以支持二万至四万个并行连接.

Nginx快速的原因

Nginx使用NIO来实现,是它能快速的主要原因之一.

从Nginx的结构上和运行流程上,它内部是一个主进程(Master)多个工作进程(Worker).

Master负责统筹管理配置和Worker的分工.

Worker来负责处理请求,作出响应.

而且使用NIO非阻塞式的,异步的来完成工作.

简单说就是一个Worker接到从Master分配来的一个请求后,会立即对请求进行处理,但在请求发送完成后,没有返回响应前,Worker会继续处理别的请求,直到返回响应时,这个Worker才会去处理响应,最终每条Worker进程全程无阻塞.

Nginx的使用

实际开发中,Nginx可以用于反向代理服务器,实际处理请求的是Tomcat服务器.

因为Nginx优秀的静态内容并发性能,我们常常使用它做静态资源服务器.在Nginx中保存图片、文件和视频等静态资源.

经常和FastDFS组合使用.

FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括: 文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题.特别适合以文件为载体的在线服务,如相册网站、视频网站等等.

Nginx和Gateway

首先明确Nginx和Gateway并不冲突,它们都是统一入口的概念,它们可以同时开启,也可以开启其中一个,只不过Nginx不属于Java程序(不属于微服务模块),而Gateway是Java程序,而且是微服务的一部分.

Nginx是服务器程序我们不可编辑,Gateway是我们自己创建的项目,依赖和配置都由我们自己完成.

最终如果想做反向代理的服务器,就用Nginx.

如果是微服务项目的网关就是Gateway.

在了解反向代理之前,先看一下简单的前向代理(即正向代理)模式图:

 

反向代理

反向代理(Reverse proxy)在电脑网络中是代理服务器的一种.服务器根据客户端的请求,从其关系的一组或多组后端服务器上获取资源,然后再将这些资源返回给客户端,客户端只会得知反向代理的IP地址,而不知道在代理服务器后面的服务器集群的存在.

 

前向代理不同,前向代理作为客户端的代理,将从互联网上获取的资源返回给一个或多个的客户端,服务端只知道代理的IP地址而不知道客户端的IP地址;而反向代理是作为服务器端的代理使用,而不是客户端.客户端借由前向代理可以间接访问很多不同互联网服务器(集群)的资源,而反向代理是供很多客户端都通过它间接访问不同后端服务器上的资源,而不需要知道这些后端服务器的存在,而以为所有资源都来自于这个反向代理服务器.

反向代理在现时的互联网中并不少见,而另一些例子,像是CDN、SNI代理等,是反向代理结合DNS的一类延伸应用.

功能

反向代理的主要作用为:

1. 对客户端隐藏服务器(集群)的IP地址.

2. 安全: 作为应用层防火墙,为网站提供对基于Web的攻击行为的防护,更容易排查恶意软件等.

3. 为后端服务器(集群)统一提供加密和SSL加速(如SSL终端代理).

4. 负载均衡,若服务器集群中有负荷较高者,反向代理通过URL重写,根据连线请求从负荷较低者获取与所需相同的资源或备援.

5. 对于静态内容及短时间内有大量访问请求的动态内容提供缓存服务.

6. 对一些内容进行压缩,以节约带宽或为网络带宽不佳的网络提供服务

7. 减速上传.

8. 为在私有网络下(如局域网)的服务器集群提供NAT穿透及外网发布服务.

9. 提供HTTP访问认证.

10. 突破互联网封锁..

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿码德乌斯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值