目录

Web基础HTTPHTTPS协议与Nginx详解

Web基础、HTTP/HTTPS协议与Nginx详解

一、Web基本概念

1.1 什么是Web?

Web(万维网)是运行在互联网上的超文本信息系统,它依赖于HTTP/HTTPS协议实现浏览器与服务器之间的交互,具有以下特点:

  • ​分布式​​:资源分布在世界各地的服务器上
  • ​跨平台​​:只要有浏览器就能访问资源
  • ​无状态​​:每次HTTP请求都是独立的(除非使用Cookie/Session)

1.2 B/S架构模型

Web采用​​Browser/Server架构​​:

  • ​Browser(浏览器)​​:用户入口,发送请求、渲染页面
  • ​Server(服务器)​​:接收请求,返回资源或动态内容
graph LR
    A[用户浏览器] --> 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. ​加密通信​​:使用对称密钥加密后续数据
sequenceDiagram
    participant Client
    participant Server
    Client->>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)
  • ​热部署​​:支持不停机更新配置
  • ​模块化​​:丰富的扩展模块

官网:

3.2 Nginx vs Apache

特性NginxApache
​架构​事件驱动多进程/多线程
​资源消耗​低(约Apache的1/5)较高
​静态文件​效率极高一般
​反向代理​优势明显一般
​动态内容​需通过FastCGI转发原生支持
​配置方式​简洁高效.htaccess分散配置

3.3 Nginx进程结构

graph TD
    A[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的配置优化和日志分析技巧,对提升网站性能和排查问题至关重要。建议通过实际项目不断练习,深入理解其工作机制。