网络安全笔记-Web服务器

Web服务器概述

Web服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,可以处理浏览器等Web客户端的请求并返回相应响应,也可以放置网站文件,让全世界浏览;可以放置数据文件,让全世界下载。目前最主流的三个Web服务器是IIS、Apache、 Nginx 。Web应用服务器属于中间件的一种。
组合搭配(LAMP、LAMT、LAMPN、LAMPT)
L:Linux
A:Apache
M:MySQL
T:Tomcat
P:PHP
N:Nginx

Web服务器工作原理

Web服务器的工作原理并不复杂,一般可分成如下4个步骤:连接过程、请求过程、应答过程以及关闭连接。

  • 连接过程就是Web服务器和其浏览器之间所建立起来的一种连接。查看连接过程是否实现,用户可以找到和打开socket这个虚拟文件,这个文件的建立意味着连接过程这一步骤已经成功建立。
  • 请求过程就是Web的浏览器运用socket这个文件向其服务器而提出各种请求。
  • 应答过程就是运用HTTP协议把在请求过程中所提出来的请求传输到Web的服务器,进而实施任务处理,然后运用HTTP协议把任务处理的结果传输到Web的浏览器,同时在Web的浏览器上面展示上述所请求之界面。
  • 关闭连接就是当上一个步骤–应答过程完成以后,Web服务器和其浏览器之间断开连接之过程。

Web服务器上述4个步骤环环相扣、紧密相联,逻辑性比较强,可以支持多个进程、多个线程以及多个进程与多个线程相混合的技术。

常见Web服务器

IIS

  • 概述
    互联网信息服务(Internet Information Services,IIS),是由微软公司提供的基于运行Microsoft Windows的互联网基本服务。最初是WindowsNT版本的可选包,随后自带在Windows2000、Windows XP Professional和Windows Server 2003一起发布,但在普遍使用的Windows XP Home版本上并没有IIS。
  • 特点
    兼容性和安全性
    IIS是在Windows操作系统平台下开发的,这也限制了它只能在这种操作系统下运行。在Windows XP Professional中IIS的一些功能做出了限制,以与Windows Server 2003有所区隔。
    IIS的发展伴随着安全漏洞,而随着IIS6.0的发布,这种情况有所好转。在低于6.0的版本中,其权限是系统用户,而在IIS6.0中,引入了网络服务帐户,这是一个限制用户。这样,即使服务遭到了破坏,也不会造成系统的瘫痪。
    在IIS 7.0中,IISRESET-reboot被移除。这代表无法通过此指令做电脑重启,但IISRESET的其他指令参数则功能照旧,不受影响。

Apache

  • 概述
    Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩展,将Perl/Python等解释器编译到服务器中。
    Apache HTTP服务器是一个模块化的服务器,源于NCSAhttpd服务器,经过多次修改,成为世界使用排名第一的Web服务器软件。
    它可以运行在几乎所有广泛使用的计算机平台上。
    Apache源于NCSAhttpd服务器,经过多次修改,成为世界上最流行的Web服务器软件之一。Apache的特点是简单、速度快、性能稳定,并可做代理服务器来使用。
    本来它只用于小型或试验Internet网络,后来逐步扩充到各种Unix系统中,尤其对Linux的支持相当完美。Apache有多种产品,可以支持SSL技术,支持多个虚拟主机。Apache是以进程为基础的结构,进程要比线程消耗更多的系统开支,不太适合于多处理器环境,因此,在一个Apache Web站点扩容时,通常是增加服务器或扩充群集节点而不是增加处理器。
    到目前为止Apache仍然是世界上用的最多的Web服务器,**市场占有率达60%**左右。世界上很多著名的网站如Amazon、Yahoo!、W3 Consortium、Financial Times等都是Apache的产物,它的成功之处主要在于它的源代码开放、有一支开放的开发队伍、支持跨平台的应用(可以运行在几乎所有的Unix、Windows、Linux系统平台上)以及它的可移植性等方面。
  • Apacheweb服务器软件拥有以下特性:
    1.支持最新的HTTP/1.1通信协议
    2.拥有简单而强有力的基于文件的配置过程
    3.支持通用网关接口
    4.支持基于IP和基于域名的虚拟主机
    5.支持多种方式的HTTP认证
    6.集成Perl处理模块
    7.集成代理服务器模块
    8.支持实时监视服务器状态和定制服务器日志
    9.支持服务器端包含指令(SSI)
    10.支持安全Socket层(SSL)
    11.提供用户会话过程的跟踪
    12.支持FastCGI
    13.通过第三方模块可以支持JavaServlets

