Web与Nginx
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(服务器):接收请求,返回所需资源或动态内容
用户浏览器 → Web服务器(Nginx/Apache) → 应用服务器(PHP/Python/Java) → 数据库(MySQL/Redis)
1.3 Web请求与响应过程
一次完整的Web访问包括以下步骤:
- 输入URL:用户在浏览器输入网址
- DNS解析:浏览器将域名解析为IP地址
- 建立连接:浏览器与Web服务器建立TCP连接(3次握手)
- 发送请求:浏览器发起HTTP请求(GET/POST)
- 服务器处理:Web服务器处理请求,可能需要应用服务器和数据库参与
- 返回响应:服务器将结果打包成HTTP响应返回
- 渲染页面:浏览器解析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(智能化):语义网、区块链、去中心化概念兴起
二、HTTP与HTTPS协议
2.1 HTTP与HTTPS区别
- HTTP:明文传输,不安全
- HTTPS:在HTTP上加入SSL/TLS加密,防止中间人攻击
2.2 HTTPS握手流程
- 客户端Hello:浏览器发起请求,告诉服务器支持的加密算法
- 服务端Hello+证书:网站返回SSL证书,选择加密算法
- 客户端验证证书:浏览器检查证书是否可信
- 协商密钥:双方生成临时密钥用于对称加密
- 加密通信开始:后续HTTP数据通过加密通道传输
2.3 HTTP状态码详解
状态码 | 类型 | 含义 | 通俗解释 |
---|---|---|---|
200 | 2xx成功 | OK | 请求成功,东西拿到了 |
301 | 3xx重定向 | Moved Permanently | 页面永久搬家了 |
302 | 3xx重定向 | Found | 页面临时搬家 |
304 | 3xx重定向 | Not Modified | 内容未变,可用缓存 |
400 | 4xx客户端错误 | Bad Request | 请求格式错误 |
401 | 4xx客户端错误 | Unauthorized | 需要先登录 |
403 | 4xx客户端错误 | Forbidden | 没有访问权限 |
404 | 4xx客户端错误 | Not Found | 页面找不到 |
500 | 5xx服务器错误 | Internal Server Error | 服务器内部错误 |
502 | 5xx服务器错误 | Bad Gateway | 网关错误 |
503 | 5xx服务器错误 | Service Unavailable | 服务不可用 |
504 | 5xx服务器错误 | Gateway Timeout | 网关超时 |
三、Nginx入门
3.1 Nginx简介
Nginx(“engine x”)是一个高性能的HTTP和反向代理服务器,由Igor Sysoev为俄罗斯访问量第二的Rambler.ru站点开发。
主要功能:
- 静态资源服务
- 反向代理
- 负载均衡
- 高并发处理
优势:
- 轻量级,占用内存小
- 支持百万级并发访问
- 稳定可靠,开源且社区活跃
3.2 Nginx与Apache差异
- Nginx基于事件驱动,Apache基于进程驱动
- Nginx避免子进程概念,Apache基于子进程
- Nginx在内存消耗和连接方面表现更好
- Nginx支持热部署,Apache不支持
- Nginx对静态文件处理和反向代理有明显优势
3.3 Nginx进程结构
Nginx采用多进程方式:
- 主进程:管理 worker 进程
- Worker进程:实际处理网络请求
Worker进程数量一般设置为核心数,充分利用CPU资源,同时避免进程竞争导致的上下文切换损耗。
Nginx 安装与配置完整指南
4.1 下载 Nginx
在 Linux 系统中使用 wget 命令下载 Nginx 稳定版本:
wget https://nginx.org/download/nginx-1.20.2.tar.gz
下载完成后,系统会显示下载进度和保存路径信息。
4.2 安装依赖环境
安装编译 Nginx 所需的依赖包:
# 关闭防火墙(根据实际环境需求)
systemctl stop firewalld
systemctl disable firewalld
setenforce 0# 安装编译工具和依赖库
yum install -y gcc gcc-c++ make pcre pcre-devel zlib zlib-devel openssl openssl-devel
安装过程会自动解决依赖关系并安装所需的所有软件包。
4.3 创建用户并解压
创建 Nginx 运行用户并解压安装包:
# 创建Nginx用户(不允许登录系统)
useradd -M -s /sbin/nologin nginx# 解压Nginx安装包到/opt目录
tar zxvf nginx-1.20.2.tar.gz -C /opt/
4.4 编译安装 Nginx
进入解压目录并进行编译安装:
# 进入Nginx源码目录
cd /opt/nginx-1.20.2/# 配置编译选项
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module \
--with-http_ssl_module# 编译并安装
make && make install
4.5 检查 Nginx 配置
验证 Nginx 配置文件语法是否正确:
nginx -t
如果配置正确,将显示:
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
4.6 启动 Nginx 服务
直接使用 nginx 命令启动服务:
nginx
4.7 查看 Nginx 版本信息
验证安装版本和编译参数:
nginx -V
输出将显示版本号、编译器和模块信息。
4.8 添加 Nginx 系统服务
创建系统服务脚本以便管理:
vim /etc/init.d/nginx
添加以下内容:
#!/bin/bash
#chkconfig: 35 99 20
#description:Nginx Service Control ScriptCOM="/usr/local/nginx/sbin/nginx"
PID="/usr/local/nginx/logs/nginx.pid"case "$1" in
start)$COM
;;stop)kill -s QUIT $(cat $PID)
;;restart)$0 stop$0 start
;;reload)kill -s HUP $(cat $PID)
;;*)
echo "Usage: $0 {start|stop|restart|reload}"
exit 1esac
exit 0
4.9 设置服务权限并管理
给脚本添加执行权限并设置为系统服务:
# 添加执行权限
chmod +x /etc/init.d/nginx# 添加为系统服务
chkconfig --add nginx# 设置开机自启
chkconfig nginx on# 使用systemctl管理服务
systemctl start nginx # 启动
systemctl stop nginx # 停止
systemctl restart nginx # 重启
systemctl reload nginx # 重载配置
systemctl status nginx # 查看状态# 或者使用service命令
service nginx start|stop|restart|reload
至此,Nginx 已经成功安装并配置为系统服务,可以通过多种方式管理 Nginx 服务。