HTTP服务器:Nginx-Apache-Tomcat

Maven仓库搭建(一):一台HTTP服务器即可(Tomcat、Apache或Nginx) 作为一个Java老程序员,多多少少都会有一些自己写的各种常用代码,如果每写一个项目都把这些代码拷贝一份到新项目比较麻烦的,打成jar包引入到项目会方便很多。如果想让这些jar包能通过Maven引入进项目,那就需要搭建Maven仓库。说到Maven仓库搭建,很多人第一想到的一般都是Nexus。Nexus的确是非常好的方案,但是总归需要一台服务器,一台服务器需要花钱买和花时间维护,成本比较大。Nexus 阅读详情

基本概念

网站页面的类型和区别

  • 静态页面
    通常以html、htm、shtml等结尾的文件,所有数据都是写在文件里的。客户端加载静态页面时,无需对数据库进行操作,直接将文件内容呈现出来。
    • 静态页面速度快,不需要从数据库里面提取数据,也不会对服务器产生压力。
    • 由于数据都是写在文件里,很有可能会导致文件非常大,占用大量的服务器磁盘空间,每次添加内容都会生成新的文件。更改源代码必须全部更改,而不能更改一个地方,全站的静态页面就自动更改了。
  • 动态页面
    通常是以php、jsp、asp等结尾的文件,不是独立存在于服务器上的网页文件,当用户请求时服务器才会返回一个完整的页面。数据都是存储在数据库中的,根据用户发出的不同请求从数据库里提取不同的数据,从而提供个性化的网页内容。
    • 占用磁盘空间小,一般几万条数据的网站,文件大小可能只有几M。数据都是从数据库里提取出来,如果需要修改某些数据,可直接修改数据库,所有动态页面就都会自动更新。
    • 访问速度慢,动态页面需要处理成静态内容,才能呈现给用户。动态页面的数据是从数据库里提取出来的,如果访问量大的话,会导致数据库的压力很大。现在的动态网站大多数都使用了缓存技术,但相对于静态网站而言,服务器的压力比较大,访问的人越多服务器的压力越大。
  • 伪静态
    假静态页面,通过将动态页面的URL地址重写,改写成以html、htm等结尾的静态URL地址,实际上还是动态页面。
    • 方便搜索引擎进行收录。在SEO方面,伪静态和静态页面的功能是相同的。
    • 相对于静态页面和动态页面,服务器的性能消耗是最大的。静态页面可以节省服务器的资源消耗,而伪静态是增加服务器消耗,因为rewrite还需要消耗额外的资源。

网站页面的处理流程

在这里插入图片描述

  • 访问静态页面
    当用户(浏览器)发起一个访问网站资源的请求时,首先由DNS服务器将域名解析为网站服务器的IP地址,http或者https协议将用户的请求发送给此IP地址对应的web服务器,web服务器收到请求后就在自己的网站目录下寻找相对应的页面文件(例如index.html),将文件内容返回给用户(浏览器),浏览器收到web服务器的响应后,接收并下载服务器的html静态代码,然后浏览器解读代码,最终将网页内容呈现出来。
  • 访问动态页面
    比访问静态页面多一步解析动态脚本的步骤。首先DNS域名解析,然后web服务器收到用户的请求后找到对应的php脚本文件,然后将脚本委托给php服务器处理,php服务器将脚本解析成静态代码,再将静态代码返回给web服务器,web服务器再将静态代码返回给用户,最终在浏览器上呈现出来。
  • 访问数据库
    比访问动态页面多一步访问数据库的步骤,首先DNS域名解析,web服务器收到请求后找到对应的php脚本文件,将此脚本委托给php服务器处理,php服务器通过解析脚本取连接数据库,从数据库里将数据取出来,再将数据生成静态代码发给web服务器,web服务器再将静态代码返回给用户,最终在浏览器上呈现出来。