Nginx

  • 概述
    Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,公开版本1.19.6发布于2020年12月15日。
    其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、简单的配置文件和低系统资源的消耗而闻名。2022年01月25日,nginx 1.21.6发布。
    Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好。
  • 优点
    Nginx 可以在大多数 Unix Linux OS 上编译运行,并有 Windows 移植版。 对于新建站点,建议使用最新稳定版作为生产版本,已有站点的升级急迫性不高。
    在连接高并发的情况下,Nginx是Apache服务不错的替代品:能够支持高达 50,000 个并发连接数的响应。
    Nginx作为负载均衡服务:Nginx 既可以在内部直接支持 Rails 和 PHP 程序对外进行服务,也可以支持作为 HTTP代理服务对外进行服务。Nginx采用C进行编写,不论是系统资源开销还是CPU使用效率都比 Perlbal 要好很多。
    处理静态文件,索引文件以及自动索引;打开文件描述符缓冲。
    无缓存的反向代理加速,简单的负载均衡和容错。
    FastCGI,简单的负载均衡和容错。
    模块化的结构。包括 gzipping, byte ranges, chunked responses,以及 SSI-filter 等 filter。如果由 FastCG或其它代理服务器处理单页中存在的多个 SSI,则这项处理可以并行运行,而不需要相互等待。
    支持 SSL 和 TLSSNI。

Tomcat

  • 概述
    Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现。
    因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为比较流行的Web 应用服务器。
    Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,**属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。**对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。
    当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。另外,Tomcat和IIS等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。

WebLogic

  • 概述
    WebLogic是美国Oracle公司出品的一个application server,确切的说是一个基于JAVAEE架构的中间件,WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的开发、集成、部署和管理之中。
    WebLogic是美商Oracle的主要产品之一,是并购BEA得来。是商业市场上主要的Java(J2EE)应用服务器软件(application server)之一,是世界上第一个成功商业化的J2EE应用服务器, 已推出到12c(12.2.1.4) 版。而此产品也延伸出WebLogic Portal,WebLogic Integration等企业用的中间件(但当下Oracle主要以Fusion Middleware融合中间件来取代这些WebLogic Server之外的企业包),以及OEPE(Oracle Enterprise Pack for Eclipse)开发工具。
  • 优点
    WebLogic Server具有开发和部署关键任务电子商务Web应用系统所需的多种特色和优势,包括:
    • 标准
      对业内多种标准的全面支持,包括EJB、JSP、JMS、JDBC、XML(标准通用标记语言的子集)和WML,使Web应用系统的实施更为简单,并且保护了投资,同时也使基于标准的解决方案的开发更加简便。
    • 可扩展性
      WebLogic Server以其高扩展的架构体系闻名于业内,包括客户机连接的共享、资源pooling以及动态网页和EJB组件群集。
    • 快速开发
      凭借对EJB和JSP的支持,以及WebLogic Server 的Servlet组件架 构体系,可加速投放市场速度。这些开放性标准与WebGain Studio配合时,可简化开发,并可发挥已有的技能,迅速部署应用系统。
    • 更趋灵活
      WebLogic Server的特点是与领先数据库、操作系统和Web服务器紧密集成。
    • 可靠性
      其容错、系统管理和安全性能已经在全球数以千计的关键任务环境中得以验证。
    • 体系结构
      WebLogic Server是专门为企业电子商务应用系统开发的。企业电子商务应用系统需要快速开发,并要求服务器端组件具有良好的灵活性和安全性,同时还要支持关键任务所必需的扩展、性能、和高可用性。WebLogic Server简化了可移植及可扩展的应用系统的开发,并为其它应用 系统和系统提供了丰富的互操作性。
      凭借其出色的群集技术,WebLogic Server拥有最高水平的可扩展 性和可用性。BEA WebLogic Server既实现了网页群集,也实现了EJB组件 群集,而且不需要任何专门的硬件或操作系统支持。网页群集可以实现透明的复制、负载平衡以及表示内容容错,如Web购物车;组件群集则处理复杂的复制、负载平衡和EJB组件容错,以及状态对象(如EJB实体)的恢复。
      无论是网页群集,还是组件群集,对于电子商务解决方案所要求的可扩展性和可用性都是至关重要的。共享的客户机/服务器和数据库连接以及数据缓存和EJB都增强了性能表现。这是其它Web应用系统所不具备的。

