Web与Nginx编译安装
文章目录
前言
Web是当今信息世界的基石,其背后的B/S架构与HTTP协议构成了我们日常网络访问的核心。为了承载高效、稳定的Web服务,Nginx作为一款高性能的Web服务器,凭借其高并发处理能力与丰富的功能,成为了构建现代网站架构的首选。本章将引导您从理解Web基础开始,逐步掌握Nginx的部署与核心配置,为搭建可靠的网络服务打下坚实基础。
一、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.3 Web 请求与响应过程
一次完整的 Web 访问过程包括以下步骤:
- 输入URL:用户在浏览器输入网址。
- DNS 解析:浏览器将域名解析为 IP 地址。
- 建立连接:浏览器与 Web 服务器建立 TCP 连接(3 次握手)。
- 发送请求:浏览器发起 HTTP 请求(如 GET/POST)。
- 服务器处理:
- Web 服务器处理静态资源请求。
- 动态请求则转发到应用服务器(如 Tomcat, Django)。
- 应用服务器可能再查询数据库。
- 返回响应:Web 服务器将结果打包成 HTTP 响应报文返回浏览器。
- 渲染页面:浏览器解析 HTML、加载 CSS/JS、渲染最终页面。
1.4 静态资源与动态资源
- 静态资源:
- 内容:不需要服务器额外处理,直接返回的文件,如 HTML、CSS、图片、视频、JS 文件。
- 优点:速度快,服务器压力小。
- 动态资源:
- 内容:需要服务器端代码计算生成,再返回客户端,如 PHP 脚本、Python Flask/Django、Java Servlet。
- 优点:能生成个性化内容,支持交互。
1.5 Web 的发展阶段
- Web 1.0(只读):以静态页面为主,用户只能浏览。
- Web 2.0(交互式):用户可生成内容,AJAX 等技术普及。
- Web 3.0(智能化):语义网、区块链、去中心化概念兴起。
1.6 实验:搭建最小 Web 服务
- 目标:体验一次最简单的 Web 请求与响应过程。
- 步骤:创建一个静态页面(如
index.html),并通过 Web 服务器(如 Nginx)提供服务。
二、HTTP 与 HTTPS 协议
2.1 HTTP 与 HTTPS 区别
- HTTP:明文传输,不安全。
- HTTPS:在 HTTP 上加入 SSL/TLS 加密,可防止中间人攻击。
2.2 HTTPS 握手流程
TLS 握手过程(建立安全通道):
- 客户端 Hello:浏览器发起请求,告知服务器自己支持的加密算法。
- 服务端 Hello + 证书:网站返回 SSL 证书(证明身份),并选择一种加密算法。
- 客户端验证证书:浏览器检查证书是否可信(CA 颁发、未过期、域名匹配)。
- 协商密钥:双方生成一个临时密钥,用于后续的对称加密通信。
- 加密通信开始:后续所有 HTTP 数据都通过加密通道传输。
2.3 HTTP 状态码
HTTP 状态码是三位数字,按首位分为五类:
| 类型 | 范围 | 含义 | 说明 |
|---|---|---|---|
| 1xx | 100-199 | 信息性状态码 | “我收到了请求,还在处理中” |
| 2xx | 200-299 | 成功 | “请求成功,服务器给你东西了” |
| 3xx | 300-399 | 重定向 | “你要的东西搬家了,去新地址找” |
| 4xx | 400-499 | 客户端错误 | “你请求有问题(URL错、权限不够)” |
| 5xx | 500-599 | 服务器错误 | “服务器出问题,暂时拿不到东西” |
常用状态码详解:
- 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:网关超时。
三、Nginx 概念
3.1 Nginx 介绍
- 定义:Nginx (“engine x”) 是一个高性能的 HTTP 和反向代理服务器,也可作为邮件代理服务器。
- 特点:
- 轻量级,占用内存少。
- 支持高并发(单台物理服务器可支持 3-5 万并发连接)。
- 稳定性高,资源消耗低。
- 主要功能:
- 静态资源服务:直接提供网页、图片、视频等文件。
- 反向代理:将客户端请求转发给后端真正的应用服务器。
- 负载均衡:将流量智能分配到多台后端服务器。
3.2 Nginx 与 Apache 的差异
| 特性 | Nginx | Apache |
|---|---|---|
| 架构 | 基于事件的异步架构 | 基于进程/线程的同步架构 |
| 资源消耗 | 内存消耗低,连接处理能力强 | 内存消耗和连接处理能力相对一般 |
| 性能 | 性能和可伸缩性不依赖于硬件,静态文件处理高效 | 性能依赖于CPU和内存等硬件,静态处理相对一般 |
| 热部署 | 支持热部署 | 不支持热部署 |
| 反向代理 | 具有明显优势 | 相对一般 |
3.3 Nginx 进程结构
- 主进程 (Master Process):管理 worker 进程,读取配置,绑定端口。
- 工作进程 (Worker Process):由主进程产生,是实际处理网络请求的单元。
- 所有 worker 进程是平等的。
- 数量一般设置为与 CPU 核心数相同,以充分利用 CPU 资源,同时避免过多进程竞争导致性能下降。
- 功能:接受并处理客户请求、I/O调用、与后端服务器通信、缓存数据、返回响应结果等。
四、 nginx编译安装流程
## 1. 环境准备
systemctl stop firewalld && systemctl disable firewalld
setenforce 0
## 2. 安装依赖
yum install -y gcc gcc-c++ make pcre pcre-devel zlib zlib-devel openssl openssl-devel
## 3. 创建用户
useradd -M -s /sbin/nologin nginx
## 4. 编译安装
cd /opt
tar zxvf nginx-1.20.2.tar.gz
cd nginx-1.20.2/
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module
make -j 2 && make install
## 5. 创建软连接
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
## 6. 验证安装
nginx -t
nginx -v
# 总结
本章系统性地阐述了从Web基础概念到Nginx实战应用的全过程。我们不仅了解了Web的工作模型与HTTP协议,更通过亲手安装和配置Nginx,掌握了虚拟主机、反向代理、负载均衡等关键技能,从而具备了部署和管理一个高性能、高可用网站服务的核心能力。
1032

被折叠的 条评论
为什么被折叠?



