尚硅谷nginx学习笔记

article/2025/10/16 19:41:30

尚硅谷nginx学习笔记

  • 1.nginx相关概念
    • 1.1什么是nginx?
    • 1.2正向和反向代理
    • 1.3负载均衡
    • 1.4动静分离
  • 2.nginx在linux中的安装与启动
  • 3.nginx的常用命令
  • 4.nginx的配置文件
  • 5.nginx配置实例
    • 5.1反向代理准备工作
    • 5.2反向代理实例一
    • 5.3反向代理实例二
    • 5.4负载均衡实例
    • 5.5动静分离准备工作
    • 5.6动静分离实例
    • 5.7高可用集群准备工作
    • 5.8高可用集群主备模式
  • 6.nginx的原理解析

参考资料
尚硅谷nginx入门教程

1.nginx相关概念

1.1什么是nginx?

Nginx 是高性能的 HTTP 和反向代理的服务器,处理高并发能力是十分强大的,能经受高负载的考验,有报告表明能支持高达 50,000 个并发连接数。

1.2正向和反向代理

1、(正向代理): 如果把局域网外的 Internet 想象成一个巨大的资源库,则局域网中的客户端要访问 Internet,则需要通过代理服务器来访问,这种代理服务就称为正向代理。
在这里插入图片描述
2、反向代理:
反向代理,其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器 IP 地址
在这里插入图片描述

1.3负载均衡

通过负载均衡,我们就提高并发数量,我们增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,也就是我们所说的负载均衡
在这里插入图片描述

1.4动静分离

为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析速度。降低原来单个服务器的压力。
在这里插入图片描述

2.nginx在linux中的安装与启动

1、使用远程连接工具连接linux操作系统

2、进入nginx官网,下载http://nginx.org/

3、需要的素材
在这里插入图片描述

4、安装 pcre 依赖
联网下载 pcre 压缩文件依赖
wget http://downloads.sourceforge.net/project/pcre/pcre/8.37/pcre-8.37.tar.gz
在这里插入图片描述

5、解压压缩文件
使用命令 tar –xvf pcre-8.37.tar.gz

6、进入解压之后的目录,执行命令:./configure
在这里插入图片描述
如果缺少环境,执行:yum install -y gcc gcc-c++

7、使用 make&&make install编译安装,我们的pcre就安装完成了,pcre-config --version命令可以查看版本

8、安装其他依赖(openssl 、zlib 、 gcc)
命令:yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel

9、安装nginx
把刚刚下载的nginx安装包传到linux中,依次执行
解压:tar -xvf nginx-1.12.2.tar.gz
进入目录:cd nginx-1.12.2/
命令:./configure
命令:make && make install

10、安装成功后,在usr中会多出来一个文件夹local/nginx,在nginx有sbin有启动脚本
在这里插入图片描述

11、查看访问的默认端口
在这里插入图片描述
在这里插入图片描述
12、在 windows 系统中访问 linux 中 nginx,默认不能访问的,因为防火墙问题(如果是自己学习用的虚拟机,防火墙直接关了就行)
(1)关闭防火墙
(2)开放访问的端口号,80 端口
查看开放的端口号
firewall-cmd --list-all
设置开放的端口号
firewall-cmd --add-service=http –permanent
firewall-cmd --add-port=80/tcp --permanent
重启防火墙
firewall-cmd –reload

13、在浏览器中输入你服务器的ip地址即可访问
在这里插入图片描述

3.nginx的常用命令

使用nginx操作命令的前提:进入nginx的根目录:
cd /usr/local/nginx/sbin

1、查看nginx版本号:./nginx -v
在这里插入图片描述

2、启动nginx:./nginx
在这里插入图片描述

3、关闭nginx:./nginx -s stop
在这里插入图片描述

4、重新加载nginx:./nginx -s reload
当我们修改/nginx/conf下的nginx.conf后,我们可以不重启nginx,使用重新加载

4.nginx的配置文件

配置文件位置:/usr/local/nginx/conf
在这里插入图片描述
下面我们来看看配置文件有哪些组成,通过vi命令进入配置文件,我们发现大部分内容前面都有一个#,也就是注释

配置文件一共有三部分组成:
1、全局块

从配置文件开始到 events 块之间的内容,主要会设置一些影响 nginx 服务器整体运行的配置指令,主要包括配置运行 Nginx 服务器的用户(组)、允许生成的 worker process 数,进程 PID 存放路径、日志存放路径和类型以及配置文件的引入等。