Apache

Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的Web服务器软件,可以在大多数计算机操作系统中运行,是目前最流行的web服务器端软件之一。Apache支持模块众多,性能稳定,本身只支持静态解析,适合静态HTML、图片等,但可以通过扩展脚本、模块等支持动态页面。常见的网站架构有:Apache+PHP、Apache+Tomcat等。

  • 配置相对复杂。
  • Apache是静态解析,适合静态HTML、图片等, 相对于Tomcat服务器来说处理静态文件是它的优势,速度快。
  • Apache自身不支持动态页面,但可以通过扩展脚本,模块等支持动态页面。
  • Apache是同步多进程模型,一个连接对应一个进程。
  • Apache比Nginx占用更多的内存及资源,Apache在处理请求时是阻塞型的。
  • Apache可以支持PHP、CGI、Perl,但是要使用Java,需要Tomcat在Apache后台支撑,将Java请求由Apache转发给Tomcat处理。
  • Apache超稳定,对PHP支持较简单,Nginx需要配合其他后端用,处理动态请求有优势,建议使用前端Nginx抗并发,后端Apache集群配合。
  • Apache的rewrite(重写)比Nginx强大,支持动态页面,支持的模块多,基本涵盖所有应用,性能稳定,Nginx相对bug较多。
  • Apache的组件比Nginx多。

Nginx

Nginx是一款开源的轻量级的web服务器/反向代理服务器软件,是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP代理服务器。其特点是占有内存少,并发能力强,也是目前比较流行的web服务器软件之一。静态页面处理能力较强,尤其是反向dialing服务表现突出,常被用作负载均衡和代理服务器使用。常见的网站架构有:Nginx+PHP、Nginx+Tomcat、Nginx+Apache+PHP等。

  • Nginx配置简洁
  • Nginx只适合静态和反向代理,常用作静态内容服务器和代理服务器,直接将外来请求转发给后面的应用服务器。Nginx静态处理性能比Apache高3倍以上。
  • Nginx有动态分离机制,静态请求直接就可以通过Nginx处理,动态请求需转发请求到后台交由Tomcat进行处理。
  • Nginx是异步的,多个连接(万级别)可以对应一个进程。
  • Nginx比Apache占用更少的内存及资源,抗并发,Nginx处理请求时异步非阻塞的,在高并发下Nginx能保持低资源、低消耗、高性能、高度模块化的设计,编写模块相对简单提供负载均衡。
  • Nginx轻量级,负载性能很好,反向代理,抗并发,处理静态文件好,耗费内存少,适合做前端服务器。

Tomcat

Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta项目的一个核心项目。Tomcat服务器是一个免费的开放源代码的Java Web应用服务器软件,常被称为servlet容器,用来处理JSP页面和运行Servlet。Tomcat是应用(Java)服务器,它只是一个Servlet容器,可以任务是Apache的扩展,但是可以独立于Apache运行。Tomcat静态页面处理能力较弱,强项是运行Java Servlet(用Java编写的服务器端程序)。

  • 缺点
    • Tomcat只能做Java服务器。
    • 处理静态内容的能力不如Apache和Nginx。
    • Tomcat在高并发场景下,其接受的最大并发连接数是有限制的,连接数过多会导致Tomcat处于‘僵死’状态。
  • 优点
    • 动态解析容器,处理动态请求,是编译JSP/Servlet的容器。
  • 端口:
    • 8005 关闭Tomcat通信接口
    • 8009 与其他HTTP服务器通信接口,用于HTTP服务器集合
    • 8080 建立HTTP连接用,如浏览器访问

Tomcat结合Apache、Nginx实现高性能的Web服务器

Tomcat与Apache、Nginx结合适用有如下原因:

  • Tomcat处理HTML的能力不如Apache和Nginx,Tomcat处理静态内容的速度不如Apache和Nginx。
  • Tomcat接受的最大并发数有限,连接数过多,会导致Tomcat处于‘僵死’状态,对后续的连接失去响应,需要结合Nginx一起使用。

通常情况下,Tomcat与Nginx/Apache 结合使用,Nginx、Apache既可以提供web服务,也可以转发动态请求至Tomcat服务器上。但在一个高性能的站点上,通常Nginx、Apache只提供代理的功能,即转发请求至Tomcat服务器上,而对于静态内容的响应,则由前端负载均衡器来转发至专门的静态服务器上进行处理。
在这里插入图片描述
在这种架构中,当haproxy或nginx作为前端代理时,如果是静态内容,如html、css等内容,则直接交给静态服务器处理;如果请求的图片等内容,则直接交给图片服务器处理;如果请求的是动态内容,则交给tomcat服务器处理,不过在tomcat服务器上,同时运行着nginx服务器,此时的nginx作为静态服务器,它不处理静态请求,它的作用主要是接受请求,并将请求转发给tomcat服务器的,除此之外,nginx没有任何作用。

  • 严格意义上来讲,Apache和Nginx应该叫作HTTP Server,Tomcat是一个Application Server,是一个Servlet、JSP应用的容器。客户端通过HTTP Server访问服务器上存储的资源(HTML文件、图片文件等),HTTP Server始终只是把服务器上的文件如实通过HTTP协议传输给客户端。应用服务器往往是运行在HTTP Server的背后,执行应用,将动态的内容转换为静态的内容之后,通过HTTP Server分发到客户端,作为静态服务器的Nginx只是把请求做了分发,不做处理。

