阶段一:企业级中间件之Nginx基础
背景描述
Web服务
数字化时代,互联网已经深度融入我们生活的方方面面。从日常浏览新闻资讯、社交娱乐,到在线购物、移动支付,再到企业的数字化转型和各种互联网应用的蓬勃发展,背后都离不开Web服务支撑。
想象一下,当你打开手机上的购物App,轻松地浏览商品、下单购买,或者在电脑上登录社交媒体平台,与朋友互动交流。 这些看似简单的操作,实际上都涉及到复杂的网络交互过程。每一次你点击链接、提交表单,都是向远程服务器发送请求,而服务器则需要快速、准确地响应这些请求,将你所需的信息返回给你。
Nginx: Web领域的明星
在众多提供Web服务的软件中,Nginx凭借其卓越的性能和丰富的功能,成为了互联网行业的明星级工具。它是一款高性能的HTTP和反向代理Web服务器,同时也具备邮件代理服务器等功能。
事实上,许多知名的互联网公司,如腾讯、阿里巴巴、百度等,都在其业务中大量使用Nginx来处理海量的用户请求。
# curl -I 域名地址
Server:Nginx
比如, curl -I www.sina.com注意事项:
- 修改配置前先备份原文件,尤其是 SSH、Nginx、数据库和 Kubernetes 生产配置。
URL vs URI
URI(Uniform Resource Identifier,统一资源标识符):广义概念,是用于唯一标识互联网上资源的字符串(如网页、图片、文件等),包含两种形式:URL 和 URN(URN 较少用,如书籍的 ISBN)。
URL(Uniform Resource Locator,统一资源定位符):是 URI 的子集,不仅标识资源,还指定了访问资源的具体路径 / 方式(如协议、服务器地址、端口等)。
URL 举例:https://www.example.com:80/path/file.html?id=1#top
相关介绍
官网:https://nginx.org/
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP等邮件服务。其特点是占有内存少,并发能力强。
Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的。
第一个公开版本0.1.0发布于2004年10月4日。后来被美国的F5公司(硬件负载均衡厂商)收购。
三大功能
HTTP服务器
同类型web服务器软件:Apache、Nginx(俄罗斯)、IIS(微软)、lighttpd(德国)
反向代理
接收客户端的请求,然后将这些请求转发到内部的多个服务器上进行处理,最后将处理结果返回给客户端。这就好比是一个“智能接待员”。
☆ 正向代理 vs 反向代理
特点:知道自己使用了代理,需要填写代理服务器的IP等相关连接信息
场景:常见于代理客户端上网等操作(翻墙)
特点:
用户是无感知的,不知道使用了代理服务器。
反向代理服务器是和真实访问的服务器是在一起的,有关联的。
作用:
① 可以根据实际业务需求,分发代理页面到不同的解释器
② 可以隐藏真实服务器的路径
场景:常见于代理后端服务器
负载均衡
当有大量的用户请求时,单台服务器可能无法承受如此大的压力。
Nginx的负载均衡功能可以将这些请求均匀地分配到多个后端服务器上,从而提高系统的整体处理能力和可靠性。这就像是一个“交通指挥官”。
负载均衡技术 (Load Balance,LB),其原理就是把用户请求分发到不同的服务器。使流量合理分配。
负载均衡作用:服务器容灾,流量分发
① 流量分发 请求平均 降低单例压力
② 安全 隐藏后端真实服务
③ 屏蔽非法请求(七层负载均衡)
http://www.itcast.cn/images/1.jpg => \*.jpg图片 => 调度后端的图片服务器
基本架构
Nginx的架构主要由一个主进程(Master Process)和多个工作进程(Worker Processes)组成。
- 主进程:主进程主要负责管理Nginx的配置文件、启动和停止工作进程、重新加载配置等工作。它就像是一个“管理者”,负责整个Nginx系统的统筹和协调。
- 工作进程:工作进程负责实际处理客户端的请求。多个工作进程可以并行处理多个请求,从而提高Nginx的并发处理能力。工作进程之间相互独立,互不影响,当某个工作进程出现故障时,不会影响其他工作进程的正常运行。
Nginx特点
① 高可靠:稳定性 master进程 管理调度请求分发到哪一个worker=> worker进程 响应请求 一master多worker
② 热部署:a. 平滑升级;b. 可以快速重载配置
③ 高并发:可以同时响应更多的请求 事件 epoll模型 几万
④ 响应快:尤其在处理静态文件上,响应速度很快 sendfile
⑤ 低消耗:cpu和内存 1w个请求 内存2\~3MB
⑥ 分布式支持:反向代理 七层负载均衡,新版本也支持四层负载均衡
安装部署
常见安装方式
常见安装方式:
① yum安装配置,需使用Nginx官方源或者EPEL源
② 源码编译
包管理器安装
dnf install epel-release -y
dnf install nginx -y注意事项:
- 修改配置前先备份原文件,尤其是 SSH、Nginx、数据库和 Kubernetes 生产配置。
nginx -v注意事项:
- 修改配置前先备份原文件,尤其是 SSH、Nginx、数据库和 Kubernetes 生产配置。
systemctl start nginx
systemctl status nginx
systemctl enable nginx注意事项:
- 修改配置前先备份原文件,尤其是 SSH、Nginx、数据库和 Kubernetes 生产配置。
编译安装
软件的编译安装过程:编译安装三步走(配置 + 编译 + 安装)
① 配置软件 ./configure
② 编译,生成可执行的软件包 make
③ 安装 make install
源码地址:https://nginx.org/en/download.html
或者也可以从 GitHub 上进行下载。
在 release 页面,可以看到最新发布的版本
在主页,可以看到【从源码构建】
--------------------------------------- 华丽的分割线 ------------------------------------
☆ 环境准备
# 第一步:卸载 dnf 包
[root@web01 ~] # dnf remove -y nginx
# 第二步:上传软件包,到虚拟机当中命令作用:
- 使用
dnf包管理器执行remove操作,对软件包进行安装、更新、删除或查询。
执行结果:
- 成功后软件包会按指定动作完成安装、更新、删除或查询;失败时检查仓库、网络和权限。
关键参数:
注意事项:
**注意事项:**
**关键参数:**
**注意事项:**注意事项:
sbin/nginx
问题2:重启报错,如何解决注意事项:
用于查看nginx.conf配置文件是否有语法错误!!!
**课上作业**
下面代码配置了两个root,最终会产生什么效果,请实践体会一下。
}
}注意事项:
优势:默认不占用80端口,能够稍微隐秘一些
第一步:编辑nginx.conf配置文件
第二步:重载Nginx
**注意事项:**
作用:location区块用于url规则匹配,既支持精准匹配,也支持正则匹配
http://nginx.org/en/docs/http/ngx_http_core_module.html#location
根据用户请求的uri来执行不同的操作。
根据用户请求的网站url进行匹配,匹配指定的请求uri;
请求uri不包含查询字符串,如http://localhost:8080/test?id=10,请求uri是/test);
#规则
}
注意:以上匹配操作只能匹配首页!#规则 }
请求示例
}请求示例
#规则 }
请求实例
优先级:location如果有多个规则,则其也有优先级概念
三大类 #规则 }
#规则 }
区分大小写 #规则 } 不区分大小写 #规则 }
#规则 }
#规则 }
flag标记说明:
| 标记 | 作用 |
|---|---|
| last | 本条规则匹配完成,继续匹配新的location URI规则 |
| redirect | 返回302临时重定向,浏览器地址会显示跳转后的URL地址 |
另外还要特别注意:
要求:把访问的/demo.html,重定向到/demo.php,实现伪静态,也可以实现隐藏真实页面
}
注意: rewrite后面两个参数中,斜杠/不能少;
**注意事项:**
注意事项:
注意事项:
**注意事项:**
[Unit]
After=network.target
[Service]
Type=forking
PrivateTmp=true
[Install]
WantedBy=multi-user.target注意事项: