当前位置: 首页 > web >正文

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请求与响应过程

  1. 用户在浏览器输入URL
  2. DNS解析域名为IP地址
  3. 建立TCP连接(3次握手)
  4. 发送HTTP请求(GET/POST)
  5. 服务器处理请求:
    • Web服务器处理静态资源
    • 动态请求转发到应用服务器
    • 应用服务器查询数据库
  6. 返回HTTP响应
  7. 浏览器渲染页面

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区别

特性HTTPHTTPS
​安全性​明文传输,不安全SSL/TLS加密,防止中间人攻击
​端口​80443
​性能​更快稍慢(因加密解密开销)
​证书​不需要需要CA颁发的SSL证书

2.2 HTTPS握手流程

  1. ​Client Hello​​:客户端发送支持的加密算法列表
  2. ​Server Hello​​:服务器选择加密算法,返回SSL证书
  3. ​证书验证​​:客户端验证证书有效性
  4. ​密钥协商​​:双方生成临时对称密钥
  5. ​加密通信​​:使用对称密钥加密后续数据
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

特性NginxApache
​架构​事件驱动多进程/多线程
​资源消耗​低(约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 基于端口的虚拟主机配置

  1. 创建目录结构:
sudo mkdir -p /var/www/{port8080,port8081}
  1. 创建测试页面:
# 端口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
  1. 配置Nginx:
http {server {listen 8080;root /var/www/port8080;index index.html;}server {listen 8081;root /var/www/port8081;index index.html;}
}
  1. 重启Nginx:
sudo systemctl restart nginx
  1. 访问测试:
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

六、总结

通过本文我们深入探讨了:

  1. Web的基本架构和工作原理
  2. HTTP/HTTPS协议的核心差异与工作流程
  3. Nginx的高性能特性及与Apache的对比
  4. Nginx的安装配置与实战应用

Nginx凭借其​​高并发处理能力​​、​​低资源消耗​​和​​灵活的配置​​,已成为现代Web架构的核心组件。无论是作为静态资源服务器、反向代理还是负载均衡器,Nginx都能提供卓越的性能和稳定性。

掌握Nginx的配置优化和日志分析技巧,对提升网站性能和排查问题至关重要。建议通过实际项目不断练习,深入理解其工作机制。

http://www.xdnf.cn/news/20223.html

相关文章:

  • 商城系统——项目测试
  • JUC的安全并发包机制
  • Python 值传递 (Pass by Value) 和引用传递 (Pass by Reference)
  • go面试题-什么是用户态和内核态
  • 数组本身的深入解析
  • 研发文档撰写质量参差不齐该怎么办
  • 突破大语言模型推理瓶颈:深度解析依赖关系与优化策略
  • YOLOv8主干网络替换为UniConvNet的详细指南
  • Unity中,软遮罩SoftMaskForUGUI的使用
  • 25高教社杯数模国赛【E题保姆级思路+问题分析】
  • 【Day 20】148.排序链表
  • Electron 执行python脚本
  • IPV6、广播地址
  • 单片机实现分页显示环形更新的历史数据
  • 算法随笔(一)
  • S32K328上芯片内部RTC的使用和唤醒配置
  • 深度学习篇---MNIST:手写数字数据集
  • 基础排序--冒泡--选择--插入
  • 【算法--链表】25.K个一组翻转链表--通俗讲解
  • Linux初始化配置——RHEL7.9、9.3环境部署
  • 【C语言】 第三课 函数与栈帧机制详解
  • RTP打包与解包全解析:从RFC规范到跨平台轻量级RTSP服务和低延迟RTSP播放器实现
  • Deeplizard深度学习课程(七)—— 神经网络实验
  • 飞算JavaAI全面解析:重塑Java开发流程的智能引擎
  • 商城源码后端性能优化:JVM 参数调优与内存泄漏排查实战
  • List<?>和List<Object>区别
  • 第二阶段WinForm-12:UI控件库
  • 力扣516 代码随想录Day16 第一题
  • 【涂鸦T5】6. lvgl显示光感数值
  • 鸿蒙:AppStorageV2状态管理和数据共享