WebSphere

  • 概述
    WebSphere 是 IBM 的软件平台。它包含了编写、运行和监视全天候的工业强度的随需应变 Web 应用程序和跨平台、跨产品解决方案所需要的整个中间件基础设施,如服务器、服务和工具。WebSphere 提供了可靠、灵活和健壮的软件。
    WebSphere Application Server 是该设施的基础,其他所有产品都在它之上运行。WebSphere Process Server 基于 WebSphere Application Server 和 WebSphere Enterprise Service Bus,它为面向服务的体系结构 (SOA) 的模块化应用程序提供了基础,并支持应用业务规则,以驱动支持业务流程的应用程序。高性能环境还使用 WebSphere Extended Deployment 作为其基础设施的一部分。其他 WebSphere 产品提供了广泛的其他服务。
    WebSphere 是一个模块化的平台,基于业界支持的开放标准。可以通过受信任和持久的接口,将现有资产插入 WebSphere,可以继续扩展环境。WebSphere 可以在许多平台上运行,包括 Intel、Linux 和 z/OS。
    WebSphere 是随需应变的电子商务时代的最主要的软件平台,可用于企业开发、部署和整合新一代的电子商务应用,如B2B,并支持从简单的网页内容发布到企业级事务处理的商业应用。WebSphere 可以创建电子商务站点, 把应用扩展到联合的移动设备, 整合已有的应用并提供自动业务流程。

JBoss

  • 概述
    是一个基于J2EE的开放源代码的应用服务器。 JBoss代码遵循LGPL许可,可以在任何商业应用中免费使用。JBoss是一个管理EJB的容器和服务器,支持EJB 1.1、EJB 2.0和EJB3的规范。但JBoss核心服务不包括支持servlet/JSP的WEB容器,一般与Tomcat或Jetty绑定使用。
  • 特点
    在J2EE应用服务器领域,JBoss是发展最为迅速的应用服务器。由于JBoss遵循商业友好的LGPL授权分发,并且由开源社区开发,这使得JBoss广为流行。
    • 将具有革命性的JMX微内核服务作为其总线结构;
    • 本身就是面向服务架构(Service-Oriented Architecture,SOA);
    • 具有统一的类装载器,从而能够实现应用的热部署和热卸载能力。
      因此,高度模块化的和松耦合。JBoss应用服务器是健壮的、高质量的,而且还具有良好的性能
    • JBoss是免费的,开放源代码J2EE的实现,通过LGPL许可证进行发布。但同时也有闭源的,开源和闭源流入流出的不是同一途径。
    • JBoss需要的内存和硬盘空间比较小。
    • 安装便捷:解压后,只需配置一些环境变量即可。
    • JBoss支持"热部署",部署BEAN时,只拷贝BEAN的JAR文件到部署路径下即可自动加载;如果有改动,也会自动更新。
    • JBoss与Web服务器在同一个Java虚拟机中运行,Servlet调用EJB不经过网络,从而大大提高运行效率,提升安全性能。
    • 用户可以直接实施J2EE-EAR,而不是以前分别实施EJB-JAR和Web-WAR,非常方便。
    • Jboss支持集群。