在这里插入图片描述

2、events块

events 块涉及的指令主要影响 Nginx 服务器与用户的网络连接,常用的设置包括是否开启对多 work process 下的网络连接进行序列化,是否允许同时接收多个网络连接,选取哪种事件驱动模型来处理连接请求,每个 word process 可以同时支持的最大连接数等。
这部分的配置对 Nginx 的性能影响较大,在实际中应该灵活配置

在这里插入图片描述

3、http块

这算是 Nginx 服务器配置中最频繁的部分,代理、缓存和日志定义等绝大多数功能和第三方模块的配置都在这里。
需要注意的是:http 块也可以包括 http 全局块、server 块

a)http全局块
http 全局块配置的指令包括文件引入、MIME-TYPE 定义、日志自定义、连接超时时间、单链接请求数上限等。
在这里插入图片描述

b)server块
这块和虚拟主机有密切关系,虚拟主机从用户角度看,和一台独立的硬件主机是完全一样的,该技术的产生是为了
节省互联网服务器硬件成本。
每个 http 块可以包括多个 server 块,而每个 server 块就相当于一个虚拟主机。
而每个 server 块也分为全局 server 块,以及可以同时包含多个 locaton 块。

全局 server 块:最常见的配置是本虚拟机主机的监听配置和本虚拟主机的名称或 IP 配置。
location 块: 这块的主要作用是基于 Nginx 服务器接收到的请求字符串(例如 server_name/uri-string),对虚拟主机名称(也可以是 IP 别名)之外的字符串(例如 前面的 /uri-string)进行匹配,对特定的请求进行处理。地址定向、数据缓存和应答控制等功能,还有许多第三方模块的配置也在这里进行。

在这里插入图片描述

location 指令说明: 该指令用于匹配 URL。
在这里插入图片描述
1、= :用于不含正则表达式的 uri 前,要求请求字符串与 uri 严格匹配,如果匹配
成功,就停止继续向下搜索并立即处理该请求。
2、~:用于表示 uri 包含正则表达式,并且区分大小写。
3、~*:用于表示 uri 包含正则表达式,并且不区分大小写。
4、^~:用于不含正则表达式的 uri 前,要求 Nginx 服务器找到标识 uri 和请求字符串匹配度最高的 location 后,立即使用此 location 处理请求,而不再使用 location 块中的正则 uri 和请求字符串做匹配。

5.nginx配置实例

5.1反向代理准备工作

实现效果:
(1)打开浏览器,输入www.123.com,跳转到linux系统tomcat主页面中

1、在linux系统中安装tomcat,使用默认端口8080

  • tomcat 安装文件放到 linux 系统中,解压

在这里插入图片描述

  • 进入 tomcat 的 bin 目录中,./startup.sh 启动 tomcat 服务器

在这里插入图片描述

2、对外开放访问的端口
firewall-cmd --add-port=8080/tcp --permanent
firewall-cmd –reload

3、在windows系统中的浏览器测试:输入 ip地址:8080,看能否访问到tomcat页面
在这里插入图片描述

5.2反向代理实例一

1、分析一下反向代理的访问过程
在这里插入图片描述

2、第一步 在 windows 系统的 host 文件进行域名和 ip 对应关系的配置
在这里插入图片描述
在这里插入图片描述

3、在 nginx 进行请求转发的配置(反向代理配置)
在这里插入图片描述

4、测试,访问www.123.com在这里插入图片描述

5.3反向代理实例二

实现效果:
使用 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

1、准备两个tomcat服务器,一个8080,一个8081,8080我们已经准备好了

2、创建文件夹和测试页面
8080中的
在这里插入图片描述
8081中的
在这里插入图片描述

3、具体配置
(1)找到nginx的配置文件,在里面进行反向代理的配置
在这里插入图片描述

4、记得开放端口9001 8080 8081

5、最终测试
在这里插入图片描述

5.4负载均衡实例

实现效果:
(1)浏览器地址栏输入地址 http://192.168.17.129/edu/a.html,负载均衡效果,平均到 8080和 8081 端口中

1、准备两台tomcat服务器8080和8081

2、在两台 tomcat 里面 webapps 目录中,创建名称是 edu 文件夹,在 edu 文件夹中创建页面 a.html,用于测试

3、在 nginx 的配置文件中进行负载均衡的配置

在http块中加上upstream,给服务起个名字,并列出服务器
在这里插入图片描述
在server中加上服务名字
在这里插入图片描述