参考资料
Nginx和Apache和Tomcat的区别及优缺点
浅谈Tomcat 、Apache、 Nginx的区别及优缺点
详谈Apache、Nginx和tomcat的区别以及处理静态页面和动态页面的方式

网络可视媒体的智能计算-胡事民 本文为胡事民教授在山大做报告的笔记,现场见下图: 可视媒体是承载视觉信息的媒体类型,如图像、视频等,它具有网络化、海量和无序涌现等特征。 可视媒体计算的研究意义 可视媒体作为一种信息承载的介质,是用来表达语义信息的。那么就有一种介质与信息之间相互转化的问题。转化方向正反两种,举个栗子说明一下: 1. 可视媒体→→\rightarrow语义信息:比如看到画面,理解其中发生的事件、各主题之... 阅读详情

相关推荐

MLX90640 热成像 STM32

MLX90640 热成像

zhaocundang's blog 5007

在写基于HTTP协议的的通用型服务器(静态页面篇)时遇到的问题及解决方法

1.在写基于HTTP协议的的通用型服务器时遇到的问题(和要注意的点)。 关闭防火墙,我的Linux是centos6.5 关闭防火墙的方法是service iptables stop 2.每一个网站都要有一个logo 在/favicon.ico中,是一个图片文件,浏览器访问文件时是会顺便访问(所以会有两个GET) 3.在我们传参数时如遇特殊符号就涉及到了URLENCODE编码...

a15929748502的博客 391

UDP协议详解——使用Socket通信

UDP(UserDatagramProtocol)是一个简单的面向消息的传输层协议,尽管UDP提供标头和有效负载的完整性验证(通过校验和),但它不保证向上层协议提供消息传递,并且UDP层在发送后不会保留UDP 消息的状态。因此,UDP有时被称为不可靠的数据报协议。如果需要传输可靠性,则必须在用户应用程序中实现。UDP使用具有最小协议机制的简单无连接通信模型。UDP提供数据完整性的校验和,以及用于在数据报的源和目标寻址不同函数的端口号。它没有握手对话,因此将用户的程序暴露在底层网络的任何不可靠的方面。

qq_3517289697的博客 3386

HTTP协议及Web静态服务器-显示需要的页面代码

HTTP协议简介 使用谷歌/火狐浏览器分析 在Web应用中,服务器把网页传给浏览器,实际上就是把网页的HTML代码发送给浏览器,让浏览器显示出来。而浏览器和服务器之间的传输协议是HTTP,所以: HTML是一种用来定义网页的文本,会HTML,就可以编写网页; HTTP是在网络上传输HTML的协议,用于浏览器和服务器的通信。 Chrome浏览器提供了一套完整地调试工具,非常适合Web...

weixin_44786231的博客 873

【codex教程】Codex 注册和使用教程(2026最新版)

Codex 是 OpenAI 推出的 AI 编程助手,可以帮助开发者阅读代码、修改代码、运行命令、生成测试、排查 bug、做代码审查,也可以在终端、IDE、Codex App 或网页端使用。根据 OpenAI 帮助中心,截至 2026 年 6 月,Codex 已包含在 Free、Go、Plus、Pro、Business、Edu 和 Enterprise 等 ChatGPT 方案中,但不同套餐的使用额度会有所不同。适合开发者在终端中使用。如果你想在命令行里使用 Codex,可以安装 Codex CLI。

与时俱进,开放共享 2万+

catia之车灯设计——灯玻加厚之后(单层灯玻、多层灯玻的设计)

加厚完A面后如果主机厂没有给其他的面我们该怎么做?

qq_19829077的博客 1305

服务器对html静态页面及图片的处理——如何将静态html页面发送给浏览器端

yuan'wen 客户端对静态文件html和图片的访问其实都是用缺省servlet来完成相应的! [c-sharp] view plaincopy           default          /           这个就是缺省servlet的定义!就是那些不能解析的访问路径都由这个servlet解析!,具体

Immanuel以马内利 2528

