Web与Nginx编译安装

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 访问过程包括以下步骤:

  1. 输入URL:用户在浏览器输入网址。
  2. DNS 解析:浏览器将域名解析为 IP 地址。
  3. 建立连接:浏览器与 Web 服务器建立 TCP 连接(3 次握手)。
  4. 发送请求:浏览器发起 HTTP 请求(如 GET/POST)。
  5. 服务器处理
    • Web 服务器处理静态资源请求。
    • 动态请求则转发到应用服务器(如 Tomcat, Django)。
    • 应用服务器可能再查询数据库。
  6. 返回响应:Web 服务器将结果打包成 HTTP 响应报文返回浏览器。
  7. 渲染页面:浏览器解析 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 握手过程(建立安全通道):

  1. 客户端 Hello:浏览器发起请求,告知服务器自己支持的加密算法。
  2. 服务端 Hello + 证书:网站返回 SSL 证书(证明身份),并选择一种加密算法。
  3. 客户端验证证书:浏览器检查证书是否可信(CA 颁发、未过期、域名匹配)。
  4. 协商密钥:双方生成一个临时密钥,用于后续的对称加密通信。
  5. 加密通信开始:后续所有 HTTP 数据都通过加密通道传输。

2.3 HTTP 状态码

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

类型范围含义说明
1xx100-199信息性状态码“我收到了请求,还在处理中”
2xx200-299成功“请求成功,服务器给你东西了”
3xx300-399重定向“你要的东西搬家了,去新地址找”
4xx400-499客户端错误“你请求有问题(URL错、权限不够)”
5xx500-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 的差异

特性NginxApache
架构基于事件的异步架构基于进程/线程的同步架构
资源消耗内存消耗低,连接处理能力强内存消耗和连接处理能力相对一般
性能性能和可伸缩性不依赖于硬件,静态文件处理高效性能依赖于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,掌握了虚拟主机、反向代理、负载均衡等关键技能,从而具备了部署和管理一个高性能、高可用网站服务的核心能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值