概述
Web服务器 这个词有两层含义:
- 硬件层面:指一台(或一组)安装了特定软件的物理计算机,它存储了网站的文件(如 HTML、CSS、JS、图片),并连接到互联网,随时准备对外提供服务。
- 软件层面:指一个计算机程序,它的核心工作是监听来自客户端(通常是Web浏览器)的请求,然后处理这些请求,并将请求的资源(如网页、图片)响应 回去。
我们通常讨论的是软件层面的Web服务器。
核心工作流程
- 监听
Web服务器软件(如Nginx、Apache)启动,在一个特定的端口(如80用于HTTP,443用于HTTPS)上监听是否有请求到来。
- 接收请求
用户浏览器(客户端)在地址栏输入网址或点击链接,生成一个 HTTP/HTTPS 请求,并通过网络发送到服务器。
- 解析请求
Web服务器解析收到的HTTP请求,理解客户端想要什么。它主要解析:
- 请求方法:GET(获取数据)、POST(提交数据)等。
- 请求的URL:如 /products/iphone.html。
- 请求头:包含浏览器信息、语言、Cookies等。
- 处理请求
Web服务器根据URL找到对应的资源。这有两种情况:
- 静态内容:直接找到硬盘上对应的文件(如 .html, .jpg, .css 文件)。
- 动态内容:如果需要,会将请求转发给应用服务器(如PHP, Python, Node.js),由它执行程序、查询数据库,生成最终的HTML页面。
- 返回响应
Web服务器将处理结果打包成一个 HTTP 响应 发回给浏览器。响应包括:
- 状态码:200 OK(成功)、404 Not Found(未找到)、500 Internal Server Error(服务器内部错误)。
- 响应头:包含文件类型、大小、缓存设置等。
- 响应体:请求的实际内容(如HTML代码、图片数据)。
- 连接管理
处理完一个请求后,Web服务器会决定是关闭连接(HTTP/1.0)还是保持连接以处理来自同一客户端的下一个请求(HTTP/1.1及以上),这提高了效率。
Web服务器的主要功能(超越基础服务)
除了核心的“请求-响应”循环,现代Web服务器还承担着许多重要职责:
- 虚拟主机:一台物理Web服务器软件可以同时为多个不同的网站(域名)提供服务。
- 安全防护:
- HTTPS/SSL终端:处理加密和解密,保护数据传输安全。
- 访问控制:限制某些IP地址的访问。
- 防止DDoS攻击:通过限流等手段缓解攻击。
- 负载均衡:在高流量场景下,将涌入的请求分发到后端的多个服务器,避免单台服务器过载。
- 缓存:将频繁请求的静态内容(甚至动态内容)暂存在内存中,下次请求时直接返回,极大提升响应速度。
- 日志记录:记录所有访问请求(谁、什么时候、访问了什么、结果如何),用于分析、审计和故障排除。
- 压缩:在发送响应前,对文本内容(如HTML、CSS)进行压缩(如Gzip),以减少带宽占用,加快传输速度。
常见的Web服务器软件
- Nginx:
- 特点:以高性能、高并发、低内存占用闻名。它采用事件驱动的异步架构,特别擅长处理大量同时连接的请求(高并发)。
- 用途:常被用作反向代理服务器、负载均衡器,以及直接服务静态内容。
- Apache HTTP Server:
- 特点:历史悠久,功能模块极其丰富,稳定可靠。它主要通过多进程/多线程模型来处理请求。
- 用途:非常灵活,通过加载不同的模块(如 mod_php)可以轻松支持各种动态语言。在共享主机环境中非常流行。
- Microsoft IIS:
- 特点:微软开发的,与Windows操作系统和.NET技术栈深度集成。
- 用途:主要运行在Windows服务器上,为ASP.NET应用程序提供服务。
- 其他:
- LiteSpeed:商业软件,以高性能和与Apache兼容著称。
- Caddy:以配置简单和自动启用HTTPS为特色。