Android蓝牙开发—经典蓝牙和BLE(低功耗)蓝牙的区别

      最近在做蓝牙开发,刚接触时傻傻的分不清经典蓝牙和低功耗蓝牙的区别,一直用开发低功耗蓝牙的方法去连接经典蓝牙设备,最后当然是一直连接不上了。在此记录下经典蓝牙和低功耗蓝牙的区别和联系。 Android中的蓝牙         说到Android中的蓝牙,大家听到的可能有蓝牙1.0、蓝牙2.0、蓝牙3.0、蓝牙4.0之类的以数字结尾的蓝牙版本号,而实际上,在最新的标准中,已经不再使用数...

zqf_888的博客 4万+

go语言http服务处理image/css/js等静态文件

go语言实现http服务器时如果处理静态文件,需要用到http.ServeFile: func ServeFile(w ResponseWriter, r *Request, name string) { dir, file := filepath.Split(name) serveFile(w, r, Dir(dir), file, false)} 首先根据请求路径r.URL.Path判...

az44yao的专栏 751

GprMax正演模拟:为什么你的反射波‘消失’了?可能是直达波在捣鬼(附Python后处理脚本)

本文深入探讨了GprMax正演模拟中反射波信号被直达波淹没的现象,并提供了Python后处理脚本的实战指南。通过时域置零、自适应增益控制、频域滤波等多种技术,有效增强反射波信号,帮助用户解决探地雷达模拟中的常见问题。文章还包含详细的代码示例和效果评估方法,适合GPR数据处理的研究人员和工程师参考。

weixin_29305313的博客 232

Fastjson2 2.0.26反序列化漏洞深度剖析:从原理到PoC构造

本文深度剖析了Fastjson2在2.0.26及之前版本中存在的反序列化漏洞。该漏洞允许攻击者通过构造包含恶意TemplatesImpl对象的JSONArray,并利用BadAttributeValueExpException触发,在反序列化过程中实现远程代码执行。文章从漏洞原理、PoC构造、利用链分析到防御建议,提供了全面的技术解读,帮助开发者和安全人员理解其危害并采取应对措施。

d3e4f的博客 1051

HTTP、Tomcat、Nginx、前后端分离开发

HTTP、Tomcat、Nginx、前后端分离开发详解

真滴不可理喻的博客 914

华为OD机试真题 新系统【查找温度记录统计信息】

华为OD机试 新系统真题【查找温度记录统计信息】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【查找温度记录统计信息】多语言题解。

qq_45776114的博客 487

php与java同时运行_linux服务器上利用Nginx让Apache+PHP和Tomcat+Java同时运行

这几天接到一个项目,在Linux搭建java和PHP项目共同运行的环境,刚开始懵逼状态,然后在网上找到了方法,特此记录下来,已被不时之需,其他不多说,下面看具体步骤1.服务器上已经搭建了java环境Tomcat,先把Tomcat的停掉更改端口号(这个不多说了,不会可以百度)2.搭建PHP开发环境(emmmmmm 这个也不多说了)3.安装nginxyum -y install nginx一个命令足够...

weixin_29035405的博客 1159

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

tomcat+nginx/apache

