nginx学习版完整教程
一.nginx的下载
(1)打开虚拟机,使用远程连接工具连接 linux 操作系统
(2)到 nginx 官网下载软件
nginx
(3)点击右侧download下载nginx的压缩包(建议下载最新版)
二.下载和安装nginx 的依赖文件
在下载安装nginx 之前,要先下载它的相应的依赖文件
分别是pcre、openssl 、zlib 、 gcc依赖文件
1. 安装 pcre 依赖
(1)联网下载 pcre 压缩文件依赖
wget http://downloads.sourceforge.net/project/pcre/pcre/8.37/pcre-8.37.tar.gz如果宝子没有下载第三方软件,只有 VMware,不知道如何将下载的文件导入 linux,接下来可以和咕嘎一起来操作:将路径转到我们要存放的地方,再输入rz,点击回车按钮,点击自己要输入的文件,如下图所示。
(2)解压压缩文件
tar -xvf pcre-8.37.tar.gz(3)进入解压后的 pcre-8.37
按顺序分别执行下面的命令:
./configure make && make install*如果在执行./configure命令的时候发生如下情况:
说明系统 PATH 环境变量里找不到 C 语言编译器 gcc。
你现在编译 pcre(Nginx 依赖包),源码编译需要 gcc 编译器,服务器没装。那我们需要去下载这个编译器,执行以下命令进行下载:
yum install -y gcc gcc-c++下载完成后继续执行./configure和make && make install。
2. 安装 openssl、zlib、gcc 依赖
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel安装完成后完成了所有依赖安装。
3. 安装 nginx
前面我们已经下好了 nginx 包,没下的去文档开头看。
依次执行以下命令:
tar -xvf nginx-1.28.3.tar.gz ./config make && make install完成后进入目录/usr/local/nginx/sbin/,执行:
./nginx查看进程判断 nginx 是否开启:
ps -ef | grep nginx如图所示:
这样的话,我们的 nginx 就算是安装成功了 ( •̀ ω •́ )y,咕咕嘎嘎。
为了我们接下来的学习,我们还要测试一下是否可以访问 nginx,因为我们的 nginx 默认监听 80 端口,所以我们需要开放我们的防火墙 80 端口。
1. 查看一下自己是否开启的 80 端口
firewall-cmd --list-all2. 开放 80 端口
firewall-cmd --add-port=80/tcp --permanent别忘了重启一下防火墙:
firewall-cmd --reload3. 浏览器访问
地址栏输入:虚拟机 ip 地址:80,咕嘎输入的就是 192.168.0.3:80。
访问成功了,咕嘎!!!!!
三.nginx 常用命令
进入 nginx 目录中: cd /usr/local/nginx/sbin
1、查看 nginx 版本号
./nginx -v
2、启动 nginx
./nginx
查看是否启动成功:ps -ef|grep nginx
3、停止 nginx
./nginx -s stop
4、重新加载 nginx
./nginx -s reload
四.nginx.conf 配置文件
1、位置
vim /usr/local/nginx/conf/nginx.conf
2、配置文件中的内容(包含三部分)
(1)全局块
配置服务器整体运行的配置指令
从配置文件开始到 events 块之间的内容,主要会设置一些影响 nginx 服务器整体运行的配置指令,主要包括配置运行 Nginx 服务器的用户(组)、允许生成的 worker process 数,进程 PID 存放路径、日志存放路径和类型以及配置文件的引入等。比如下面第一行配置的:
这是 Nginx 服务器并发处理服务的关键配置,worker_processes 值越大,可以支持的并发处理量也越多,但是会受到硬件、软件等设备的制约
(2)events 块
影响 Nginx 服务器与用户的网络连接
events 块涉及的指令主要影响 Nginx 服务器与用户的网络连接,常用的设置包括是否开启对多 work process下的网络连接进行序列化,是否允许同时接收多个网络连接,选取哪种事件驱动模型来处理连接请求,每个 wordprocess 可以同时支持的最大连接数等。
下图中就表示每个 work process 支持的最大连接数为 1024.这部分的配置对 Nginx 的性能影响较大,在实际中应该灵活配置。
(3)http 块
这算是 Nginx 服务器配置中最频繁的部分,代理、缓存和日志定义等绝大多数功能和第三方模块的配置都在这里。需要注意的是:http 块也可以包括 http 全局块、server 块。
①、http 全局块
http 全局块配置的指令包括文件引入、MIME-TYPE 定义、日志自定义、连接超时时间、单链接请求数上限等。
②、server 块
这块和虚拟主机有密切关系,虚拟主机从用户角度看,和一台独立的硬件主机是完全一样的,该技术的产生是为了节省互联网服务器硬件成本。每个 http 块可以包括多个 server 块,而每个 server 块就相当于一个虚拟主机。
而每个 server 块也分为全局 server 块,以及可以同时包含多个 locaton 块。
全局 server 块
最常见的配置是本虚拟机主机的监听配置和本虚拟主机的名称或 IP 配置。
location 块
一个 server 块可以配置多个 location 块。
这块的主要作用是基于 Nginx 服务器接收到的请求字符串(例如 server_name/uri-string),对虚拟主机名称(也可以是 IP 别名)之外的字符串(例如 前面的 /uri-string)进行匹配,对特定的请求进行处理。地址定向、数据缓存和应答控制等功能,还有许多第三方模块的配置也在这里进行
五.nginx 反向代理实例1
1、实现效果
打开浏览器,在浏览器地址栏输入地址 www.123.com,跳转到 liunx 系统 tomcat 主页面中
2、准备工作
(1)在 liunx 系统安装 tomcat,使用默认端口 8080
1.下载tomcat 网址
Apache Tomcat® - Apache Tomcat 9 Software Downloads
建议下载tomcat9.0
2.tomcat 安装文件放到 liunx 系统中(方法咕嘎前面讲了哦),解压
tar -xvf apache-tomcat-9.0.122.tar.gz3.进入 tomcat 的 bin 目录中,./startup.sh 启动 tomcat 服务器,打开进程查看tomcat是否开启
(2)对外开放访问的端口(Tomcat 默认监听 8080 端口,在后面配置文件咕嘎会讲到哦)
firewall-cmd --add-port=8080/tcp --permanent firewall-cmd --reload firewall-cmd --list-all3、访问过程的分析
4、具体配置(host,nginx.conf)
1.host文件配置
(将IP进行域名解析,类似创建一个新的名字)
添加内容到文件中,如图所示
2.nginx文件配置
进入nginx.conf配置文件,对配置文件进行修改
5、最终测试
浏览器地址栏输入 www.123.com:80
六.Nginx 反向代理实例 2
1、实现效果
使用 nginx 反向代理,根据访问的路径跳转到不同端口的服务中
nginx 监听端口为 9001,
访问 http://192.168.17.129:9001/edu/ 直接跳转到 127.0.0.1:8080
访问 http:// 192.168.17.129:9001/vod/ 直接跳转到 127.0.0.1:8081
2、准备工作
(1)准备两个 tomcat 服务器,一个 8080 端口,一个 8081 端口
(2)创建文件夹和测试页面,分别在/usr/src路径下(不是唯一)创建两个文件夹,tomcat8080和tomcat8081,如下图所示:
两个文件分别下载tomcat服务器,如下图所示:
由于我下载的都是相同版本的tomcat服务,需要对其中一个tomcat服务器配置进行修改,如下图所示:
3、具体配置
(1)找到 nginx 配置文件,进行反向代理配置
(2)咕嘎提醒,这里监听的是9277端口,我们需要在防火墙上开放9277端口
4.最终测试
七.Nginx负载均衡
1、实现效果
(1)浏览器地址栏输入地址 http://192.168.17.129/edu/a.html,负载均衡效果,平均 8080
和 8081 端口中
2、准备工作
(1)准备两台 tomcat 服务器,一台 8080,一台 8081
(2)在两台 tomcat 里面 webapps 目录中,创建名称是 edu 文件夹,在 edu 文件夹中创建
页面 a.html,用于测试
3、在 nginx 的配置文件中进行负载均衡的配置
4、nginx 分配服务器策略
第一种 轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除。
第二种 weight
weight 代表权重默认为 1,权重越高被分配的客户端越多
第三种 ip_hash
每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器
第四种 fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
5、最终测试
地址栏输入192.168.18.128/edc/a.html,多刷新几次,页面会在如下两幅图之间转换
八.Nginx 配置实例-动静分离
1、什么是动静分离
咕嘎小课堂:
把网站想象成一家餐厅:
(1)静态资源:图片、css 样式、js 脚本、视频、html 页面、字体文件。这些东西做好之后,内容不会随便变,就相当于餐厅里的餐具、桌椅、菜单海报、装修挂画,提前备好,不会每来一个客人就重做一份。
(2)动态资源:需要程序实时计算的内容,比如登录校验、查询数据库、提交表单、个人订单页面。相当于餐厅现炒的菜,每个客人点的不一样,后厨要现场加工。
(3)Nginx:餐厅前厅总管 + 迎宾,站在最前面接待客人
👉动静分离的规则:客人(浏览器)过来要东西:
- 如果客人要海报、餐具、菜单(静态文件),Nginx 自己库房里就有,直接拿给客人,不送往后厨,速度很快,后厨不用忙活;
- 如果客人要现炒菜(动态请求),Nginx 自己做不了,就把这个请求转发给后厨(后端服务),等后厨做好再交给客人。
2、准备工作
在 liunx 系统中准备静态资源,用于进行访问
image中放入一张图片,www文件中加入一个文本
3、具体配置
4、最终测试
在浏览器中输入:192.168.18.128/image/guga.jpg
因为配置文件 autoindex on,我们输入192.168.18.128/image/ 则会出现如下页面情况
咕嘎课堂:nginx配置文件中加入了autoindex on,Nginx 自动列出这个目录下所有文件 / 子文件夹,展示一个文件列表页面
在浏览器中输入:192.168.18.128/www/guga.html
九.nginx 的高可用
1、什么是 nginx 高可用
为什么要有nginx的高可用
咕嘎小课堂:nginx作为诸多服务的一个中间接待员 , 如果它宕机出故障了 , 那所有的服务网站全部挂掉 , 这就是单点故障 , 简单来说 , 我们可以将nginx 比喻成一个餐厅的服务接待员 , 负责所有客人的接待事宜,如果有一天它生病了 , 那整个餐厅不就乱套了 , 所以我们可以多招募一个服务接待员,就算有一个接待员除了问题 , 还有另外一个 , 同理 , 我们也可以多创建一个nginx , 防止另外一个nginx出现宕机而出现的服务无法进行的问题.
如图所示: 用我们创建的虚拟IP连接主aginx和辅aginx,服务启动,最先开始是使用主nginx,如果主nginx 出现问题,则会转为辅nginx继续进行服务.
2、配置高可用的准备工作
(1)需要两台服务器 192.168.18.129 和 192.168.18.128
(不必咕嘎一样,创建的虚拟机都会自动分配IP地址,可以自己配置,同样随机分配的也是一样的)
(2)在两台服务器安装 nginx
(咕嘎认为各位聪明的宝子们经过前面训练,都已经掌握了nginx的安装)
(3)在两台服务器安装 keepalived
yum install -y keepalived
安装的keepalived配置文件默认放在/etc/keepalived/
(4) 创建一个脚本文件nginx_check.sh
(5) 配置keepalived.conf配置文件,配置完后开启systemctl start keepalived
1是全局定义块(全局基础配置)客栈的行政台账 + 报警通知规则
2是脚本监控块(健康检查脚本定义)专职巡检员
3是VRRP 实例(主备集群核心)后台管理员 / 写全局规矩的人
(6) 开启nginx
3、最终测试
因为咕嘎创建的虚拟地址为192.168.18.18,所以咕嘎在浏览器的地址栏输入此地址,如果有宝子比知道该输入哪个IP,可以去看看你的keepalived 配置文件
十.nginx原理
1、mater 和 worker
2、worker 如何进行工作的
3、一个 master 和多个 woker 有好处
(1)可以使用 nginx –s reload 热部署,利用 nginx 进行热部署操作
(2)每个 woker 是独立的进程,如果有其中的一个 woker 出现问题,其他 woker 独立的,
继续进行争抢,实现请求过程,不会造成服务中断
4、设置多少个 woker 合适
worker 数和服务器的 cpu 数相等是最为适宜的
5、连接数 worker_connection
第一个:发送请求,占用了 woker 的几个连接数?
答案:2 或者 4 个
第二个:nginx 有一个 master,有四个 woker,每个 woker 支持最大的连接数 1024,支持的
最大并发数是多少?
l 普通的静态访问最大并发数是: worker_connections * worker_processes /2,
l 而如果是 HTTP 作 为反向代理来说,最大并发数量应该是 worker_connections *
worker_processes/4。
尚硅谷视频链接:尚硅谷Nginx教程由浅入深(一套打通丨初学者也可掌握)_哔哩哔哩_bilibili