Web基础、HTTP/HTTPS协议与Nginx详解
一、Web基本概念
1.1 什么是Web?
Web(万维网)是运行在互联网上的超文本信息系统,它依赖于HTTP/HTTPS协议实现浏览器与服务器之间的交互,具有以下特点:
- 分布式:资源分布在世界各地的服务器上
- 跨平台:只要有浏览器就能访问资源
- 无状态:每次HTTP请求都是独立的(除非使用Cookie/Session)
1.2 B/S架构模型
Web采用Browser/Server架构:
- Browser(浏览器):用户入口,发送请求、渲染页面
- Server(服务器):接收请求,返回资源或动态内容
graph LRA[用户浏览器] --> B[Web服务器]B --> C[应用服务器]C --> D[数据库]D --> C --> B --> A
1.3 Web请求与响应过程
- 用户在浏览器输入URL
- DNS解析域名为IP地址
- 建立TCP连接(3次握手)
- 发送HTTP请求(GET/POST)
- 服务器处理请求:
- Web服务器处理静态资源
- 动态请求转发到应用服务器
- 应用服务器查询数据库
- 返回HTTP响应
- 浏览器渲染页面
1.4 静态与动态资源
类型 | 特点 | 示例 |
---|---|---|
静态资源 | 直接返回,无需处理 | HTML/CSS/图片/JS文件 |
动态资源 | 需服务器端代码生成 | PHP/Python/Java/Ruby脚本 |
1.5 Web发展阶段
- Web 1.0:只读静态页面
- Web 2.0:用户可生成内容,AJAX技术普及
- Web 3.0:语义网、区块链、去中心化
二、HTTP与HTTPS协议
2.1 HTTP与HTTPS区别
特性 | HTTP | HTTPS |
---|---|---|
安全性 | 明文传输,不安全 | SSL/TLS加密,防止中间人攻击 |
端口 | 80 | 443 |
性能 | 更快 | 稍慢(因加密解密开销) |
证书 | 不需要 | 需要CA颁发的SSL证书 |
2.2 HTTPS握手流程
- Client Hello:客户端发送支持的加密算法列表
- Server Hello:服务器选择加密算法,返回SSL证书
- 证书验证:客户端验证证书有效性
- 密钥协商:双方生成临时对称密钥
- 加密通信:使用对称密钥加密后续数据
sequenceDiagramparticipant Clientparticipant ServerClient->>Server: Client Hello(支持算法)Server->>Client: Server Hello + 证书Client->>Client: 验证证书Client->>Server: 密钥协商Server->>Client: 确认加密Note right of Client: 开始加密通信
2.3 HTTP状态码详解
状态码 | 类别 | 常见状态码 | 说明 |
---|---|---|---|
1xx | 信息响应 | 100 Continue | 服务器已收到请求头 |
2xx | 成功 | 200 OK | 请求成功 |
201 Created | 资源创建成功 | ||
3xx | 重定向 | 301 Moved Permanently | 资源永久移动 |
302 Found | 资源临时移动 | ||
4xx | 客户端错误 | 400 Bad Request | 请求语法错误 |
401 Unauthorized | 需要身份验证 | ||
403 Forbidden | 禁止访问 | ||
404 Not Found | 资源不存在 | ||
5xx | 服务器错误 | 500 Internal Error | 服务器内部错误 |
502 Bad Gateway | 网关错误 | ||
504 Gateway Timeout | 网关超时 |
三、Nginx详解
3.1 Nginx简介
Nginx(发音为"engine x")是高性能的HTTP和反向代理服务器,特点:
- 高并发:单机支持3-5万并发连接
- 低资源:内存占用少(约Apache的1/5)
- 热部署:支持不停机更新配置
- 模块化:丰富的扩展模块
官网:nginx.org
3.2 Nginx vs Apache
特性 | Nginx | Apache |
---|---|---|
架构 | 事件驱动 | 多进程/多线程 |
资源消耗 | 低(约Apache的1/5) | 较高 |
静态文件 | 效率极高 | 一般 |
反向代理 | 优势明显 | 一般 |
动态内容 | 需通过FastCGI转发 | 原生支持 |
配置方式 | 简洁高效 | .htaccess分散配置 |
3.3 Nginx进程结构
graph TDA[Master Process] --> B[Worker Process 1]A --> C[Worker Process 2]A --> D[Worker Process N]B --> E[处理客户端请求]C --> F[处理客户端请求]D --> G[处理客户端请求]
-
Master进程:
- 读取并验证配置
- 管理Worker进程
- 平滑升级/重载配置
-
Worker进程:
- 实际处理网络请求
- 数量建议设置为CPU核心数
- 相互独立,避免竞争
四、Nginx安装与配置
4.1 安装Nginx
CentOS安装步骤:
# 安装EPEL仓库
sudo yum install epel-release# 安装Nginx
sudo yum install nginx# 启动Nginx
sudo systemctl start nginx# 设置开机自启
sudo systemctl enable nginx
4.2 Nginx配置文件结构
主配置文件:/etc/nginx/nginx.conf
# 全局配置段
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;# 事件配置段
events {worker_connections 1024;
}# HTTP配置段
http {include /etc/nginx/mime.types;default_type application/octet-stream;# 虚拟主机配置server {listen 80;server_name example.com;location / {root /usr/share/nginx/html;index index.html;}}
}
4.3 虚拟主机配置
基于端口的虚拟主机:
server {listen 8080;server_name localhost;root /var/www/port8080;index index.html;
}server {listen 8081;server_name localhost;root /var/www/port8081;index index.html;
}
基于域名的虚拟主机:
server {listen 80;server_name site1.example.com;root /var/www/site1;
}server {listen 80;server_name site2.example.com;root /var/www/site2;
}
五、Nginx实战
5.1 基于端口的虚拟主机配置
- 创建目录结构:
sudo mkdir -p /var/www/{port8080,port8081}
- 创建测试页面:
# 端口8080的页面
echo "<h1>Port 8080 Site</h1>" | sudo tee /var/www/port8080/index.html# 端口8081的页面
echo "<h1>Port 8081 Site</h1>" | sudo tee /var/www/port8081/index.html
- 配置Nginx:
http {server {listen 8080;root /var/www/port8080;index index.html;}server {listen 8081;root /var/www/port8081;index index.html;}
}
- 重启Nginx:
sudo systemctl restart nginx
- 访问测试:
curl http://localhost:8080
curl http://localhost:8081
5.2 日志分析实战
分析Nginx访问日志(/var/log/nginx/access.log
):
统计访问次数最多的IP:
awk '{print $1}' access.log | sort | uniq -c | sort -nr | head -10
统计HTTP状态码分布:
awk '{print $9}' access.log | sort | uniq -c | sort -nr
统计每小时请求量:
awk '{print $4}' access.log | cut -d: -f1,2 | uniq -c
统计恶意登录尝试(失败密码):
awk '/Failed password/{ip[$11]++}END{for(i in ip)print ip[i],i}' /var/log/secure
六、总结
通过本文我们深入探讨了:
- Web的基本架构和工作原理
- HTTP/HTTPS协议的核心差异与工作流程
- Nginx的高性能特性及与Apache的对比
- Nginx的安装配置与实战应用
Nginx凭借其高并发处理能力、低资源消耗和灵活的配置,已成为现代Web架构的核心组件。无论是作为静态资源服务器、反向代理还是负载均衡器,Nginx都能提供卓越的性能和稳定性。
掌握Nginx的配置优化和日志分析技巧,对提升网站性能和排查问题至关重要。建议通过实际项目不断练习,深入理解其工作机制。