Kangle

  • 概述
    kangle(kangle web服务器)是一款跨平台、功能强大、安全稳定、易操作的高性能web服务器和反向代理服务器软件,支持asp、net、java。除此:kangle也是一款专为做虚拟主机研发的web服务器。实现虚拟主机独立进程、独立身份运行。用户之间安全隔离,一个用户出问题不影响其他用户。安全支持php、asp、asp.net、vb.net、C#、java、ruby等多种动态开发语言。
  • 特点
    • 免费、开源
    • 跨平台
      Kangle 是一款跨平台(Linux\Windows\Freebsd\Solaris\Openbsd等)的web服务器。
    • PHP下高性能
      kangle>>nginx>>apache(kangle高并发下性能乃全球第一,超越apache 8.7倍性能)
    • 可轻松查看到被攻击的url
      这是kangle web服务器独有的,其它web服务器很难查找到。
    • 抗CC攻击0误封
      上百万高并发下可以轻松识别攻击进行防御,并且可以做到0误封成功防护大量类型的CC攻击。
    • 工作模型多样化
      Windows上采用iocp、Linux上采用epoll、Bsd上采用kqueue。
    • 功能强大、灵活
      Kangle具有强大的访问控制功能。
      kangle的访问控制理念来自linux的iptables防火墙,kangle拥有功能最小化的匹配模块和标记模块,通过组合,反转等可以实现用户最复杂的需求;
    • 是一款做虚拟主机的专业web服务器
      1.实现虚拟主机独立身份,独立进程。
      2隔离攻击(实现某个虚拟主机受到外部攻击,不影响到服务器上其它虚拟主机)。
      3.智能防cc攻击
      (CC是http协议的攻击,不是tcp/ip,kangle是底层的web服务器,更懂http)等
      做全能空间(php虚拟主机、java虚拟主机等)
    • 应用灵活
      kangle可在多方面进行应用。
      作web服务器、
      反向代理服务器、
      虚拟化其它web服务器(如虚拟化tomcat,作java空间)、
      多节点cdn等,非常灵活。

问题(简)

Nginx和Apache和Tomcat的区别及优缺点

  • 1)Apache
    Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页,它是一个模块化的服务器,可以运行在几乎所有广泛使用的计算机平台上。其属于应用服务器。
    Apache支持模块多,性能稳定,Apache本身是静态解析,适合静态HTML、图片等,但可以通过扩展脚本、模块等支持动态页面等。
    缺点:配置相对复杂,自身不支持动态页面。
    优点:相对于Tomcat服务器来说处理静态文件是它的优势,速度快。Apache是静态解析,适合静态HTML、图片等。
    (Apche可以支持PHPcgiperl,但是要使用Java的话,你需要Tomcat在Apache后台支撑,将Java请求由Apache转发给Tomcat处理。)
  • 2)Tomcat:
    Tomcat 是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目。Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器。
    Tomcat是应用(Java)服务器,它只是一个Servlet(JSP也翻译成Servlet)容器,可以认为是Apache的扩展,但是可以独立于Apache运行。
    缺点:可以说Tomcat 只能用做java服务器
    优点:动态解析容器,处理动态请求,是编译JSP/Servlet的容器。
    三个端口:
    8005:关闭tomcat通信接口
    8009:与其他http服务器通信接口,用于http服务器集合
    8080:建立http连接 用,如浏览器访问
  • 3)Nginx
    Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engine X”,是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器。其特点是占有内存少,并发能力强,易于开发,部署方便。Nginx 支持多语言通用服务器。
    缺点:Nginx 只适合静态和反向代理。
    优点:负载均衡、反向代理、处理静态文件优势。Nginx 处理静态请求的速度高于Apache。
    Nginx有动态分离机制,静态请求直接就可以通过Nginx处理,动态请求才转发请求到后台交由Tomcat进行处理。