4、测试
当我们用上面那种方式,就是用默认的轮询方式,每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除,也就是说8080个8081轮流处理请求。

策略2:weight
weight 代表权重,默认为 1,权重越高被分配的客户端越多
在这里插入图片描述

策略3: ip_hash
每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器,也就是说一个ip访问的服务器一直是一样的,可以解决session共享的问题
在这里插入图片描述
策略4: fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
在这里插入图片描述

5.5动静分离准备工作

Nginx 动静分离简单来说就是把动态跟静态请求分开,不能理解成只是单纯的把动态页面和静态页面物理分离。严格意义上说应该是动态请求跟静态请求分开,可以理解成使用 Nginx 处理静态页面Tomcat 处理动态页面
在这里插入图片描述
方式一: 是纯粹把静态文件独立成单独的域名,放在独立的服务器上,也是目前主流推崇的方案(使用方式一学习)
方式二: 是动态跟静态文件混合在一起发布,通过 nginx 来分开。
通过 location 指定不同的后缀名实现不同的请求转发。通过 expires 参数设置,可以使浏览器缓存过期时间,减少与服务器之前的请求和流量
具体 Expires 定义:
是给一个资源设定一个过期时间,也就是说无需去服务端验证,直接通过浏览器自身确认是否过期即可,但是不太适合于经常变动的资源。

在linux中准备静态资源,用于访问
在这里插入图片描述

5.6动静分离实例

(1)在 nginx 配置文件中进行配置,expires 参数相加的话位置也是在location中

这样的意思就是:
通过www路径,可以访问到/data/www/中的内容
通过image路径,可以访问到/data/image/中的内容
在这里插入图片描述

(2)最终测试
浏览器中输入http://www.123.com/image/01.jpg
我们在配置文件中配置类,autoindex on,这就表示列出当前文件夹中的内容
在这里插入图片描述
浏览器中输入http://192.168.17.129/www/a.html
在这里插入图片描述
这样我们就通过了不同的访问地址,来访问静态与动态的资源

5.7高可用集群准备工作

1、什么是nginx的高可用?
我们之前使用一台nginx转发请求时,如果宕机了,就不能实现效果了,那么接下来就有了高可用集群,所以我们再准备一台备份服务器,如果主机宕机了,就有了备份服务器实现。
我们需要一个keepalive插件来完成操作,并使用虚拟ip访问,虚拟ip与主服务器绑定,主服务器宕机后,有keepalive绑定到备份服务器。
在这里插入图片描述
(1)需要两台 nginx 服务器
(2)需要 keepalived
(3)需要虚拟 ip

2、配置高可用的准备工作
(1)需要两台服务器 192.168.17.129 和 192.168.17.131
(2)在两台服务器安装 nginx
(3)在两台服务器安装 keepalived,命令:yum install keepalived –y
配置文件位置:cd /etc/keepalived

至此,准备工作结束

5.8高可用集群主备模式

1、我们找到etc/keepalive中的keepalive.conf,拖动到桌面,用下面的内容来替换,直接替换原本的keepalive.conf即可,注意虚拟ip的前三段要和你的本机一致。

