【Nginx 实战系列(一)—— Web 核心概念、HTTP/HTTPS协议 与 Nginx 安装】

文章目录

Web与Nginx网络服务

Web 的基本概念

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

特点:

分布式:资源分布在世界各地的服务器上。

跨平台:只要有浏览器,就能访问资源。

无状态:每次 HTTP 请求都是独立的,服务器不会记住客户端状态(除非使用 Cookie/Session)。

B/S架构模型

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

Browser(浏览器):用户的入口,发送请求、渲染页面。

Server(服务器):接收请求,返回所需资源或动态内容。

图:B/S架构示意图

Web请求与响应过程

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

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

图二Web请求响应过程

静态资源与动态资源

静态资源:

不需要服务器器额外处理,直接返回即可。

HTML、CSS、图片、视频、JS 文件

优点:速度快,压力小

动态资源:

需要服务器端代码计算生成,再返回客户端。

PHP 脚本、Python Flask/Django、Java Servlet、Ruby

优点:个性化内容,支持交互

静态与动态资源对比图

Web的发展阶段

Web 1.0(只读):以静态网页为主,用户仅能被动浏览内容

Web 2.0(交互式):支持用户生成内容,AJAX等前端技术广泛应用

Web 3.0(智能化):引入语义网、区块链技术,推动去中心化网络发展

搭建最小的Web服务

目标

体验一次最简单的 Web 请求与响应过程 Wireshark 并且抓包

三次握手与四次挥手

搭建步骤

创建一个静态页面

小结

Web 是基于 B/S 架构 的信息交互方式。

核心是 请求-响应模型,通过 HTTP/HTTPS 协议传输数据。

Web 可提供 静态资源 和 动态资源

二.HTTP与HTTPS协议

HTTP与HTTPS的区别

HTTP:明文传输,不安全。

HTTPS:在 HTTP 上加入 SSL/TLS 加密,防止中间人攻击

HTTPS握手流程

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

客户端 Hello → 服务端 Hello + 证书 → 客户端验证 → 加密通信

TLS握手过程(建立安全通道)

流程:

客户端 Hello

浏览器发起请求,告诉服务器自己支持哪些加密算法。

服务端Hello+证书

网站返回 SSL 证书(证明身份),选择一种加密算法。

客户端验证证书

浏览器检查证书是否可信(CA 颁发、没过期、域名匹配)。

协商密钥

方生成一个临时密钥,用于对称加密后续通信。

加密通信开始

后续 HTTP 数据都通过加密通道传输

HTTP状态码(重点)

HTTP状态码概览

HTTP 状态码都是 三位数字,按首位分为五类:

常用状态码详解

2xx成功

3xx重定向

4xx客户端错误(重点)

5xx服务器错误(重点)

生活中的HTTP状态码类比

HTTP 状态码就是服务器对你请求的"回话信息",告诉你请求成功没、东西搬没搬、你有没有权限、或者服务器出问题了。

Nginx概念

Nginx 介绍

Nginx ("engine x") 是一个高性能的 HTTP 和反向代理服务器。Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日。其将源代码以类 BSD 许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011 年 6 月 1 日,Nginx 1.0.4 发布。企业中一般使用1.20版本

Nginx 是一款轻量级的 Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,单台物理服务器可支持30 000~50 000个并发请求。并在一个 BSD-like 协议下发行。由俄罗斯的程序设计师 Igor Sysoev 所开发,供俄国大型的入口网站及搜索引擎 Rambler(俄文:Рамблер)使用。其特点是占有内存少,并发能力强,事实上 Nginx 的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用 Nginx 网站用户有:百度 BWS、新浪、网易、腾讯等

Nginx 是一个 高性能 Web 服务器,它可以做很多事情:

静态资源服务:可以直接把网页、图片、视频这些文件发给用户。

反向代理:用户访问你的服务器,Nginx 可以帮你把请求转发到后端真正处理请求的服务器。

负载均衡:Nginx 能够智能地将访问流量分配到多台后端服务器,确保每台服务器都能均衡处理请求,避免过载情况发生。

高并发处理:用事件驱动的方式处理请求,能同时处理成千上万的用户请求,而不会占用太多资源

优势

轻量级,占用内存小

支持百万级并发访问

稳定可靠,开源且社区活跃

Nginx 官网

Nginx与Apache的差异

Nginx是一个基于事件的Web服务器,Apache是一个基于流程的服务器;

Nginx避免子进程的概念,Apache是基于子进程的;

Nginx在内存消耗和连接方面更好,Apache在内存消耗和连接方面一般;

Nginx的性能和可伸缩性不依赖于硬件,Apache依赖于CPU和内存等硬件;

Nginx支持热部署,Apache不支持热部署;

Nginx对于静态文件处理具有更高效率,Apache相对一般;

