Nginx 介绍(一)

本文介绍了web服务器的工作原理,重点关注了Nginx、Apache、Tomcat和IIS等常见服务器的特性和适用场景,强调了Nginx的高性能、低成本和优秀网络IO模型,以及为何选择Nginx作为首选的Web服务器解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

web服务器的介绍

b/s c/s描述

  • c/s:Client/Server 客户端/服务端,比如:
    • qq客户端/qq服务器
    • 微信客户端/微信服务器
    • lol客户端/lol服务器
  • b/s:Browser/Server 浏览器、网站/服务端。

常见的web服务器

在linux和windows平台常见的web服务器:

  • Apache(国企性质,要求技术栈不需要那么先进,没有大量流量,只需要系统架构稳定即可)
  • Nginx(主流的互联网公司都选择使用nginx)
  • Lighttpd(性能非常接近nginx的一款web server,主要是外国人再用)
  • Tomcat(应用服务器,java做程序解析)
  • IBM(websphere)
    windows平台下的
  • IIS (internet information server)
nginx + uwsgi (python后台,做负载均衡)
Apache

apache是世界主流的web服务器,大部分网站都是apache搭建的,优势是开放源代码,开发维护的团队很强大,有好几十年的历史,apache支持跨平台应用(linux,unix,windows)
但是apache属于重量级产品,功能都是以模块化定制,且他的工作模式,占用的内存资源过多,对系统消耗很大,性能也稍弱于nginx。

Nginx

nginx是一款优秀的高性能的web服务器,反向代理服务器,负载均衡服务器。

Lighttpd

是一款高性能,高安全性,快速,且配置灵活的web服务器产品。专门为高流量的网站设计,相比于其他各款web服务器,内存占用极小,能够提供有效的API,对CPU负载均衡情况管理,支持后台请求转发,fastapi,scgi,资源压缩,url重写,别名等等功能,是nginx的重头对手之一。

Tomcat

tomcat汤姆猫是一个开源,运行基于java的一个web服务器,主要根据serverlet进行执行,但是tomcat对于平台文件,静态文件,高并发处理还是较弱,因此也适合nginx,apache结合使用。
想要使用tomcat应用服务器,需要掌握基本的java环境部署等等。

IIS

和nginx、apache、tomcat有哪些区别呢?
IIS支持图形化操作,毕竟是在windows平台,通过鼠标点击就能完成网站配置

Nginx

是俄罗斯人开发的一款高性能的HTTP web服务器,支持反向代理,负载均衡,资源压缩,url重写,网站跳转等等功能。
nginx以高效的linux网络模型,epoll,event,作为网络IO模型,kqueue,在高并发网站的情况下,nginx能够轻松支持5W+的并发流量,并且消耗的服务器内存CPU资源也是很低的,运行起来非常稳定。

Nginx特点

  • 成本低
    • nginx强大在于其反向代理功能,软件负载均衡。还存在硬件负载均衡(f5,netscaler) ,但是价格昂贵,不会使用,利用nginx搭建高可用性的负载均衡的站点。
    • 由于nginx支持bsd开源协议,bsd就是可以给用户更自由的权限,可以自由试用,修改源码,如果你修改后发布,还得遵循bsd协议。
    • 利用软件技术可以实现硬件负载均衡一样的效果,经济实惠。
  • 几大优势
    • nginx配置文件更加易懂。
    • nginx支持网站url地址重写(网站需要更换域名),还能够根据url特点进行请求转发,判断(7层负载均衡)。
    • nginx支持高可用性配置(防止单点故障,服务器崩溃,nginx非常稳定,宕机异常退出的几率很小)。
    • nginx节省网络带宽,支持静态文件压缩后传输,支持gzip压缩功能。
    • nginx支持热部署,可以在不停nginx情况下更新代码,并且nginx还支持7*24h运转。

nginx的网络模型

网络IO模型概念
  • 内核空间,用户空间
    内核空间:一个操作系统的核心组件,称之为内核,独立于普通的应用程序,可以直接操作底层硬件,处理系统受保护的区域。操作系统为了保护系统的核心区域,也就是内核,使得用户无法直接修改系统底层,因此操作系统就开辟了两块虚拟内存空间,一是内核空间,二是用户空间

  • 进程切换
    为了控制进程的执行,操作系统的内核需要有能力挂起CPU上运行的程序(暂停一个CPU正在处理的进程),还能恢复之前已经挂起的进程,这种行为称之为进程切换。

  • 进程阻塞
    正在执行中的进程,由于某些事件的等待,比如资源加载中,资源加载失败,操作系统自动的就会阴塞该进程,调
    用内核的block语句,让该进程处于阻塞状态,因此阻塞的进程是一种主动的行为。

  • 文件描述符
    这是计算机科学里的一个术语,表示指向文件引用的一个抽象的概念,文件描述符是一个索引值,指向linux内核为每一个进程打开的文件做记录的一个表。程序每打开一个文件,系统内核就向该进程发送一个文件描述符。

  • Linux IO模型
    input 输入和output 输出,对于linux的文件读写操作,数据的I0操作,比如文件的读取,数据优先会被拷贝到操作系统的内核缓冲区,然后再冲缓冲区拷贝到应用程序的内存空间。

    • 这是属于本地文件的I0过程
    一个读取操作,经历了两个阶段
     1.等待数据准备
     2.数据从内核空间拷贝到用户进程空间
    
    • 网络10
     1.等待网络上的数据分段到达,然后复制到内核的缓冲区
     2.数据从内核缓冲区拷贝到用户空间的应用程序
     网络应用主要面临两个问题,数据计算,网络T0延迟
     网络的延迟,是造成性能低下的最大的原因
    

为什么选择Nginx

nginx就是在于优秀的网络IO处理模型
常见的IO模型

  • 阻塞模型
  • 非阻塞模型
  • IO多路复用
  • 异步IO
    网络IO指的就是在网络中进行数据的读,写操作,本质上就是一个socket套接字读取,socket套接字在linux系统中被抽象为流的概念,网络I0就是对数据流的处理。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

时光不染,回忆不淡୧⍤⃝

!!!!!!!!!!!

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

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

打赏作者

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

抵扣说明:

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

余额充值