目录
[一、Web 基础](#一、Web 基础)
[1. 域名和DNS](#1. 域名和DNS)
[(3)Host 文件](#(3)Host 文件)
[2. 网页与 HTML](#2. 网页与 HTML)
[(0)HTML 概述](#(0)HTML 概述)
[(1)HTML 基础标签](#(1)HTML 基础标签)
[3. 静态网页与动态](#3. 静态网页与动态)
[二、HTTP 协议](#二、HTTP 协议)
[1. HTTP 协议概述](#1. HTTP 协议概述)
[2. HTTP 方法](#2. HTTP 方法)
[3. HTTP 状态码](#3. HTTP 状态码)
[4. HTTP 请求流程分析](#4. HTTP 请求流程分析)
[HTTP 请求流程](#HTTP 请求流程)
[三、Nginx 网站服务基础](#三、Nginx 网站服务基础)
[1. Nginx 简介](#1. Nginx 简介)
[2. 安装 Nginx 服务器](#2. 安装 Nginx 服务器)
一、Web 基础
1. 域名和DNS
(0)域名概念
-
域名(Domain Name) :是互联网上用于标识和定位资源(如服务器、网站)的字符串,本质是 IP 地址的 "人性化映射" (如
www.baidu.com
对应具体的 IP 地址)。 -
核心作用 :替代复杂的 IP 地址(如
192.168.1.100
),方便用户记忆和访问。 -
与 DNS 的关系 :域名需要通过 DNS(Domain Name System,域名系统) 解析为 IP 地址,才能被计算机识别和访问。
(1)域名的结构
-
层级结构 :
三级域名.二级域名.顶级域名
(例:
www.baidu.com
→www
是三级,baidu
是二级,com
是顶级) -
顶级域名分类:
-
通用顶级域(gTLD):
.com
.net
.org
-
国家顶级域(ccTLD):
.cn
.us
.jp
-
(2)域名结构图
根域名(.)
├─ 顶级域名服务器(如 .com、.cn 服务器)
│ ├─ 二级域名服务器(如 baidu.com 服务器)
│ │ ├─ 子域名记录(如 www.baidu.com 的 IP 映射)
│ └─ 其他二级域名(如 google.com)
└─ 国家/地区顶级域名服务器(如 .cn 服务器)
DNS 解析流程:
- 客户端向本地 DNS 服务器发送域名解析请求(如
www.baidu.com
)。 - 本地 DNS 服务器先查询缓存,若没有则向 根 DNS 服务器 发起请求。
- 根 DNS 服务器返回顶级域名(如
.com
)服务器的地址。 - 本地 DNS 服务器向顶级域名服务器查询,获取二级域名(如
baidu.com
)服务器的地址。 - 最终向权威 DNS 服务器(
baidu.com
的服务器)查询,获取www.baidu.com
对应的 IP 地址,并返回给客户端。
(3)Host 文件
-
作用 :本地域名解析,优先级高于DNS,用于手动绑定域名与 IP 地址
文件路径:-
Windows:
C:\Windows\System32\drivers\etc\hosts
-
Linux/Mac:
/etc/hosts
-
-
示例 :
127.0.0.1 localhost
(将localhost
指向本机)
(4)域名注册
-
流程:选择域名 → 查询是否可用 → 通过注册商付费购买 → 绑定DNS解析
-
注意事项:
-
域名所有权需定期续费,过期可能被他人注册。
-
隐私保护服务可隐藏注册人信息。
-
2. 网页与 HTML
(0)HTML 概述
- 定义 :HTML 是 HyperText Markup Language(超文本标记语言) 的缩写,是构建网页的基础技术之一。
- 核心作用 :通过 "标签" 描述网页的 结构和内容(如标题、段落、图片、链接等),不负责样式(由 CSS 控制)和交互(由 JavaScript 控制)。
- 超文本(HyperText):指网页内容不仅包含文本,还可以包含图片、链接、音频、视频等多媒体元素,且元素之间通过超链接相互关联。
(1)HTML 基础标签
分类 | 常用标签 | 作用 |
---|---|---|
结构 | <html> 、<head> 、<body> |
文档根、元信息、可见内容容器 |
标题 / 段落 | <h1>~<h6> 、<p> |
标题(层级递减)、段落 |
链接 / 图片 | <a href="url"> 、<img src="路径"> |
超链接、插入图片(alt 描述必填) |
列表 | <ul> (无序列表)、<ol> (有序)、<li> |
列表容器、列表项 |
语义化 | <header> 、<nav> 、<footer> |
页眉、导航栏、页脚(替代 <div> 布局) |
表单 | <form> 、<input type="text/password"> |
用户输入表单(文本 / 密码等类型) |
(2)网站和主页
- 网页 :浏览器显示的文档,静态(
.html
)或动态(.php
/ 异步加载数据)。 - 网站 :多个相关网页的集合,通过域名访问(如
www.example.com
)。 - 主页 :网站入口页面,默认文件名
index.html
,输入域名自动访问(如www.com
指向www.com/index.html
)。
3. 静态网页与动态
(1)静态网页
-
定义:内容固定的网页,直接由服务器返回预先生成的 HTML 文件。
-
特点:
-
内容不随用户请求变化(如企业官网、个人博客)。
-
加载速度快,安全性高(无数据库交互)。
-
技术栈:HTML、CSS、JavaScript(前端)
-
(2)动态网页
-
定义:内容根据用户请求实时生成的网页(如社交网络、电商平台)。
-
特点:
-
内容动态变化(基于用户登录状态、数据库查询等)。
-
支持交互功能(如评论、购物车)。
-
技术栈:后端语言(Python、PHP) + 数据库(MySQL) + 前端框架(React)。
-
二、HTTP 协议
1. HTTP 协议概述
- 定义:客户端与服务器通信的应用层协议,基于 TCP(默认端口 80,HTTPS 443),无状态(需 Cookie/Session 维持状态)。
- 核心特性:请求 - 响应模型,支持 HTML/JSON 等数据格式。
- 版本 :
- 1 :长连接(
keep-alive
)、管道化请求。 - 2:二进制分帧、多路复用、头部压缩。
- 3:基于 UDP 的 QUIC,低延迟、抗队头阻塞。
- 1 :长连接(
2. HTTP 方法
方法 | 作用 | 幂等性 | 安全性 |
---|---|---|---|
GET | 获取资源(无副作用) | 幂等 | 安全 |
POST | 提交数据(如表单提交、创建资源) | 不幂等 | 不安全 |
PUT | 更新或替换整个资源 | 幂等 | 不安全 |
DELETE | 删除资源 | 幂等 | 不安全 |
PATCH | 更新资源的部分内容 | 不幂等 | 不安全 |
HEAD | 获取响应头(无响应体) | 幂等 | 安全 |
OPTIONS | 查询服务器支持的 HTTP 方法 | 幂等 | 安全 |
幂等性 :多次执行同一操作结果相同(如 GET、PUT、DELETE)。
安全性:不修改服务器资源(如 GET、HEAD)。
GET 和 POST 比较:

3. HTTP 状态码
- 2xx 成功 :
200 OK
(请求成功)、201 Created
(资源创建)、204 No Content
(无返回内容)。
- 3xx 重定向 :
301
(永久重定向)、302
(临时重定向)、304
(资源未修改,用缓存)。
- 4xx 客户端错误 :
400
(请求错误)、401
(未认证)、403
(禁止访问)、404
(资源不存在)。
- 5xx 服务器错误 :
500
(内部错误)、502
(坏网关)、503
(服务不可用)
4. HTTP 请求流程分析

HTTP 请求流程
-
DNS 解析
浏览器将域名解析为服务器 IP 地址(优先本地缓存,否则查询 DNS 服务器)。
-
建立连接
- TCP 三次握手:与服务器指定端口(HTTP 80/HTTPS 443)建立网络连接。
- TLS 握手(仅 HTTPS):协商加密协议,创建安全传输通道。
-
发送请求
浏览器构造请求报文(包含请求方法、路径、头部信息、可选请求体),发送至服务器。
-
服务器处理
服务器解析请求,执行对应操作(如读取资源、调用接口),生成响应数据(HTML/JSON/ 错误等)。
-
接收响应
浏览器解析响应报文:
- 状态码(如 200 成功、404 未找到);
- 响应头(如内容类型、缓存策略);
- 响应体(返回的具体内容,如网页数据)。
-
连接处理
- HTTP/1.1:默认复用连接(持久连接),减少重复握手;
- HTTP/1.0 :需显式关闭连接(
Connection: close
)。
-
浏览器渲染
解析响应内容并渲染页面,同时触发额外资源(CSS/JS/ 图片)请求,重复上述流程。
核心逻辑:域名→IP→连接→请求→处理→响应→渲染,HTTPS 额外加密协商,HTTP/1.1 优化连接复用。
三、Nginx 网站服务基础
1. Nginx 简介
- 概述: Nginx 是高性能网络层工具,核心用于 反向代理、负载均衡、静态资源服务,通过异步架构解决高并发问题,是现代 Web 架构的基础设施。
- 核心功能:
反向代理:接收客户端请求,转发给后端服务器,隐藏后端服务器信息,增强安全性。
负载均衡:将客户端请求分配到多个后端服务器,提高系统响应能力和可靠性。常用算法有轮询、加权轮询、IP 哈希等。
静态资源服务:高效处理静态文件,如 HTML、CSS、JavaScript、图片等,减轻后端服务器压力。
HTTP 缓存:缓存经常访问的资源,减少对后端服务器的请求,加快页面加载速度。
- 管理命令:
nginx -s reload
:重新加载配置文件。
nginx -s stop
:快速停止服务。
nginx -s quit
:优雅停止服务。
nginx -t
:检查配置文件语法。
-
基础配置框架:
bashhttp { # 负载均衡配置(定义后端服务器组) upstream backend_servers { server 192.168.1.1:8080; server 192.168.1.2:8080; } server { listen 80; # HTTP 监听端口 server_name yourdomain.com; # 绑定域名 # 静态资源处理 location /static/ { root /data/; # 静态文件目录:/data/static/... } # 反向代理到负载均衡组 location / { proxy_pass http://backend_servers; # 转发所有请求到 upstream proxy_set_header Host $host; # 传递客户端域名 } # HTTPS 配置(需额外监听 443 端口) listen 443 ssl; ssl_certificate /path/cert.pem; ssl_certificate_key /path/key.pem; } }
2. 安装 Nginx 服务器
(1)官网下载安装包(nginx)
(2)关闭防火墙和 改SELinux 模式
bash
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
修改 /etc/sysconfig/selinux
SELINUX=disable
###
该文件用于配置 SELinux(Security-Enhanced Linux)的相关设置。SELinux 是一种安全模块,提供强制访问控制(MAC),以增强系统的安全性。
1. **SELINUX**:定义 SELinux 的工作状态,例如 `enforcing`(强制模式)、`permissive`(宽容模式)或 `disabled`(禁用)。
2. **SELINUXTYPE**:指定 SELinux 策略类型,例如 `targeted`(仅保护关键进程)或 `strict`(保护所有进程)
(3)安装相关依赖包
bash
yum -y install gcc* pcre-devel zlib-devel openssl-devel
###
"gcc*" 指安装与 GNU 编译器集合相关的所有软件包,GCC 是用于编译 C、C++ 等编程语言代码的重要工具。"pcre-devel" 是 Perl 兼容正则表达式库的开发文件,用于支持正则表达式相关功能的开发。
"zlib-devel" 是 zlib 库的开发文件,zlib 用于数据压缩和解压缩相关开发。
"openssl-devel" 是 OpenSSL 库的开发文件,OpenSSL 用于提供安全通信及加密相关功能的开发。
(4)解压源码包 并 创建服务器用户
bash
tar zxvf nginx-x-x.. #解压
useradd -M -s /sbin/nologin nginx #创建用户
(5)配置 Nginx 的编译选项
bash
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module
##各参数作用
--prefix=/usr/local/nginx:指定 Nginx 的安装目录为/usr/local/nginx。在安装时,Nginx 的二进制文件、配置文件、日志文件等都会存于该目录下。指定安装目录能让你更好地管理 Nginx,还可以避免与系统自带的软件产生冲突。
--user=nginx --group=nginx:这两个参数分别指定 Nginx 运行时的用户和用户组为nginx。为 Nginx 创建专门的用户和用户组,可增强系统的安全性,防止 Nginx 进程以 root 权限运行,从而降低潜在的安全风险。
--with-http_ssl_module:启用http_ssl_module模块,该模块支持 HTTPS 协议。启用此模块后,Nginx 能够处理基于 SSL/TLS 加密的 HTTP 请求,为网站提供安全的通信通道。
--with-http_stub_status_module:启用http_stub_status_module模块,该模块可以提供 Nginx 的基本状态信息,如活动连接数、接受的请求总数、处理的请求总数等。通过这些信息,你可以监控 Nginx 的运行状态,进行性能分析和故障排查。
(6)进行编译和做软链接
bash
编译 make && make install
软链接 ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/nginx
检查 nginx -t
(7)nginx写入Linux系统服务(/lib/systemd/system 目录下都是系统服务)
bash
[Unit]
Description=my nginx
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/sbin/nginx
ExecStop=/usr/local/sbin/nginx -s stop
ExecReload=/usr/local/sbin/nginx -s reload
[Install]
WantedBy=multi-user.target
####解析配置
[Unit]部分:
- "Description=my nginx"表示该服务的描述为"my nginx" ,用于简要说明此服务的作用。
- "After=network.target"说明该服务在网络服务启动之后启动,确保网络环境就绪后再启动此服务。
[Service]部分:
- "Type=forking"指定服务类型为forking,即启动进程会创建子进程,父进程退出,子进程继续运行。
- "PIDFile=/usr/local/nginx/logs/nginx.pid"指明服务进程ID(PID)文件的路径,用于systemd追踪服务进程。
- "ExecStart=/usr/local/sbin/nginx"定义启动服务时执行的命令,这里是启动位于"/usr/local/sbin/"路径下的nginx程序。
- "ExecStop=/usr/local/sbin/nginx -s stop"定义停止服务时执行的命令,通过"-s stop"参数停止nginx服务。
- "ExecReload=/usr/local/sbin/nginx -s reload"定义重新加载服务配置时执行的命令,使用"-s reload"参数让nginx重新加载配置。
[Install]部分:
- "WantedBy=multi-user.target"表示该服务在多用户模式下被需要,当系统进入多用户运行级别时,此服务会被自动启动。
(8)重启服务
bash
重启服务 systemctl start nginx
重载文件重新读取 systemctl daemon-reload
netstat -anpt | grep nginx
(9)通过nginx配置文件可优化nginx
bash
# 工作进程数量,通常设置为 CPU 核心数
worker_processes auto;
events {
# 每个工作进程的最大连接数
worker_connections 1024;
}
http {
# 开启 gzip 压缩
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
# 隐藏 Nginx 版本信息
server_tokens off;
# 定义 upstream 用于负载均衡
upstream backend {
server backend1.example.com;
server backend2.example.com;
}
# 服务器配置
server {
# 监听的端口
listen 80;
# 服务器名称
server_name example.com;
# 访问日志
access_log /var/log/nginx/access.log;
# 错误日志
error_log /var/log/nginx/error.log;
# 静态资源处理
location /static/ {
root /var/www/html;
expires 30d;
}
# 反向代理
location / {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
}
配置项 | 作用 |
---|---|
worker_processes auto |
根据服务器的 CPU 核心数自动设置工作进程的数量,充分利用多核 CPU 的性能 |
worker_connections 1024 |
设置每个工作进程可以同时处理的最大连接数 |
gzip on |
开启 Gzip 压缩,减少数据传输量,提高网站访问速度 |
gzip_types ... |
指定需要进行 Gzip 压缩的文件类型 |
server_tokens off |
隐藏 Nginx 版本信息,增强安全性 |
upstream backend |
定义一个上游服务器组,用于负载均衡 |
server { ... } |
定义一个虚拟服务器 |
listen 80 |
监听 80 端口 |
server_name example.com |
指定服务器名称 |
access_log 和 error_log |
配置访问日志和错误日志的路径 |
location /static/ |
处理静态资源请求,设置缓存时间为 30 天 |
location / |
反向代理请求到 backend 上游服务器组,并设置请求头信息 |