阶段一:企业级中间件之Nginx基础

背景描述

Web服务

数字化时代,互联网已经深度融入我们生活的方方面面。从日常浏览新闻资讯、社交娱乐,到在线购物、移动支付,再到企业的数字化转型和各种互联网应用的蓬勃发展,背后都离不开Web服务支撑。

想象一下,当你打开手机上的购物App,轻松地浏览商品、下单购买,或者在电脑上登录社交媒体平台,与朋友互动交流。 这些看似简单的操作,实际上都涉及到复杂的网络交互过程。每一次你点击链接、提交表单,都是向远程服务器发送请求,而服务器则需要快速、准确地响应这些请求,将你所需的信息返回给你。

Nginx: Web领域的明星

在众多提供Web服务的软件中,Nginx凭借其卓越的性能和丰富的功能,成为了互联网行业的明星级工具。它是一款高性能的HTTP和反向代理Web服务器,同时也具备邮件代理服务器等功能。

事实上,许多知名的互联网公司,如腾讯、阿里巴巴、百度等,都在其业务中大量使用Nginx来处理海量的用户请求。

# curl -I 域名地址
Server:Nginx

比如, curl -I www.sina.com

注意事项:

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特点

① 高可靠:稳定性 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

注意事项:

nginx -v

注意事项:

systemctl start nginx

systemctl status nginx

systemctl enable nginx

注意事项:

编译安装

软件的编译安装过程:编译安装三步走(配置 + 编译 + 安装)

① 配置软件 ./configure

② 编译,生成可执行的软件包 make

③ 安装 make install

源码地址:https://nginx.org/en/download.html

或者也可以从 GitHub 上进行下载。

在 release 页面,可以看到最新发布的版本

在主页,可以看到【从源码构建】

--------------------------------------- 华丽的分割线 ------------------------------------

☆ 环境准备

# 第一步:卸载 dnf 包
[root@web01 ~] # dnf remove -y nginx

# 第二步:上传软件包,到虚拟机当中

命令作用:

执行结果:

关键参数:

注意事项:


**注意事项:**


**关键参数:**

**注意事项:**

注意事项:

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

注意事项:

本文由飞书云文档同步生成。涉及命令、SQL、配置示例时,请以飞书源文档和实际环境执行结果为准。