云计算大数据——Nginx入门篇( Web 核心概念、HTTP/HTTPS协议 与 Nginx 安装)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • [一、Web 概念](#一、Web 概念)
    • [1.1 Web 的基本概念](#1.1 Web 的基本概念)
    • [1.2 B/S 架构模型](#1.2 B/S 架构模型)
    • [1.3 Web 请求与响应过程(重点)](#1.3 Web 请求与响应过程(重点))
    • [1.4 静态资源与动态资源](#1.4 静态资源与动态资源)
    • [1.5 Web 的发展阶段](#1.5 Web 的发展阶段)
    • [1.6 小结](#1.6 小结)
  • [二、HTTP 与 HTTPS 协议](#二、HTTP 与 HTTPS 协议)
    • [2.1 HTTP与HTTPS区别](#2.1 HTTP与HTTPS区别)
    • [2.2 HTTPS 握手流程](#2.2 HTTPS 握手流程)
    • [2.3 HTTP状态码(重点)](#2.3 HTTP状态码(重点))
      • [2.3.1 HTTP 状态码概览](#2.3.1 HTTP 状态码概览)
      • [2.3.2 常用状态码详解](#2.3.2 常用状态码详解)
        • [2.3.2.1 2xx 成功](#2.3.2.1 2xx 成功)
        • [2.3.2.2 3xx 重定向](#2.3.2.2 3xx 重定向)
        • [2.3.2.3 4xx 客户端错误(重点)](#2.3.2.3 4xx 客户端错误(重点))
        • [2.3.2.4 5xx 服务器错误(重点)](#2.3.2.4 5xx 服务器错误(重点))
      • [2.3.3 生活中的 HTTP 状态码类比](#2.3.3 生活中的 HTTP 状态码类比)
  • [三、Nginx 概念](#三、Nginx 概念)
    • [3.1 Nginx 介绍](#3.1 Nginx 介绍)
  • 四、Nginx安装
  • 总结

前言

我们来系统地梳理一下 Nginx 中间件、Web 核心概念、HTTP/HTTPS 协议,并结合 Nginx 的安装,给出一个全面的前言和总结。

一、Web 概念

1.1 Web 的基本概念

Web(World Wide Web,万维网)是运行在互联网之上的一个超文本信息系统,它依赖于 HTTP/HTTPS 协议 实现浏览器与服务器之间的交互。

1.1.1特点

分布式:资源分布在世界各地的服务器上。

跨平台:只要有浏览器,就能访问资源。

无状态:每次 HTTP 请求都是独立的,服务器不会记住客户端状态(除非使用 Cookie/Session)。

1.2 B/S 架构模型

Web 采用 B/S 架构(Browser/Server):

Browser(浏览器):用户的入口,发送请求、渲染页面。

Server(服务器):接收请求,返回所需资源或动态内容

1.3 Web 请求与响应过程(重点)

一次完整的 Web 访问过程包括以下步骤:

1.输入 URL:用户在浏览器输入 http://www.example.com

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、Ruby

优点:个性化内容,支持交互

1.5 Web 的发展阶段

Web 1.0(只读):静态页面为主,用户只能浏览。

Web 2.0(交互式):用户可生成内容,AJAX(前端) 技术普及。

Web 3.0(智能化):语义网、区块链、去中心化概念兴起

1.6 小结

Web 是基于 B/S 架构 的信息交互方式。

核心是 请求-响应模型,通过 HTTP/HTTPS 协议传输数据。

Web 可提供 静态资源 和 动态资源

二、HTTP 与 HTTPS 协议

2.1 HTTP与HTTPS区别

HTTP:明文传输,不安全。

HTTPS:在 HTTP 上加入 SSL/TLS 加密,防止中间人攻击。

2.2 HTTPS 握手流程

TLS 握手过程:客户端发起请求 → 服务端返回证书 → 双方协商加密算法 → 建立安全通道。

客户端 Hello → 服务端 Hello + 证书 → 客户端验证 → 加密通信

TLS 握手过程(建立安全通道)

流程:

客户端 Hello

浏览器发起请求,告诉服务器自己支持哪些加密算法。

服务端 Hello + 证书

网站返回 SSL 证书(证明身份),选择一种加密算法。

客户端验证证书

浏览器检查证书是否可信(CA 颁发、没过期、域名匹配)。

协商密钥

双方生成一个临时密钥,用于对称加密后续通信。

加密通信开始

后续 HTTP 数据都通过加密通道传输。

2.3 HTTP状态码(重点)

2.3.1 HTTP 状态码概览

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

类型 范围 含义 大白话理解

1xx 100--199 信息性状态码 "我收到了请求,还在处理中"

2xx 200--299 成功 "请求成功,服务器给你东西了"

3xx 300--399 重定向 "你要的东西搬家了,去新地址找"

4xx 400--499 客户端错误 "你请求有问题(URL错、权限不够)"

5xx 500--599 服务器错误 "服务器出问题,暂时拿不到东西"

2.3.2 常用状态码详解

2.3.2.1 2xx 成功

状态码 含义 类比

200 OK 请求成功 "东西拿到了"

201 Created 创建成功 "你提交的表单/资源已创建"

204 No Content 成功,但没有内容 "操作成功,但没有额外东西返回"

2.3.2.2 3xx 重定向

状态码 含义 类比

301 Moved Permanently 永久搬家 "这个页面永久换地址了"

302 Found 临时搬家 "暂时换地址,下一次还用旧地址"

304 Not Modified 内容未改 "东西没变,你可以用缓存"

2.3.2.3 4xx 客户端错误(重点)

状态码 含义 类比

400 Bad Request 请求格式错 "你写的请求我看不懂"

401 Unauthorized 未认证 "先登录,再访问"

403 Forbidden 禁止访问 "你没权限"

404 Not Found 找不到页面 "东西搬走或根本没这东西"

2.3.2.4 5xx 服务器错误(重点)

状态码 含义 类比

500 Internal Server Error 服务器内部出错 "服务器崩了"

502 Bad Gateway 网关错误 "我去找别的服务器,结果那边挂了"

503 Service Unavailable 服务不可用 "服务器忙不过来了,稍后再试"

504 Gateway Timeout 网关超时 "找别的服务器太慢,超时了"

2.3.3 生活中的 HTTP 状态码类比

场景 状态码 对应情况

打开网页正常 200 成功拿到网页

点链接页面搬家 301/302 浏览器自动跳到新地址

输入错网址 404 "没找到这个页面"

登录需要权限 401 "先登录才能看"

网站挂了 500 "服务器出问题了"

HTTP 状态码就是服务器对你请求的"回话信息",告诉你请求成功没、东西搬没搬、你有没有权限、或者服务器出问题了。

三、Nginx 概念

3.1 Nginx 介绍

好的,我来为您介绍 Nginx。

Nginx(发音为 "engine x")是一款高性能Web 服务器 软件,同时也常被用作 反向代理服务器负载均衡器HTTP 缓存。它由俄罗斯程序员 Igor Sysoev 开发,并于 2004 年首次公开发布。

Nginx 的核心设计目标是解决 C10K 问题 (即如何在单台服务器上同时处理成千上万个并发连接)。其采用 事件驱动 (Event-Driven)和 异步非阻塞(Asynchronous Non-blocking)的 I/O 处理模型,使其在处理高并发请求时表现出色,内存占用相对较低。

Nginx 的主要特点

  1. 高性能:
    • 能够高效处理大量并发连接(高并发)。
    • 静态内容(如图片、HTML、CSS、JS 文件)的传输速度快。
  2. 反向代理:
    • 接收客户端请求,并将其转发给后端的应用服务器(如 Tomcat, uWSGI, Gunicorn 等)。
    • 隐藏后端服务器的真实地址,提供安全性。
    • 可以轻松配置负载均衡。
  3. 负载均衡:
    • 将客户端请求分发到多个后端服务器,避免单点故障,提高应用的可扩展性和可靠性。
    • 支持多种负载均衡策略(如轮询、权重、IP哈希、最少连接数等)。
  4. HTTP 缓存:
    • 可以缓存后端应用服务器返回的动态内容或静态内容,减少对后端服务器的压力,加速内容访问速度。
  5. 支持 SSL/TLS:
    • 提供 HTTPS 服务,保障通信安全。
  6. 热部署:
    • 可以在不停止服务的情况下更新配置文件和应用程序。
  7. 配置灵活:
    • 配置文件(通常位于 /etc/nginx/nginx.conf)结构清晰,语法相对简洁。

Nginx 的典型应用场景

  • 静态内容服务: 托管网站静态文件。
  • 动态内容代理: 作为 Python、PHP、Java 等应用服务器的前端代理。
  • 负载均衡: 为多个应用服务器实例提供流量分发。
  • API 网关: 处理 API 请求的路由、认证、限流等。
  • 内容分发网络 (CDN): 缓存节点的重要组成部分。
  • 安全防护: 提供基本的访问控制、限速等功能。

四、Nginx安装

4.1 关闭防火墙,将安装nginx所需软件包传到/opt目录下

systemctl stop firewalld

systemctl disable firewalld

setenforce 0

nginx-1.20.2.tar.gz

4.2.安装依赖包

#nginx的配置及运行需要pcre、zlib等软件包的支持,因此需要安装这些软件的开发包,以便提供相应的库和头文件。

yum install -y gcc gcc-c++ make pcre pcre-devel zlib zlib-devel openssl openssl-devel

3.创建运行用户、组

(Nginx 服务程序默认以 nobody 身份运行,建议为其创建专门的用户账号,以便更准确地控制其访问权限)

useradd -M -s /sbin/nologin nginx

4.编译安装Nginx

cd /opt

tar zxvf nginx-1.20.2.tar.gz -C /opt/

cd nginx-1.20.2/

./configure

--prefix=/usr/local/nginx \ #指定nginx的安装路径

--user=nginx \ #指定用户名

--group=nginx \ #指定组名

--with-http_stub_status_module

--with-http_ssl_module #启用 http_stub_status_module 模块以支持状态统计

总结

通过理解以上概念和安装方法,你可以快速上手 Nginx,并利用其强大功能构建高性能、高可用的 Web 服务。

相关推荐
阿珊和她的猫1 小时前
HTTP 状态码 404:深入解析与实践应对
网络·网络协议·http
喝养乐多长不高1 小时前
JAVA微服务脚手架项目详解(三)
java·大数据·微服务·文件·地图·oss
north_eagle2 小时前
MySQL 业务数据,报表方案
大数据·数据库
数据库学啊2 小时前
大数据场景下时序数据库选型指南:TDengine为什么凭借领先的技术和实践脱颖而出?
大数据·数据库·时序数据库·tdengine
shenghuiping20013 小时前
AWS S3 上的object 创建和删除的触发告警
云计算·aws·lambda·bucket·size·object 创建
Mr_sun.4 小时前
Day08——ElasticSearch-基础
大数据·elasticsearch·jenkins
Elastic 中国社区官方博客4 小时前
在 Elasticsearch 中实现带可观测性的 agentic 搜索以自动调优相关性
大数据·人工智能·elasticsearch·搜索引擎·ai·全文检索
Blossom.1185 小时前
RLHF的“炼狱“突围:从PPO到DPO的工业级对齐实战
大数据·人工智能·分布式·python·算法·机器学习·边缘计算
@小红花5 小时前
从零到精通 Hadoop 的系统学习文档
大数据·hadoop·学习