网站首页 > 技术教程 正文
Apache & Nginx
Apache,指的应该是 Apache 软件基金会下的一个项目——Apache HTTP Server Project;
Nginx 同样也是一款开源的 HTTP 服务器软件(当然它也可以作为邮件代理服务器、通用的TCP 代理服务器)。
HTTP 服务器本质上也是一种应用程序——它通常运行在服务器之上,绑定服务器的 IP 地址并监听某一个 TCP 端口来接收并处理 HTTP 请求,这样客户端(一般来说是 IE, Firefox,Chrome 这样的浏览器)就能够通过 HTTP 协议来获取服务器上的网页(HTML 格式)、文档(PDF 格式)、音频(MP4 格式)、视频(MOV 格式)等等资源。下图描述的就是这一过程:
不仅仅是 Apache HTTP Server 和 Nginx,绝大多数编程语言所包含的类库中也都实现了简单的 HTTP 服务器方便开发者使用:
- HttpServer (Java HTTP Server )(https://docs.oracle.com/javase/8/docs/jre/api/net/httpserver/spec/com/sun/net/httpserver/HttpServer.html)
- Python SimpleHTTPServer(https://docs.python.org/2/library/simplehttpserver.html)
使用这些类库能够非常容易的运行一个 HTTP 服务器,它们都能够通过绑定IP地址并监听 TCP 端口来提供 HTTP 服务。
Apache Tomcat
Apache Tomcat 则是 Apache 基金会下的另外一个项目,与 Apache HTTP Server 相比,Tomcat 能够动态的生成资源并返回到客户端。Apache HTTP Server 和 Nginx 都能够将某一个文本文件的内容通过 HTTP 协议返回到客户端,但是这个文本文件的内容是固定的——也就是说无论何时、任何人访问它得到的内容都是完全相同的,这样的资源我们称之为静态资源。动态资源则与之相反,在不同的时间、不同的客户端访问得到的内容是不同的,例如:
- 包含显示当前时间的页面
- 显示当前IP地址的页面
Apache HTTP Server 和 Nginx 本身不支持生成动态页面,但它们可以通过其他模块来支持(例如通过 Shell、PHP、Python 脚本程序来动态生成内容)。
如果想要使用 Java 程序来动态生成资源内容,使用这一类 HTTP 服务器很难做到。Java Servlet 技术以及衍生的 Java Server Pages 技术可以让 Java 程序也具有处理 HTTP 请求并且返回内容(由程序动态控制)的能力,Tomcat 正是支持运行 Servlet/JSP 应用程序的容器(Container):
Tomcat 运行在 JVM 之上,它和 HTTP 服务器一样,绑定 IP 地址并监听 TCP 端口,同时还包含以下指责:
- 管理 Servlet 程序的生命周期
- 将 URL 映射到指定的 Servlet 进行处理
- 与 Servlet 程序合作处理 HTTP 请求——根据 HTTP 请求生成 HttpServletResponse 对象并传递给 Servlet 进行处理,将 Servlet 中的 HttpServletResponse 对象生成的内容返回给浏览器
虽然 Tomcat 也可以认为是 HTTP 服务器,但通常它仍然会和 Nginx 配合在一起使用:
- 动静态资源分离——运用 Nginx 的反向代理功能分发请求:所有动态资源的请求交给 Tomcat,而静态资源的请求(例如图片、视频、CSS、JavaScript 文件等)则直接由Nginx 返回到浏览器,这样能大大减轻 Tomcat 的压力。
- 负载均衡,当业务压力增大时,可能一个 Tomcat 的实例不足以处理,那么这时可以启动多个 Tomcat 实例进行水平扩展,而 Nginx 的负载均衡功能可以把请求通过算法分发到各个不同的实例进行处理。
总结
所以用一句话来区分他们之间的区别那就是:Apache 和 Nginx 是静态服务器,适合处理静态资源。而 Tomcat 适合动态生成内容,返回给客户端,常作为 Java Web 项目的容器。
版权
作者:David
链接:https://www.zhihu.com/question/32212996/answer/87524617
来源:知乎
著作权归作者所有。
关注
感谢阅读,如果这篇文章对你又帮助,记得 点赞 ,收藏,转发 哟。
期待下次与你相遇 :)
猜你喜欢
- 2024-10-09 中小规模网站架构设计:Nginx与HAProxy负载均衡比较
- 2024-09-08 理解Nginx的反向代理与负载均衡(理解nginx的反向代理与负载均衡分析)
- 2024-09-08 架构之路:Nginx与IIS服务器搭建集群实现负载均衡
- 2024-09-08 Linux 下配置nginx到php的连接(linux nginx php)
- 2024-09-08 注意这几点,轻轻松松配置 Nginx + Tomcat 的集群和负载均衡
- 2024-09-08 如何理解Nginx和Tomcat?(nginx和tomcat的关系)
- 2024-09-08 一文看懂nginx如何配置跨域,值得收藏
- 2024-09-08 这样搭建Nginx+Tomcat集群,实现负载均衡及动静分离,太轻松!
- 2024-09-08 通过nginx进行wss和ws协议转换(ftp文件传输协议对应于osi的)
- 2024-09-08 Nginx与安全有关的几个配置(nginx 安全设置)
你 发表评论:
欢迎- 最近发表
-
- Win11学院:如何在Windows 11上使用WSL安装Ubuntu
- linux移植(Linux移植freemodbus)
- 独家解读:Win10预览版9879为何无法识别硬盘
- 基于Linux系统的本地Yum源搭建与配置(ISO方式、RPM方式)
- Docker镜像瘦身(docker 减小镜像大小)
- 在linux上安装ollama(linux安装locale)
- 渗透测试系统Kali推出Docker镜像(kali linux渗透测试技术详解pdf)
- Linux环境中部署Harbor私有镜像仓库
- linux之间传文件命令之Rsync傻瓜式教程
- 解决ollama在linux中安装或升级时,通过国内镜像缩短安装时长
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)