【无标题】

文章目录

  • [第一章 Web与Nginx网站服务](#第一章 Web与Nginx网站服务)
    • [1、Web 概念](#1、Web 概念)
      • [1.1 Web 的基本概念](#1.1 Web 的基本概念)
      • [1.2 B/S 架构模型](#1.2 B/S 架构模型)
      • [1.3 Web 请求与响应过程](#1.3 Web 请求与响应过程)
      • [1.4 静态资源与动态资源](#1.4 静态资源与动态资源)
      • [1.5 Web 的发展阶段](#1.5 Web 的发展阶段)
      • [1.7 小结](#1.7 小结)
    • [2、HTTP 与 HTTPS 协议](#2、HTTP 与 HTTPS 协议)
      • [2.1 HTTP 与 HTTPS 区别](#2.1 HTTP 与 HTTPS 区别)
      • [2.2 HTTPS 握手流程](#2.2 HTTPS 握手流程)
      • [2.3 HTTP 状态码](#2.3 HTTP 状态码)
        • [2.3.1 HTTP 状态码概览](#2.3.1 HTTP 状态码概览)
        • [2.3.2 常用状态码详解](#2.3.2 常用状态码详解)
          • [2xx 成功(请求处理正常)](#2xx 成功(请求处理正常))
          • [3xx 重定向(需进一步操作)](#3xx 重定向(需进一步操作))
          • [4xx 客户端错误(请求本身有问题)](#4xx 客户端错误(请求本身有问题))
          • [5xx 服务器错误(服务器处理失败)](#5xx 服务器错误(服务器处理失败))
        • [生活中的 HTTP 状态码类比](#生活中的 HTTP 状态码类比)
    • [3、Nginx 概念](#3、Nginx 概念)
      • [3.1 Nginx 介绍](#3.1 Nginx 介绍)
        • [Nginx 相关地址](#Nginx 相关地址)
      • [3.2 Nginx 与 Apache 的差异](#3.2 Nginx 与 Apache 的差异)
      • [3.3 Nginx 进程结构](#3.3 Nginx 进程结构)
        • 进程功能说明
        • [补充:Web 服务器请求处理机制对比](#补充:Web 服务器请求处理机制对比)
    • [4、Nginx 安装](#4、Nginx 安装)
    • [5、Nginx 配置](#5、Nginx 配置)
      • [5.1 全局配置](#5.1 全局配置)
      • [5.2 I/O 事件配置](#5.2 I/O 事件配置)
      • [5.3 HTTP 配置](#5.3 HTTP 配置)
    • 总结
    • 核心价值

第一章 Web与Nginx网站服务

1、Web 概念

1.1 Web 的基本概念

Web(World Wide Web,万维网)是运行在互联网之上的一个 超文本信息系统 ,它依赖于 HTTP/HTTPS 协议 实现浏览器与服务器之间的交互。

特点
  • 分布式:资源分布在世界各地的服务器上。
  • 跨平台:只要有浏览器,就能访问资源。
  • 无状态:每次 HTTP 请求都是独立的,服务器不会记住客户端状态(除非使用 Cookie/Session)。

1.2 B/S 架构模型

Web 采用 B/S 架构(Browser/Server)

  • Browser(浏览器):用户的入口,发送请求、渲染页面。
  • Server(服务器):接收请求,返回所需资源或动态内容。

图 1-1:B/S 架构示意图

复制代码
用户浏览器 ──> Web服务器(Nginx/Apache)
                 │
                 └─> 应用服务器(PHP/Python/Java)
                          │
                          └─> 数据库(MySQL/Redis)

1.3 Web 请求与响应过程

一次完整的 Web 访问过程包括以下步骤:

  1. 输入 URL :用户在浏览器输入 http://www.example.com
  2. DNS 解析:浏览器将域名解析为 IP 地址。
  3. 建立连接:浏览器与 Web 服务器建立 TCP 连接(3 次握手)。
  4. 发送请求:浏览器发起 HTTP 请求(GET/POST)。
  5. 服务器处理
    • Web 服务器处理静态资源请求
    • 动态请求转发到应用服务器(如 Tomcat、Django)
    • 应用服务器可能再查询数据库
  6. 返回响应:Web 服务器将结果打包成 HTTP 响应报文返回浏览器。
  7. 渲染页面:浏览器解析 HTML、加载 CSS/JS、渲染最终页面。

图 1-2:Web 请求-响应流程

复制代码
浏览器 ----> Web服务器 ----> 应用服务器 ----> 数据库
    <----       <----             <---- 

1.4 静态资源与动态资源

  • 静态资源:不需要服务器额外处理,直接返回即可。

    • 类型:HTML、CSS、图片、视频、JS 文件
    • 优点:速度快,压力小
  • 动态资源:需要服务器端代码计算生成,再返回客户端。

    • 类型:PHP 脚本、Python Flask/Django、Java Servlet、Ruby
    • 优点:个性化内容,支持交互

图 1-3 静态与动态资源对比图

复制代码
静态资源:用户请求 → Web服务器直接返回
动态资源:用户请求 → Web服务器 → 应用服务器运行代码 → 返回结果

1.5 Web 的发展阶段

  • Web 1.0(只读):静态页面为主,用户只能浏览。
  • Web 2.0(交互式):用户可生成内容,AJAX(前端) 技术普及。
  • Web 3.0(智能化):语义网、区块链、去中心化概念兴起。
1.6 实验:搭建最小 Web 服务

注意:后面安装 Nginx 之后再创建一个静态页面

实验目标

体验一次最简单的 Web 请求与响应过程,结合 Wireshark 抓包分析。

实验步骤
  1. 创建一个静态页面:

    html 复制代码
    <!-- index.html -->
    <html>
    <head><title>My First Web</title></head>
    <body>
    <h1>Hello Web!</h1>
    <p>This is my first web page.</p>
    </body>
    </html>
  2. HTML 文档结构解析:

    html 复制代码
    <!-- index.html -->
    <html(标签)> 
    <head(头部)><title>My First Web</title></head>    
    <body(主体)>
    <h1(一级标题)>Hello Web!</h1>
    <p(段落标签)>This is my first web page.</p>
    </body>
    </html>

1.7 小结

  • Web 是基于 B/S 架构 的信息交互方式。
  • 核心是 请求-响应模型,通过 HTTP/HTTPS 协议传输数据。
  • Web 可提供 静态资源动态资源

2、HTTP 与 HTTPS 协议

2.1 HTTP 与 HTTPS 区别

  • HTTP:明文传输,不安全,默认端口 80。
  • HTTPS:在 HTTP 基础上加入 SSL/TLS 加密层,防止中间人攻击,默认端口 443。

2.2 HTTPS 握手流程

TLS 握手过程(建立安全通道) :客户端发起请求 → 服务端返回证书 → 双方协商加密算法 → 建立安全通道。

具体流程:

  1. 客户端 Hello

    浏览器发起请求,告诉服务器自己支持的加密算法、TLS 版本等信息。

  2. 服务端 Hello + 证书

    网站返回 SSL 证书(含公钥,证明服务器身份),并选择一种双方支持的加密算法。

  3. 客户端验证证书

    浏览器检查证书有效性(是否由可信 CA 颁发、未过期、域名匹配),验证通过后生成随机密钥。

  4. 协商密钥

    客户端用服务器公钥加密随机密钥,发送给服务器;服务器用私钥解密,获取随机密钥。

  5. 加密通信开始

    后续 HTTP 数据均通过随机密钥进行对称加密传输,确保数据安全。

2.3 HTTP 状态码

2.3.1 HTTP 状态码概览

HTTP 状态码为 三位数字,按首位分为五类,用于表示请求处理结果:

类型 范围 含义 大白话理解
1xx 100--199 信息性状态码 "我收到了请求,还在处理中"
2xx 200--299 成功 "请求成功,服务器给你东西了"
3xx 300--399 重定向 "你要的东西搬家了,去新地址找"
4xx 400--499 客户端错误 "你请求有问题(URL错、权限不够)"
5xx 500--599 服务器错误 "服务器出问题,暂时拿不到东西"
2.3.2 常用状态码详解
2xx 成功(请求处理正常)
状态码 含义 类比
200 OK 请求成功 "东西拿到了"
201 Created 创建成功 "你提交的表单/资源已创建"
204 No Content 成功,但没有内容 "操作成功,但没有额外东西返回"
3xx 重定向(需进一步操作)
状态码 含义 类比
301 Moved Permanently 永久重定向 "这个页面永久换地址了"
302 Found 临时重定向 "暂时换地址,下一次还用旧地址"
304 Not Modified 内容未修改 "东西没变,你可以用缓存"
4xx 客户端错误(请求本身有问题)
状态码 含义 类比
400 Bad Request 请求格式错误 "你写的请求我看不懂"
401 Unauthorized 未认证 "先登录,再访问"
403 Forbidden 禁止访问 "你没权限"
404 Not Found 资源未找到 "东西搬走或根本没这东西"
5xx 服务器错误(服务器处理失败)
状态码 含义 类比
500 Internal Server Error 服务器内部错误 "服务器崩了"
502 Bad Gateway 网关错误 "我去找别的服务器,结果那边挂了"
503 Service Unavailable 服务不可用 "服务器忙不过来了,稍后再试"
504 Gateway Timeout 网关超时 "找别的服务器太慢,超时了"
生活中的 HTTP 状态码类比
场景 状态码 对应情况
打开网页正常 200 成功拿到网页
点链接页面搬家 301/302 浏览器自动跳到新地址
输入错网址 404 "没找到这个页面"
登录需要权限 401 "先登录才能看"
网站挂了 500 "服务器出问题了"

总结:HTTP 状态码是服务器对请求的"回话信息",清晰告知请求结果(成功/失败/需跳转)及原因。

3、Nginx 概念

3.1 Nginx 介绍

Nginx ("engine x") 是一款 高性能的 HTTP 服务器与反向代理服务器,由俄罗斯程序员 Igor Sysoev 开发,首个公开版本(0.1.0)发布于 2004 年 10 月,最初为俄罗斯 Rambler.ru 网站设计(该网站访问量曾居俄罗斯第二)。

Nginx 以 BSD-like 协议 开源发行,核心优势包括:

  • 高并发:单台物理服务器可支持 30000~50000 个并发请求,基于事件驱动模型(非阻塞 I/O)。
  • 轻量级:内存占用低(默认运行仅占用数 MB 内存),CPU 使用率低。
  • 稳定可靠:故障率低,支持热部署(升级时不中断服务)。
  • 功能丰富:支持静态资源服务、反向代理、负载均衡、SSL 加密、缓存等。

国内使用 Nginx 的知名企业/网站:百度(BWS)、新浪、网易、腾讯等。

Nginx 相关地址

3.2 Nginx 与 Apache 的差异

对比维度 Nginx Apache
处理模型 事件驱动(非阻塞 I/O) 多进程/多线程(阻塞 I/O)
进程管理 避免子进程冗余,主进程+工作进程模式 基于子进程/线程,每个请求可能占一个进程
资源占用 内存、CPU 消耗低 高并发下资源消耗较高
性能与可伸缩性 不依赖硬件,高并发表现优异 依赖 CPU、内存等硬件,高并发易瓶颈
热部署支持 支持(升级/重载配置不中断服务) 不支持(需重启服务)
静态资源处理 效率高,专门优化 效率一般
反向代理能力 优势明显,支持 TCP 代理、负载均衡 相对较弱,需依赖模块

3.3 Nginx 进程结构

Nginx 采用 主进程(Master Process)+ 工作进程(Worker Process) 架构,配合事件驱动模型处理 Web 请求:

进程功能说明
  • 主进程(Master Process)

    • 管理工作进程(创建、销毁、监控)。
    • 读取并验证 Nginx 配置文件。
    • 处理信号(如重启、停止、重载配置)。
    • 不直接处理用户请求,仅负责"管理"。
  • 工作进程(Worker Process)

    • 所有 Worker 进程平等,共同处理用户请求。
    • 数量建议配置为 服务器 CPU 核心数(或核心数×2),充分利用 CPU 资源,避免进程竞争。
    • 核心职责:
      1. 接收并处理客户端网络请求。
      2. 将请求分发到对应功能模块(如静态资源、反向代理)。
      3. 执行 I/O 操作,获取响应数据。
      4. 与后端服务器(如应用服务器、数据库)通信。
      5. 缓存数据、查询缓存索引。
      6. 发送响应结果给客户端。
      7. 接收主进程指令(重启、升级、退出)。
补充:Web 服务器请求处理机制对比
  • 多进程方式:每接一个请求生成一个子进程,优点是进程独立、故障隔离;缺点是高并发下资源耗尽快(如 Apache 传统模式)。
  • 多线程方式:每接一个请求生成一个线程,优点是资源消耗低;缺点是线程共享内存,一个线程故障可能影响全局(如 IIS)。
  • Nginx 事件驱动方式:单进程/多进程处理多请求(非阻塞 I/O),兼顾资源效率与稳定性,适合高并发场景。

4、Nginx 安装

使用脚本安装(方便复制粘贴,具体脚本可结合实际环境编写,核心步骤参考前文"编译安装 Nginx 服务")。

5、Nginx 配置

Nginx 核心配置文件为 /usr/local/nginx/conf/nginx.conf,通过 vim /usr/local/nginx/conf/nginx.conf 编辑,配置结构分为 全局配置I/O 事件配置HTTP 配置 三部分。

5.1 全局配置

全局配置对 Nginx 整体生效,主要定义进程、日志、PID 等基础参数:

nginx 复制代码
#user nobody; 					# 运行用户,编译时未指定则默认 nobody
worker_processes 4; 			# 工作进程数量,建议设为 CPU 核心数(或核心数×2),访问量小设为 1 即可
#error_log logs/error.log; 		# 错误日志路径(默认在 logs 目录)
#pid logs/nginx.pid; 			# PID 文件路径(默认在 logs 目录)

5.2 I/O 事件配置

通过 events { } 块配置 Nginx 处理网络连接的方式,影响并发性能:

nginx 复制代码
events {
    use epoll; 					# 使用 epoll 模型(Linux 2.6+ 内核推荐,提升高并发性能)
    worker_connections 4096; 	# 每个工作进程最大连接数(默认 1024)
}
补充说明
  • epoll 模型:Linux 内核为高并发设计的 I/O 多路复用接口,比传统 select/poll 效率更高,适合大量并发连接(少量活跃)场景。
  • 连接数限制 :若需提高 worker_connections,需临时修改系统文件句柄限制:ulimit -n 65535(永久修改需编辑 /etc/security/limits.conf)。
  • 总并发能力 :理论总并发数 = worker_processes × worker_connections(如 4×4096=16384),实际受硬件、带宽限制。

5.3 HTTP 配置

通过 http { } 块配置 Web 服务核心规则,包括 MIME 类型、日志、连接保持、虚拟主机等,大部分配置嵌套在 server { } 块(虚拟主机)中:

`nginx

http {

1. 基础配置

include

第一章 Web与Nginx网站服务总结

本章围绕Web基础与Nginx网站服务展开,从概念、协议、工具到实践配置,形成完整的知识体系,核心内容可归纳为以下四部分:

总结

  1. Web核心定义

    Web(万维网)是基于B/S架构(浏览器/服务器) 的超文本信息系统,依赖HTTP/HTTPS协议实现交互,具备分布式(资源跨服务器)、跨平台(浏览器通用)、无状态(请求独立)三大特点。

  2. 请求-响应流程

    一次完整Web访问需经历7个步骤:输入URL→DNS解析(域名转IP)→TCP连接(3次握手)→发送HTTP请求→服务器处理(静态资源直接返回,动态资源转发至应用服务器)→返回HTTP响应→浏览器渲染页面。

  3. 资源类型与Web发展

    • 静态资源(HTML、CSS、图片等):无需服务器计算,直接返回,速度快;
    • 动态资源(PHP/Python脚本等):需应用服务器执行代码生成内容,支持个性化交互;
    • Web发展三阶段:Web 1.0(只读静态页面)→Web 2.0(用户生成内容,AJAX普及)→Web 3.0(智能化、去中心化)。

二、HTTP/HTTPS协议:Web通信的"语言"

  1. 协议核心差异

    • HTTP:明文传输,不安全,默认端口80;
    • HTTPS:基于HTTP+SSL/TLS加密,防中间人攻击,默认端口443,需通过TLS握手建立安全通道(客户端Hello→服务端返回证书→证书验证→密钥协商→加密通信)。
  2. HTTP状态码:请求结果的"信号"

    按首位分为5类,核心常用状态码需重点掌握:

    • 2xx(成功):200 OK(请求正常)、204 No Content(成功无内容);
    • 3xx(重定向):301永久重定向、302临时重定向、304内容未修改(用缓存);
    • 4xx(客户端错):400请求格式错、401未认证、403无权限、404资源未找到;
    • 5xx(服务器错):500内部错误、502网关错、503服务不可用、504网关超时。

三、Nginx核心:高性能Web服务器的优势与架构

  1. Nginx定位与优势

    Nginx是轻量级高性能HTTP服务器/反向代理服务器,由Igor Sysoev开发,最初用于俄罗斯Rambler.ru网站,核心优势包括:

    • 高并发:单台服务器支持3万-5万并发请求(事件驱动非阻塞I/O);
    • 轻量稳定:内存占用低,支持热部署(升级不中断服务);
    • 功能丰富:静态资源服务、反向代理、负载均衡、SSL加密等。
  2. Nginx与Apache差异

    对比传统Apache,Nginx在处理模型(事件驱动vs多进程/线程)、资源占用(低vs高)、热部署(支持vs不支持)、静态资源处理(高效vs一般)、反向代理(优势明显vs依赖模块)上更具竞争力,更适合高并发场景。

  3. Nginx进程结构

    采用"主进程(Master)+工作进程(Worker)"架构:

    • 主进程:管理配置、创建/监控工作进程、处理信号(如重启/停止);
    • 工作进程:平等处理用户请求,数量建议设为CPU核心数(充分利用硬件,减少进程竞争)。

四、Nginx实践:从安装到高级配置

  1. 基础配置框架

    核心配置文件/usr/local/nginx/conf/nginx.conf分为三部分:

    • 全局配置:定义运行用户、工作进程数、日志/PID路径;
    • I/O事件配置:指定epoll模型、单个工作进程最大连接数;
    • HTTP配置:包含MIME类型、连接保持、虚拟主机(server{}块)等,是Web服务配置的核心。
  2. 关键功能配置

    • 访问状态统计:启用stub_status模块,通过/status路径查看活跃连接数、请求处理量;
    • 访问控制:基于密码(auth_basic+htpasswd生成密码文件)、基于客户端IP(allow/deny指令)限制访问;
    • 虚拟主机:三种实现方式------基于域名(不同server_name)、基于IP(不同监听IP)、基于端口(不同监听端口),满足多网站共享一台服务器的需求。

核心价值

本章通过"理论+实践"结合,既明确了Web通信的底层逻辑(协议、流程),又掌握了Nginx这一高性能工具的部署与配置,可支撑从简单静态网站到多站点、高并发场景的Web服务搭建,为后续复杂应用(如反向代理、负载均衡)奠定基础。

相关推荐
小猫挖掘机(绝版)14 小时前
Ubuntu20.04安装ROS Noetic
linux·c++·ubuntu·无人机
dazhong201215 小时前
分布式对象存储系统 Minio 之 Centos 环境安装
linux·分布式·centos
一心09215 小时前
SQL(window)日志在linux 下查看
linux·数据库·windows·sql·日志
一曲_15 小时前
用DeepSeek、豆包管理服务器配置指南 Wisdom SSH 让AI运维再升级!
运维
洛小豆15 小时前
Ubuntu 网络配置演进:从 20.04 到 24.04 的静态 IP 设置指南
linux·后端·ubuntu
zzu123zsw15 小时前
第13章 Jenkins性能优化
运维·性能优化·jenkins
the sun3416 小时前
如何使用VMware创建一台Ubuntu机器
linux·运维·ubuntu
陌上花开缓缓归以16 小时前
linux flash mtd驱动分析
linux
我的收藏手册16 小时前
Web与Nginx网站服务
运维·前端·nginx