Nginx在反向代理场景具有明显优势,Apache相对一般。

Nginx进程结构

Web请求处理机制:

多进程方式:

服务器每接收到一个客户端请求就有服务器的主进程生成一个子进程响应客户端,直到用户关闭连接,这样的优势是处理速度快,子进程之间相互独立,但是如果访问过大会导致服务器资源耗尽而无法提供请求。

多线程方式:

与多进程方式类似,但是每收到一个客户端请求会有服务进程派生出一个线程来个客户方进行交互,一个线程的开销远远小于一个进程,因此多线程方式在很大程度减轻了web服务器对系统资源的要求,但是多线程也有自己的缺点,即当多个线程位于同一个进程内工作的时候,可以相互访问同样的内存地址空间,所以他们相互影响,一旦主进程挂掉则所有子线程都不能工作了,IIS服务器使用了多线程的方式,需要间隔一段时间就重启一次才能稳定

工作进程(worker process)的功能

Nginx安装

关闭防火墙,将安装nginx所需软件包传到/opt目录下


安装依赖包

nginx的配置及运行需要pcre、zlib等软件包的支持,因此需要安装这些软件的开发包,以便提供相应的库和头文件。

创建运行用户,组

Nginx 服务程序默认以 nobody 身份运行,建议为其创建专门的用户账号,以便更准确地控制其访问权限

编译安装Nginx


执行以下代码:




企业中常用的模块

检查、启动、重启、停止 nginx服务



nginx拓展


添加Nginx系统服务

vim /etc/init.d/nginx

#!/bin/bash

#chkconfig: 35 99 20 // 这是固定格式,2345表示运行级别,之后为开机执行顺序和关机执行顺序

#description:Nginx Service Control Script //这也是必须的

COM="/usr/local/nginx/sbin/nginx"

PID="/usr/local/nginx/logs/nginx.pid"

case "$1" in

start)

$COM

;;

stop)

kill -s QUIT (cat PID)

;;

restart)

$0 stop

$0 start

;;

reload)

kill -s HUP (cat PID)

;;

*)

echo "Usage: $0 {start|stop|restart|reload}"

exit 1

esac

exit 0



方法二






总结

本文作为《Nginx 实战系列》的开篇,围绕 Web 技术体系的 "基础层" 与 "工具层" 展开,完成了从理论到实践的初步衔接。在 Web 概念部分,我们明确了 Web 作为超文本信息系统的本质,梳理了 B/S 架构的组成、一次完整 Web 请求 - 响应的 7 个关键步骤,并区分了静态资源与动态资源的差异,同时回顾了 Web 从 1.0 到 3.0 的发展脉络,帮助读者建立对 Web 技术的整体认知。

在 HTTP/HTTPS 协议部分,重点对比了两者的安全性差异,拆解了 TLS 握手的 5 个核心流程,并系统梳理了 HTTP 状态码的分类与常用场景 ------ 尤其是 4xx 客户端错误与 5xx 服务器错误的典型状态码,为后续问题排查提供了关键依据。

在 Nginx 实战部分,我们从环境准备、依赖安装、用户创建,到编译配置、服务启停与系统服务注册,完整呈现了 Nginx 1.20 版本的安装流程,同时补充了 Nginx 的进程结构、核心功能(静态资源服务、反向代理等)及与 Apache 的差异,让读者不仅能完成安装操作,更能理解背后的设计逻辑。

后续系列文章将在此基础上,进一步深入 Nginx 的核心配置(如反向代理、负载均衡)、性能优化、日志分析与故障排查等内容,持续完善 Web 技术与 Nginx 实战的知识体系,助力读者将理论转化为实际应用能力

相关推荐
天蓝色的鱼鱼2 小时前
mescroll老用户亲测z-paging:这些功能让我果断切换!
前端·uni-app
JarvanMo2 小时前
适用于 iOS 开发者的 Flutter 3.38:Xcode 与 Swift 集成新技巧
前端
北极糊的狐2 小时前
Vue 中 vue-awesome-swiper的使用笔记(适配 Vue2/Vue3)
前端·javascript·vue.js
anyup2 小时前
🔥100+ 天,已全面支持鸿蒙!uView Pro 近期更新盘点及未来计划
前端·uni-app·harmonyos
2***57422 小时前
前端数据可视化应用
前端·信息可视化
DevUI团队2 小时前
Angular开发者必看:深度解析单元测试核心技巧与最佳实践
前端·javascript·angular.js
Mintopia2 小时前
🌐 动态网络环境下的 WebAIGC 断点续传与容错技术
前端·人工智能·aigc
答案answer3 小时前
一些经典的3D编辑器开源项目
前端·开源·three.js
6***B483 小时前
Nginx搭建负载均衡
运维·nginx·负载均衡