nginx / | \ tomcat1 tomcat2 tomcat3 http { ... upstream tomcat{ server 192.168....

qq_43377292的博客 227

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

什么是Tomcat,Apache和Nginx

这三者都是web serverApache是Web服务器软件。可通过简单的API扩充,将Perl/Python等解释器编译到服务器中。它可以将你的电脑变成一台服务器,让你的电脑开放特定的网络端口,用以接收来自网络上发送到这台机器的HTTP请求,对请求的内容进行处理并作出相应的响应。Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器。

boomgloom的博客 482

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

开源web服务器_排名前5位的开源Web服务器

开源web服务器 统计数据表明 ,超过80%的Web应用程序和网站由开源Web服务器提供支持。 在本文中,我将介绍最受欢迎的开源Web服务器,并简要回顾它们的历史,技术,功能等。 我还将提供一些技巧,以便您可以轻松地自己部署其中一种流行的Web服务器。 根据Wikipedia的说法,Web服务器是“通过HTTP处理请求的计算机系统,HTTP是用于在World Wide Web上分发信息的基本...

cumo3681的博客 1129

最流行的5大开源web服务器

统计数据显示,超过80%的web应用程序和网站都是使用的开源web服务器。在本文中,我们将介绍目前市场上最流行的5大开源web服务器,并简要回顾它们的历史,技术特性以及更多相关内容,方便你自己能够更加轻松的部署这些流行的web服务器。 根据维基百科介绍,web服务器是“通过HTTP协议处理web请求的计算机系统”(a computer system that processes reques

灵思致远Leansmall的博客 2万+

Apache Tomcat服务器版本号隐藏

渗透测试时发现有一台服务器的404报错页面中,有Apache Tomcat的版本号信息显示,发生了信息泄露,可能导致服务器被攻击。

Bertram的博客 3722

Apache、Nginx与Tomcat核心区别与应用场景全解析

在Web服务器领域,理解不同服务器的核心架构与适用场景是构建稳定高效应用的基础。通用HTTP服务器如Apache采用多进程/多线程模型,以其高度模块化和功能全面性著称,适合传统动态内容处理。而事件驱动架构的Nginx,凭借其异步非阻塞的设计,在高并发处理和静态资源分发方面表现卓越,常作为反向代理与负载均衡器。对于Java Web应用,Servlet容器如Tomcat是专属运行环境,负责管理应用生命周期与请求分发。在实际生产环境中,**高并发**场景常采用Nginx作为前端代理,实现动静分离与负载均衡,将动态

weixin_30861459的博客 301

nginx的配置,要求根据不同的来路域名,发送到不同的端口去处理

这一台电脑上既有tomcat 也有 apache,他俩是没有办法同时享用80端口的。我现在让tomcat用8088,apache用8080,然后让nginx用80,这样nginx在收到请求后,根据不同的域名转到8088或8080去处理。 如 http://www.abc.com 转到8088,http://bbs.abc.com转到8080,该如何写nginx的配置文件。跪求,在线等。 http...

huidaoli 1402

nginx使用以及配置

nginx主要使用的地方就是用来进行反向代理的http服务器, 主流的Web服务器有: 1、Apache,开源免费,具有简单、高速、性能稳定等特点,可作代理服务器使用; 2、Nginx,是一种高性能的HTTP和反向代理web服务器,支持高并发和负载均衡; 3、IIS,适用于windows系统,可用于监视配置和控制Internet服务; 4、Tomcat,是一个开放源代码,运行servlet和JSP Web应用软件并基于Java的Web应用软件容器,性能稳定,且免费。 笔者日常主要开发用到的是ng

lg1873868的博客 5204

服务管理-Apache

WEB服务器介绍 web server 有两个意思: 一台负责提供网页的服务器,通过HTTP协议传给客户端(一般是指网页浏览器)。 一个提供网页的服务器程序。 常见的WEB服务器   Apache是世界使用排名第一的web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的web服务器端软件之一。它快速,可靠且可通过简单的...

weixin_30487701的博客 156

nginx反代httpd,实现三种tomcat代理模型至后端的tomcat服务器,会话绑定的三种方式...

构建tomcat集群,实现前端一台nginx反代,到后端的apache服务器,由apache负责向后端的tomcat服务器进行资源调度,这样的模式比直接用nginx反代到后端主机,tomcat服务器所受到的压力会更小,服务将会更加稳定,这样的模式是经过实践检验出来的。如果nginx直接调度到后端tomcat服务器,则只支持http和https,而不支...

weixin_33716557的博客 190

前端:深入理解Web服务器 / Web服务器是“HTTP翻译器”

【摘要】Web服务器本质是HTTP协议与操作系统TCP/IP协议栈之间的"翻译器"。浏览器通过HTTP请求访问资源时,操作系统能建立TCP连接但无法解析应用层协议,导致直接输入IP地址会连接超时。Web服务器的工作流程包括:接收TCP连接、解析HTTP请求、定位文件、组装响应报文。实验表明,用nc监听80端口虽能接收HTTP请求原始文本,但无法进行协议交互。这种分层设计(操作系统处理传输层,Web服务器处理应用层)既保证了网络通信可靠性,又实现了协议灵活性。最终结论:Web服务器在浏览器

snow的博客 239

从 Spring Boot 到 Tomcat:很多人其实分不清“框架”和“服务器”

理解 Spring Boot、Tomcat、Apache 之间的区别,本质上是在理解 Web 系统的分层思想。应用层容器层网络层你就已经从“会写接口”迈向了“理解系统结构”。技术选型并不是简单的“哪个好”,而是看它在系统中承担什么角色。真正成熟的工程思维,是理解每一层的边界和职责。如果你对 Web 架构的演进过程感兴趣,还可以进一步研究三层架构、微服务拆分以及容器化部署,这会让你对后端系统有更完整的认知。

sjkflw121150的博客 304
上一篇: 深度学习常用显卡比较
下一篇: 项目部署:flask+mod_wsgi+apache
studyeboy
博客等级 码龄15年 365粉丝 329原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值