Nginx 的原理解析
代理
- 反向代理
- 代理服务器接受来自客户端的请求,然后将请求转发到内部网络的服务器,将服务器得到的结果返回给客户端
- 使用
tomcat
访问一个http://www.test.com/readme
,如果服务器中不存在readme
,将会返回Not Found
。但是利用反向代理可以完成从其他服务器上调用
- 正向代理
- 代理
VPN
即可,起一个跳板作用
- 代理
工作流程
- 用户访问反向代理服务器
- 反向代理服务器接受用户的请求
- 反向代理服务器在本地缓存中查找请求的内容
- 如果不在缓存中,则会代替用户向原服务器请求相同的信息内容
- 工作的流程图如下所示:
模块
- 核心模块
- 建立
nginx
服务模型、管理网络层和应用层协议、以及启动针对特定应用的一系列候选模块 - 当
nginx
发送文件或者转发请求到其他服务器,由处理模块或代理类模块提供服务 - 当需要
nginx
把输出压缩或者在服务端增加一些东西,由过滤模块提供服务
- 建立
- 处理器模块
- 直接处理请求,并进行输出内容和修改
headers
信息等操作
- 直接处理请求,并进行输出内容和修改
- 过滤器模块
- 类似于
rpc
框架中进行过滤的模块,其他处理器模块输出的内容进行修改操作,最后由nginx
输出。
- 类似于
- 代理类模块
- 这些模块主要与后端一些服务比如
FastCGI
等进行交互,实现服务代理和负载均衡等功能
- 这些模块主要与后端一些服务比如
对于请求的处理
- 运行模式:多进程
+
异步非阻塞IO
事件master
通过nginx.conf
文件进行配置、worker
进行连接和请求的处理
热部署实现
- 修改配置文件
nginx.conf
后,重新生成新的worker
进程,当然会以新的配置进行处理请求,而且新的请求必须都交给新的worker
进程,至于老的worker
进程,等把那些以前的请求处理完毕后,kill
掉即可 - 高并发处理
epoll
模型
- 高可用实现
- 虚拟
ip
- 虚拟
为什么要用 nginx + Tomcat
:保证同一个域名下可以进行多个 Tomcat
实例的部署
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
上一篇: Tomcat 架构介绍
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论