Web与Nginx网站服务(1)

目录

前言

一、web概念

1.web基本概念

2.B/S构架模型

[1. 核心组件](#1. 核心组件)

[2. 工作流程](#2. 工作流程)

[3. 主要优势](#3. 主要优势)

[4. 典型应用场景](#4. 典型应用场景)

3.web请求与响应过程

[(1). 用户发起请求](#(1). 用户发起请求)

[(2). DNS解析](#(2). DNS解析)

[(3). 建立TCP连接](#(3). 建立TCP连接)

[(4). 发送HTTP请求](#(4). 发送HTTP请求)

[(5). 服务器处理请求](#(5). 服务器处理请求)

[(6). 服务器返回响应](#(6). 服务器返回响应)

[(7). 浏览器渲染页面](#(7). 浏览器渲染页面)

[(8). 关闭连接](#(8). 关闭连接)

关键协议与技术

4.静态资源与动态资源

二、HTTP与HTTP协议

1.http与https区别

[(1). 安全性](#(1). 安全性)

[(2). 默认端口](#(2). 默认端口)

[(3). 证书机制](#(3). 证书机制)

[(4). 协议层](#(4). 协议层)

[(5). 性能影响](#(5). 性能影响)

[(6). SEO 与浏览器支持](#(6). SEO 与浏览器支持)

使用场景

2.HTTPS握手流程

3.HTTP状态码

三、nginx概念

1.nginx介绍

2.简述Nginx和Apache的差异

3.nginx进程结构

[4.编译安装nginx | yum install安装](#4.编译安装nginx | yum install安装)

总结


前言

在当今数字化时代,网站作为信息传递、服务提供和商业活动的重要载体,其稳定性、性能和安全性至关重要。Web服务的核心依赖于强大的服务器软件来处理用户请求、传输数据并保障在线体验。在众多服务器解决方案中,Nginx以其卓越的性能、高并发处理能力、低内存消耗以及灵活的可配置性脱颖而出,成为支撑现代高性能网站和应用的基石。无论是作为高效的HTTP服务器、可靠的反向代理服务器,还是强大的负载均衡器,Nginx都展现出了其不可或缺的价值。本部分将探讨Web服务的基本原理,并重点阐述Nginx在构建高效、稳定网站服务体系中的核心作用与实践。

一、web概念

1.web基本概念

Web 是一个基于 超文本(Hypertext)互联网(Internet) 的信息系统。它允许用户通过 浏览器(Browser) 访问和浏览存储在 Web服务器(Web Server) 上的 网页(Web Page) 。这些网页通过 超链接(Hyperlink) 相互连接,形成一个巨大的信息网络。

2.B/S构架模型

B/S架构(Browser/Server,浏览器/服务器模式)是一种常见的软件系统架构模式。在这种架构中,客户端通过浏览器访问服务器上的应用,主要业务逻辑和数据存储均在服务器端完成。以下是其核心特点与分层结构:

1. 核心组件
  • 浏览器层:用户通过浏览器(如Chrome, Firefox)与系统交互,无需安装特定客户端软件。
  • 服务器层:处理业务逻辑,接收请求并返回响应(如Web服务器、应用服务器)。
  • 数据库层:存储和管理数据(如MySQL, PostgreSQL)。
2. 工作流程

\\text{浏览器请求} \\rightarrow \\text{服务器处理} \\rightarrow \\text{数据库操作} \\rightarrow \\text{响应返回浏览器}

3. 主要优势
  • 维护便捷:只需更新服务器端代码,客户端无需升级。
  • 跨平台性:浏览器作为标准运行环境,兼容不同操作系统。
  • 资源消耗低:客户端无需高性能硬件。
4. 典型应用场景
  • 电商网站(如淘宝)
  • 在线文档系统(如Google Docs)
  • 企业信息管理系统

5.局限性

  • 依赖网络质量
  • 服务器压力集中
  • 浏览器兼容性问题

3.web请求与响应过程

(1). 用户发起请求

用户在浏览器地址栏输入URL(例如 https://www.example.com)并按下回车键,或点击页面上的链接/按钮触发请求。

(2). DNS解析

浏览器首先需要将域名(如 www.example.com)解析为对应的IP地址:

  • 浏览器查询本地缓存(如Hosts文件、DNS缓存);
  • 若未命中,向本地配置的DNS服务器发送查询请求;
  • DNS服务器通过递归查询返回目标服务器的IP地址(如 93.184.216.34)。

(3). 建立TCP连接

浏览器通过IP地址与目标服务器建立TCP连接:

  • 三次握手
    1. 客户端发送 SYN 包(同步请求);
    2. 服务器回复 SYN-ACK 包(确认+同步);
    3. 客户端发送 ACK 包(最终确认)。
  • 若使用HTTPS,还需进行TLS握手以加密通信。

(4). 发送HTTP请求

浏览器构建HTTP请求报文并发送至服务器:

http 复制代码
GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0
Accept: text/html
 
  • 包含请求方法(如 GETPOST)、路径、协议版本、头部字段(如 HostCookie)和可选的请求体。

(5). 服务器处理请求

服务器接收请求后:

  • Web服务器(如Nginx、Apache)解析请求;
  • 应用框架(如Django、Express)处理业务逻辑;
  • 可能查询数据库、调用外部API或读取文件系统。

(6). 服务器返回响应

服务器生成HTTP响应报文:

http 复制代码
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 1024

<!DOCTYPE html>
<html>...</html>
 
  • 包含状态码(如 200 表示成功)、响应头(如 Content-Type)和响应体(如HTML内容)。

(7). 浏览器渲染页面

浏览器接收响应后:

  1. 解析HTML,构建DOM树;
  2. 加载CSS/JS,生成渲染树;
  3. 执行JavaScript,渲染最终页面。

(8). 关闭连接

完成数据传输后,通过 四次挥手 关闭TCP连接:

  1. 客户端发送 FIN 包;
  2. 服务器回复 ACK 包;
  3. 服务器发送 FIN 包;
  4. 客户端回复 ACK 包。

关键协议与技术

  • HTTP/HTTPS: 应用层协议
  • TCP: 传输层协议(可靠传输)
  • IP: 网络层协议(路由寻址)
  • DNS: 域名解析系统

4.静态资源与动态资源

静态资源

  • 定义: 指那些在服务器上存储时内容固定不变,并且当用户请求时可以直接发送给用户的文件。它们的内容在用户访问之前就已经确定,并且通常不会因为用户的请求内容或身份而改变。
  • 特点:
    • 内容固定: 每次请求返回的内容都相同。
    • 可直接传输: 服务器通常不需要进行复杂的处理,可以直接读取文件内容并发送给客户端。
    • 易于缓存: 非常适合被浏览器、CDN等缓存,因为内容不变,缓存后可以显著提高访问速度和减轻服务器负担。
  • 常见例子:
    • HTML文件(不包含服务端动态渲染的部分)
    • CSS样式表文件 (.css)
    • JavaScript脚本文件 (.js)
    • 图片文件 (.jpg, .png, .gif, .svg 等)
    • 字体文件 (.woff, .woff2, .ttf 等)
    • 视频文件 (.mp4, .webm 等)
    • 音频文件 (.mp3, .wav 等)
    • 静态的文本文件 (.txt)
    • PDF文档 (.pdf)
    • 压缩包文件 (.zip, .rar 等)

动态资源

  • 定义: 指那些在用户请求时,其内容需要由服务器端程序实时生成的资源。生成的内容通常基于用户的请求参数、用户身份、数据库查询结果或其他实时数据。
  • 特点:
    • 内容动态生成: 每次请求返回的内容可能都不同,取决于请求时的上下文。
    • 需要服务器处理: 服务器需要执行程序逻辑(如运行PHP、Python、Node.js脚本,查询数据库,调用API等)来生成响应内容。
    • 难以缓存: 因为内容经常变化,通用的缓存策略效果有限,通常需要更复杂的缓存机制(如按用户ID缓存、缓存查询结果等)或只能由浏览器缓存部分内容。
  • 常见例子:
    • 由服务器端模板引擎(如Jinja2, Thymeleaf, EJS)渲染生成的HTML页面(内容随数据变化)。
    • 服务器端API接口返回的JSON或XML数据(例如用户个人信息、商品列表、搜索结果)。
    • 实时更新的数据(如股票行情、新闻头条、聊天消息)。
    • 需要用户登录才能查看的个性化页面或数据。
    • 表单提交后的处理结果页面。
    • 由服务器程序动态生成的图像(如验证码图片、图表)。

关键区别总结:

特性 静态资源 动态资源
内容 固定不变 实时生成,可能每次不同
存储形式 通常是物理文件 通常是程序逻辑 + 数据源
服务器处理 简单读取和发送 需要执行程序生成内容
访问速度 通常较快(尤其缓存后) 通常较慢(需要生成过程)
缓存 非常容易且高效 较难,需要更精细的策略
更新 替换文件即可 需要修改程序或数据源
预先生成 可以 通常不行(或意义不大)

简单来说:

  • 请求一个图片文件(.jpg) -> 静态资源。
  • 请求一个显示当前登录用户信息的页面 -> 动态资源(服务器需要知道谁在请求)。
  • 请求一个固定的公司介绍页面(纯HTML) -> 静态资源。
  • 请求一个商品搜索结果的API (/api/search?keyword=phone) -> 动态资源(服务器需要处理查询参数并查询数据库)。

二、HTTP与HTTP协议

1.http与https区别

HTTP(Hypertext Transfer Protocol)和HTTPS(Hypertext Transfer Protocol Secure)是互联网通信的基础协议,主要区别如下:


(1). 安全性

  • HTTP

    数据以明文传输,容易被窃听或篡改。

    \\text{传输内容} \\rightarrow \\text{明文}

  • HTTPS

    通过 TLS/SSL 加密 (如 RSA 或 AES 算法)保护数据:

    \\text{传输内容} \\rightarrow \\text{加密密文}

    确保数据保密性、完整性和身份认证。


(2). 默认端口

  • HTTP 使用端口 80
  • HTTPS 使用端口 443

(3). 证书机制

  • HTTPS 依赖 数字证书 (由 CA 机构签发),验证服务器身份:

    \\text{证书} \\equiv \\text{服务器身份凭证}

    浏览器通过证书确认网站真实性(地址栏显示锁标)。

(4). 协议层

  • HTTP 位于应用层,直接与 TCP 交互。
  • HTTPS 在 HTTP 和 TCP 之间增加 TLS/SSL 安全层

    \\text{HTTP} \\xrightarrow{\\text{加密}} \\text{TLS/SSL} \\xrightarrow{} \\text{TCP}


(5). 性能影响

  • HTTPS 因加密/解密操作需要额外计算资源,但现代硬件优化已大幅降低开销。
  • HTTP/2HTTP/3 通常仅支持 HTTPS,显著提升传输效率。

(6). SEO 与浏览器支持

  • 搜索引擎(如 Google)优先收录 HTTPS 网站。
  • 现代浏览器对 HTTP 页面标记 "不安全" 警告。

使用场景

  • HTTP:内网测试、静态信息展示等低敏感场景。
  • HTTPS :登录、支付、隐私数据传输等所有公开服务(现代网站强制要求)。

2.HTTPS握手流程

HTTPS握手流程本质上是基于TLS/SSL协议的安全通信建立过程,其核心步骤为:

  1. 客户端发起请求

    客户端向服务器发送ClientHello消息,包含:

    • 支持的TLS版本
    • 支持的加密套件列表
    • 客户端生成的随机数 R_c
  2. 服务器响应

    服务器返回ServerHello消息,包含:

    • 选定的TLS版本和加密套件
    • 服务器生成的随机数 R_s
    • 服务器数字证书(含公钥)
    • 可能请求客户端证书(双向认证场景)
  3. 证书验证

    客户端验证服务器证书:

    • 检查证书链可信度
    • 确保证书未过期
    • 验证域名匹配性
  4. 密钥交换

    客户端生成预主密钥 PMS,用服务器公钥加密后发送。双方根据 R_cR_sPMS 推导出相同的会话密钥: $$ K = \text{PRF}(PMS, R_c, R_s) $$ 其中PRF为伪随机函数

  5. 完成握手

    双方交换Finished消息,使用会话密钥加密验证消息完整性,确认握手成功。

3.HTTP状态码

HTTP 状态码是服务器在响应客户端请求时返回的三位数字代码,用于表示请求的处理状态。它们分为五个主要类别:

  1. 1xx:信息响应

    • 表示请求已被接收,服务器正在处理。
    • 例如:100 Continue (继续),101 Switching Protocols (切换协议)。
  2. 2xx:成功响应

    • 表示请求已被服务器成功接收、理解并接受。
    • 例如:200 OK (请求成功),201 Created (已创建),204 No Content (无内容)。
  3. 3xx:重定向响应

    • 表示需要客户端采取进一步操作才能完成请求。
    • 例如:301 Moved Permanently (永久移动),302 Found (临时移动),304 Not Modified (未修改)。
  4. 4xx:客户端错误

    • 表示请求包含语法错误或无法完成。
    • 例如:400 Bad Request (错误请求),401 Unauthorized (未授权),403 Forbidden (禁止),404 Not Found (未找到)。
  5. 5xx:服务器错误

    • 表示服务器在处理请求时失败。
    • 例如:500 Internal Server Error (服务器内部错误),502 Bad Gateway (错误网关),503 Service Unavailable (服务不可用)。

这些状态码有助于客户端(如浏览器)理解请求的结果并做出相应的处理。

三、nginx概念

1.nginx介绍

Nginx 是一个高性能的开源 Web 服务器反向代理服务器 。它以其 高并发处理能力低内存消耗稳定性 而闻名,在现代 Web 架构中扮演着至关重要的角色。

2.简述NginxApache的差异

特性 Apache Nginx
架构模型 主要采用 多进程/多线程模型 (如 prefork, worker)。每个连接通常需要一个进程或线程处理。 采用 事件驱动的异步非阻塞模型。一个工作进程可以高效处理大量并发连接。
资源消耗 高并发时,内存和 CPU 消耗相对较高(尤其是使用 prefork 模式)。 高并发下资源(内存、CPU)消耗更低,能处理更多并发连接。
静态内容 能处理,但效率通常不如 Nginx。 处理静态内容(如图片、HTML、CSS、JS)速度非常快,效率高。
动态内容 原生支持通过模块(如 mod_php)直接处理 PHP 等动态内容。 本身不直接处理动态语言(如 PHP),需将请求代理给后端处理器(如 PHP-FPM)。
配置 主要使用 .htaccess 文件进行分布式目录级配置,灵活但可能影响性能。 主要使用集中式配置文件(nginx.conf),不支持 .htaccess,性能更高。
功能模块 历史悠久,模块生态极其丰富,功能扩展性强。 核心功能精简高效,模块生态也很丰富,但部分模块需要第三方开发或集成。
安全 .htaccess 提供灵活的目录级安全控制。 配置集中管理,安全性管理方式不同。
适用场景 适合需要高度灵活配置、直接处理动态内容、使用 .htaccess 的场景。 适合高并发、静态内容服务、反向代理、负载均衡、作为前端服务器。

总结来说:

  • Apache :像一个全能型的管家,功能极其丰富和灵活(尤其通过 .htaccess),擅长直接处理各种动态内容,但面对极高并发时资源消耗较大。
  • Nginx:像一个高效率的快递员,架构先进,资源消耗低,处理静态内容和高并发能力非常强,常作为反向代理或负载均衡器,处理动态内容需要配合后端。

3.nginx进程结构

Nginx采用主从式进程模型(master-worker),主要由两种类型的进程组成:

  1. Master进程(主进程)

    • root权限启动,负责管理Worker进程
    • 功能:
      • 读取并验证配置文件
      • 监听端口(需权限)
      • 管理Worker进程(启动/停止/重载)
      • 平滑升级(无缝重启)
  2. Worker进程(工作进程)

    • 由Master进程派生,以普通用户权限运行
    • 功能:
      • 实际处理网络请求(HTTP/TCP)
      • 多进程并行处理(充分利用多核CPU)
      • 相互独立(单进程崩溃不影响整体服务)

\\begin{bmatrix} \\text{Master} \\ \\downarrow \\ \\text{Worker}_1 \\ \\text{Worker}_2 \\ \\vdots \\ \\text{Worker}_n \\end{bmatrix} \\quad n = \\text{CPU核心数}

关键特性

  1. 热重载

    修改配置后,Master向Worker发送SIGUSR1信号,Worker处理完当前请求后重启加载新配置。

  2. 进程通信

    Worker间通过共享内存(如ngx_shared_memory)交换数据,例如限流计数器。

  3. 高效事件模型

    每个Worker使用异步I/O(如Linux的epoll)处理数千并发连接,事件驱动模型为: $$ \text{事件数} \propto \frac{\text{连接数}}{\text{活跃度}} $$

4.编译安装nginx | yum install安装

①关闭防火墙,上传软件包至 /opt

bash 复制代码
systemctl stop firewalld
systemctl disable firewalld
 

将 Nginx 安装包(如 nginx-1.24.0.tar.gz)上传到 /opt 目录。

②安装依赖包

bash 复制代码
yum -y install gcc gcc-c++ make pcre pcre-devel zlib zlib-devel openssl openssl-devel
 

bash 复制代码
groupadd www
useradd -M -s /sbin/nologin -g www www
 
  • -M: 不创建家目录
  • -s /sbin/nologin: 禁止登录
  • -g www: 指定主组为 www

编译安装 Nginx

解压并进入源码目录

bash 复制代码
cd /opt
tar -zxvf nginx-*.tar.gz
cd nginx-*/
 

配置编译选项

bash 复制代码
./configure \
--prefix=/usr/local/nginx \
--user=www \
--group=www \
--with-http_ssl_module \
--with-http_stub_status_module \
--with-threads
 

编译并安装

bash 复制代码
make && make install
 

⑤管理 Nginx 服务

检查配置文件语法

bash 复制代码
/usr/local/nginx/sbin/nginx -t
 

启动服务

bash 复制代码
/usr/local/nginx/sbin/nginx
 

重启服务

bash 复制代码
/usr/local/nginx/sbin/nginx -s reload
 

停止服务

bash 复制代码
/usr/local/nginx/sbin/nginx -s stop
 

验证安装

(1)查看版本:

bash 复制代码
/usr/local/nginx/sbin/nginx -v
 

(2)浏览器访问http://服务器IP,出现Nginx欢迎页面即表示成功。


总结

Web服务的发展与优化是一个持续演进的过程,而Nginx凭借其出色的架构设计和技术特性,已成为现代网站部署中不可或缺的关键组件。通过对Nginx的学习和应用,我们深刻理解了其在高并发连接处理、静态资源高效分发、动态请求代理转发以及安全防护等方面的强大能力。合理配置和优化Nginx,能够显著提升网站的响应速度、系统承载能力和整体稳定性,有效应对日益增长的流量压力和安全挑战。掌握Nginx的核心功能与最佳实践,对于构建和维护高性能、高可用的Web服务环境具有极其重要的意义,是每一位网站运维和开发人员必备的技能之一。

相关推荐
七夜zippoe14 小时前
CANN Runtime任务描述序列化与持久化源码深度解码
大数据·运维·服务器·cann
Fcy64816 小时前
Linux下 进程(一)(冯诺依曼体系、操作系统、进程基本概念与基本操作)
linux·运维·服务器·进程
袁袁袁袁满16 小时前
Linux怎么查看最新下载的文件
linux·运维·服务器
代码游侠16 小时前
学习笔记——设备树基础
linux·运维·开发语言·单片机·算法
Harvey90316 小时前
通过 Helm 部署 Nginx 应用的完整标准化步骤
linux·运维·nginx·k8s
珠海西格电力科技17 小时前
微电网能量平衡理论的实现条件在不同场景下有哪些差异?
运维·服务器·网络·人工智能·云计算·智慧城市
释怀不想释怀18 小时前
Linux环境变量
linux·运维·服务器
zzzsde18 小时前
【Linux】进程(4):进程优先级&&调度队列
linux·运维·服务器
聆风吟º19 小时前
CANN开源项目实战指南:使用oam-tools构建自动化故障诊断与运维可观测性体系
运维·开源·自动化·cann
NPE~19 小时前
自动化工具Drissonpage 保姆级教程(含xpath语法)
运维·后端·爬虫·自动化·网络爬虫·xpath·浏览器自动化