Tomcat结合Apache、Nginx实现高性能的web服务器
Tomcat虽然是一个servlet和jsp容器,但是它也是一个轻量级的web服务器。它既可以处理动态内容,也可以处理静态内容。不过,tomcat的最大优势在于处理动态请求,处理静态内容的能力不如apache和nginx,并且经过测试发现,tomcat在高并发的场景下,其接受的最大并发连接数是有限制的,连接数过多会导致tomcat处于"僵死"状态,因此,在这种情况下,我们可以利用nginx的高并发,低消耗的特点与tomcat一起使用。因此,tomcat与nginx、apache结合使用共有如下几点原因:
1、tomcat处理html的能力不如Apache和nginx,tomcat处理静态内容的速度不如apache和nginx。
2、tomcat接受的最大并发数有限,连接数过多,会导致tomcat处于"僵尸"状态,对后续的连接失去响应,需要结合nginx一起使用。
通常情况下,tomcat与nginx、Apache结合使用,nginx、apache既可以提供web服务,也可以转发动态请求至tomcat服务器上。但在一个高性能的站点上,通常nginx、apache只提供代理的功能,也就是转发请求至tomcat服务器上,而对于静态内容的响应,则由前端负载均衡器来转发至专门的静态服务器上进行处理。在这种架构中,当haproxy或nginx作为前端代理时,如果是静态内容,如html、css等内容,则直接交给静态服务器处理;如果请求的图片等内容,则直接交给图片服务器处理;如果请求的是动态内容,则交给tomcat服务器处理,不过在tomcat服务器上,同时运行着nginx服务器,此时的nginx作为静态服务器,它不处理静态请求,它的作用主要是接受请求,并将请求转发给tomcat服务器的,除此之外,nginx没有任何作用。

2、区别:

  • 1)Nginx和tomcat的区别
    nginx常用做静态内容服务和代理服务器,直接外来请求转发给后面的应用服务器(tomcat,Django等),tomcat更多用来做一个应用容器,让java web app泡在里面的东西。严格意义上来讲,Apache和nginx应该叫做HTTP Server,而tomcat是一个Application Server是一个Servlet/JSO应用的容器。
    客户端通过HTTP Server访问服务器上存储的资源(HTML文件,图片文件等),HTTP Server是中只是把服务器上的文件如实通过HTTP协议传输给客户端。
    应用服务器往往是运行在HTTP Server的背后,执行应用,将动态的内容转化为静态的内容之后,通过HTTP Server分发到客户端
    注意:nginx只是把请求做了分发,不做处理!!!
  • 2)nginx和Apache的区别
    Apache是同步多进程模型,一个连接对应一个进程,而nginx是异步的,多个连接(万级别)可以对应一个进程。
    nginx轻量级,抗并发,处理静态文件好
    Apache超稳定,对PHP支持比较简单,nginx需要配合其他后端用,处理动态请求有优势,建议使用前端nginx抗并发,后端apache集群,配合起来会更好
    nignx的正向代理和反向代理

3、优缺点比较

  1. nginx相对于apache的优点
    轻量级,同样起web 服务,比apache占用更少的内存及资源 抗并发,nginx 处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能高度模块化的设计,编写模块相对简单提供负载均衡
    社区活跃,各种高性能模块出品迅速
  2. apache 相对于nginx 的优点
    apache的 rewrite(重写) 比nginx 的强大 ;
    支持动态页面;
    支持的模块多,基本涵盖所有应用;
    性能稳定,而nginx相对bug较多。
  3. 两者优缺点比较
    Nginx 配置简洁, Apache 复杂 ;
    Nginx 静态处理性能比 Apache 高 3倍以上 ;
    Apache 对 PHP 支持比较简单,Nginx 需要配合其他后端用;Apache 的组件比 Nginx 多 ;
    apache是同步多进程模型,一个连接对应一个进程;nginx是异步的,多个连接(万级别)可以对应一个进程;
    nginx处理静态文件好,耗费内存少;
    动态请求由apache去做,nginx只适合静态和反向;
    Nginx适合做前端服务器,负载性能很好;
    Nginx本身就是一个反向代理服务器 ,且支持负载均衡
  • 总结
    Nginx优点:负载均衡、反向代理、处理静态文件优势。nginx处理静态请求的速度高于apache;
    Apache优点:相对于Tomcat服务器来说处理静态文件是它的优势,速度快。Apache是静态解析,适合静态HTML、图片等。
    Tomcat:动态解析容器,处理动态请求,是编译JSPServlet的容器,Nginx有动态分离机制,静态请求直接就可以通过Nginx处理,动态请求才转发请求到后台交由Tomcat进行处理。

Apache在处理动态有优势,Nginx并发性比较好,CPU内存占用低,如果rewrite频繁,那还是Apache较适合。

参考

百度百科-WEB服务器

你可能感兴趣的:(网络安全笔记,web安全,服务器)