# 全局定义
global_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 192.168.17.129 #改成自己的ipsmtp_connect_timeout 30# 主机的名字,在/etc下的host中可以配置,方式:ip 主机名router_id LVS_DEVEL
}# 检测脚本和一些权重的参数
vrrp_script chk_http_port {script "/usr/local/src/nginx_check.sh" #脚本的路径interval 2 #(检测脚本执行的间隔)weight 2 #权重,脚本中的条件成立,就设置
}#虚拟ip的一些配置
vrrp_instance VI_1 {state MASTER # 备份服务器上将 MASTER 改为 BACKUP interface ens33 //网卡,ifconfig命令可以查看virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同priority 100 # 主、备机取不同的优先级,主机值较大,备份机值较小advert_int 1 #每个多少时间检测是否存活,默认是一秒一次#权限校验的方式,方式是密码,密码是1111,也可以自己修改
authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.17.50 // VRRP H 虚拟地址} }

2、在/usr/local/src 添加检测脚本 (根据你设置的脚本路径),这个是检测nginx是否存活

#!/bin/bash
A=`ps -C nginx –no-header |wc -l`
if [ $A -eq 0 ];then/usr/local/nginx/sbin/nginx   #这里是启动路径sleep 2if [ `ps -C nginx --no-header |wc -l` -eq 0 ];thenkillall keepalivedfi
fi

接下来同样的方式设置从服务器,只需要修改MASTER和优先级

3、把两台服务器上的nginx和keepalive的启动起来
在这里插入图片描述
4、测试
通过你绑定到虚拟ip访问

1、在浏览器中输入虚拟ip地址,能够访问到主服务器
在主服务器中输入 ip a 发现网卡已经绑定了虚拟ip
在这里插入图片描述
2、把主服务器的nginx和keepalive停止,继续访问虚拟ip地址
在这里插入图片描述
测试结果发现还可以访问,在从服务器中输入ip a,发现网卡也已经绑定了虚拟ip,也就是说,主服务器宕机后,keepalive自动将虚拟ip和备份服务器绑定了

6.nginx的原理解析

1、mater 和 worker
在这里插入图片描述
在这里插入图片描述
2、worker 如何进行工作的
在这里插入图片描述

3、一个 master 和多个 woker 有好处
(1)可以使用 nginx –s reload 热部署,利用 nginx 进行热部署操作,重新加载nginx后,正在工作的worker会工作完再去加载新的配置,而空闲的worker会跟着一起重新加载
(2)每个 woker 是独立的进程,如果有其中的一个 woker 出现问题,其他 woker 独立的,继续进行争抢,实现请求过程,不会造成服务中断

4、设置多少个 woker 合适
worker 数和服务器的 cpu 数相等是最为适宜的

5、连接数 worker_connection

第一个问题:发送请求,占用了 woker 的几个连接数?
答案:2 或者 4 个

第二个问题:nginx 有一个 master,有四个 woker,每个 woker 支持最大的连接数 1024,支持的最大并发数是多少?

  • 普通的静态访问最大并发数是: worker_connections * worker_processes /2
  • 而如果是 HTTP 作 为反向代理来说,最大并发数量应该是 worker_connections * worker_processes/4。

在这里插入图片描述


http://chatgpt.dhexx.cn/article/h8lniNcy.shtml

相关文章

Nginx学习(一)

系统版本CentOS Linux release 7.6.1810 (Core) Nginx作用 反向代理正向代理负载均衡HTTP服务器(包含动静分离) 环境确认 1.关闭iptables规则 如果启动的iptables防火墙不想关闭的话,可以通过iptables -F 来清除防火墙关闭。然后通过iptables -L查看 2.停用seli…

NGINX学习记录-基础入门篇

学习《NGINX 经典教程》林静,刘旭峰,章澍,廖健雄,宗兆伟 ... 著 目录 一、Nginx优点 二、功能(应用场景) 反向代理。 负载均衡 静态缓存 Web服务器 安全和访问控制 三、nginx安装 四、启动、停止和重载nginx 五、配置文…

Nginx学习总结(1):Nginx简介

(最近,部门组织了好几个技术兴趣小组,对当前的热门技术进行研究。我加入了Nginx学习小组,与几个同事一道围绕Nginx来进行研究和学习。从今天起,我会陆陆续续发一系列有关Nginx的学习总结。本文是系列之一:Nginx简介。)…

学习nginx

Nginx笔记 安装nginxwget -c https://nginx.org/download/nginx-1.20.1.tar.gz1、创建软链路ls /usr/local/nginx/sbin/nginx /usr/bin/ 2、前端部署配置 Conf 在这里插入图片描述 3、启动服务 由于软链路 可以直接 nginx 启动(任意目录) 停止 nginx -s…

nginx学习日记

nginx介绍 1.什么是nginx? nginx就是c语言开发的一个高性能HTTP和反向代理Web服务器以及电子邮件(IMAP/POP3)代理服务器 nginx是轻量级的。 2.什么是反向代理? 代理服务可以简单的分为正向代理和反向代理。 正向代理:就是代理…

Nginx学习笔记总结:初次认识 Nginx

2022 年 4月 16 日 百思不得小赵 🔍点此进入博客主页 —— 新时代的农民工 🙊 —— 换一种思维逻辑去看待这个世界 👀 今天是加入CSDN的第1141天。觉得有帮助麻烦👏点赞、🍀评论、❤️收藏啦。 概述 Nginx是一个高性能…

Nginx服务器学习

学习思维导图 Nginx服务架构说明 Nginx采用master-worker的架构,和tomacat的按路径匹配一个节点线程进行处理方式不同,Nginx是直接让worker来先抢夺资源也就是请求,然后在去处理,每个worker保持为一个独立的进程。 Nginx服务的实际…

nginx学习,看这一篇就够了

nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件,很全_冯安晨-CSDN博客_nginx 代理 文件下载文章目录前言一、nginx简介1. 什么是 nginx 和可以做什么事情2.Nginx 作为 web 服务器3. 正向代理4…

Nginx学习+安装

目录 一、Nginx介绍 二、Nginx下载和安装 1.安装过程 三、了解目录结构 小知识点:树形结构目录展示 四、常用命令 五、配置文件结构 六、具体应用 1.部署静态资源 2.反向代理 了解正向代理 反向代理 3.负载均衡 重中之重:更详细的内容可以访…

Nginx学习与安装

Nginx学习与安装 一、Nginx介绍二、Nginx 安装2.1 安装 pcre-8.44.tar.gz2.2 安装openssl与zlib2.3 安装nginx2.4 Nginx 命令 Nginx 配置文件 一、Nginx介绍 是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器。Nginx以事件驱动的方式编写…

手把手学习nginx基本配置

相信很多人都听过nginx,这个小巧的东西慢慢地在吞食apache和IIS的份额。那究竟它有什么作用呢?可能很多人未必了解。 说到反向代理,可能很多人都听说,但具体什么是反向代理,很多人估计就不清楚了。摘一段百度百科上的描…

Nginx学习整理|入门记录

目录 1. Nginx概述 1.1 Nginx介绍 1.2 Nginx下载和安装 1.3 Nginx目录结构 2. Nginx命令 3. Nginx配置文件结构 4. Nginx具体应用 4.1 部署静态资源 4.2 反向代理 4.3 负载均衡 1. Nginx概述 1.1 Nginx介绍 Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件…

nginx学习总结

简介 静态资源服务器,反向代理,负载均衡等,这些场景下,nginx无处不在。但是本人是在解决单个tomcat承受不了并发量的前提下,才走进的nginx。以下都是个人的总结,如果有不对的话,可以指出来&…

Nginx入门学习

Nginx快速入门 Nginx快速入门,了解什么是Nginx,正向代理,反向代理,负载均衡的概念,学会Nginx的安装和常用的命令,并且能实际场景应用Nginx 什么是Nginx? Nginx (engine x) 是一个高性能的HTTP和…

Nginx学习

目录 1. Nigix简介1.1 什么是 Nginx?1.2 Nginx的作用?1.3 正向代理和反向代理1.4 Windows上安装Nginx1.5 Linux上安装Nginx 2. Nginx常用命令docker 部署nginx 1. Nigix简介 1.1 什么是 Nginx? Nginx是一个高性能的HTTP和反向代理web服务器(随着客户…

Nginx教程(小白必看,看了必会,不看血亏),

Notice 测试请打开浏览器禁止缓存 Notice:再使用前,请打开浏览器 F12 然后网络 然后点禁用缓存,避免nginx配置后磁盘缓存的情况。而且,请确认host没问题。 备注:你本地设置的host对服务器反向代理后的就没用了 一、介绍 概述 Nginx是lgor…

学习Nginx,看完这篇超详细的文章就够了

目录 本文简介一、Nginx的基本概念1.1、Nginx是什么?1.2、Nginx能帮助我们做些什么?1.3、Nginx的特性 二、Nginx的安装2.1、环境介绍2.2、安装Nginx2.3、Docker安装运行Nginx 三、Nginx的常用命令介绍3.1、操作Nginx【Centos6和7通用】3.2、命令总结 四、…

html img调用js,html调用js变量 如何在html中输出js文件中的变量

html页面代码中怎么调用js变量?html页面代码中怎么调用js变量,例如 在html代码中插入js代码: a=取浏览你把index1.js 中的onReady 去掉,把index1.js改成 function index1() { 请确定他们在一个文件夹下,然后就可以直接调用了 直接把两段代码合并 。 希望能给你帮助。 要实现…

如何在html中使用js

1.使用script标签&#xff0c;将js代码写入标签(html和js没有分离) 在 HTML 中&#xff0c;JavaScript 代码必须位于 <script> 与 </script> 标签之间。 <script>console.log(Number.MAX_VALUE)var s hello worldvar n 10var u undefinedvar l nullvar …

html中script相互调用,HTML调用JavaScript

仅使用HTML和CSS创建动态网页很困难。例如&#xff0c;仅使用CSS是无法很好完成下拉菜单和滑入式页面的&#xff0c;这是一项很难的技术。此时就需要使用JavaScript&#xff0c;那么如何在HTML中调用JavaScript&#xff1f;下面本篇文章就来给大家介绍一下在HTML中调用JavaScri…