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服务环境具有极其重要的意义,是每一位网站运维和开发人员必备的技能之一。

相关推荐
奔跑吧邓邓子2 小时前
CentOS 7性能飞升秘籍:实战系统优化与调优
linux·运维·centos·实战·系统优化·性能调优
Broken Arrows2 小时前
Docker原理之一的Namespace详解
运维·docker·容器
翼龙云_cloud2 小时前
亚马逊云渠道商:如何利用AWS工具进行日常安全运维?
运维·安全·云计算·aws
qinyia2 小时前
WisdomSSH如何高效检查服务器状态并生成运维报告
linux·运维·服务器·数据库·人工智能·后端·ssh
w***48829 小时前
Linux安装redis
linux·运维·redis
m0_4887776510 小时前
Nginx虚拟主机
nginx·nginx虚拟主机
wanhengidc10 小时前
深度了解云手机是什么
运维·服务器·科技·智能手机·云计算
python百炼成钢11 小时前
28.嵌入式 Linux LED 驱动开发实验
linux·运维·驱动开发
BullSmall14 小时前
Test Matrix:测试矩阵(IT 领域定义 + 设计实践 + 华为场景应用)
运维·服务器