Nginx基础知识(个人总结)

2023-11-16

    声明: 1. 本文为我的个人复习总结, 并那种从零基础开始普及知识 内容详细全面, 言辞官方的文章
              2. 由于是个人总结, 所以用最精简的话语来写文章
              3. 若有错误不当之处, 请指出

  • Nginx C语言编写, 战斗民族俄罗斯人所创, 是高性能的 HTTP 和反向代理的Web服务器,处理高并发能力是十分强大的,,有报告表明能支持高达 50,000 个并发连接数

  • 启动与关闭:

    cd /usr/local/nginx/sbin

    ​ ./nginx -v

    ​ ./nginx

    ​ ./nginx -s stop

​ ./nginx -s reload

  • 配置文件:

    cd /usr/local/nginx/conf/nginx.conf

    1. 全局块:配置服务器整体运行的配置指令
      比如 worker_processes 2 worker个数,建议分配和CPU核数一样的数量
    2. events 块:影响 Nginx 服务器与用户的网络连接
      比如 worker_connections 1024 支持的最大连接数为 1024
    3. http 块:
      还包含两部分:http 全局块与server 块
  • 三大作用: 反向代理, 负载均衡, 动静分离

1. 反向代理

  • 反向代理配置

    在这里插入图片描述

2. 负载均衡

  • 负载均衡配置

    在这里插入图片描述

  • 负载均衡策略

    • 第一种 轮询(默认)
      每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除
    • 第二种 weight
      weight 代表权重默认为 1,权重越高被分配的客户端越多
    • 第三种 ip_hash
      每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器
    • 第四种 fair(第三方)
      按后端服务器的响应时间来分配请求,响应时间短的优先分配。

3. 动静分离

  1. 动静分离请求图示:

    在这里插入图片描述

  • 静态资源配置

    在这里插入图片描述

    • index index.html index.php 代表首页展示,第一个找不到的话会去找第二个
    • Nginx默认是不允许列出整个目录的
      • autoindex on; 显示整个目录(有…,像Linux一样)
      • autoindex_exact_size off; 默认为on,单位是bytes; 改为off后,单位是kB或者MB或者GB
      • autoindex_localtime on; 默认为off,显示的文件时间为GMT时间。
  1. 通过 location 指定不同的后缀名实现不同的请求转发。

​ location匹配规则

​ ~ 正则匹配, 区分大小写

​ ~* 正则匹配, 不区分大小写
​ ^~ 精确匹配, 如果该选项匹配,只匹配该选项,不匹配别的选项
​ = 精确匹配, 这个不匹配其他人还有机会
​ @ 定义一个命名的 location,使用在内部定向时,例如 error_page, try_files

​ 优先级: = > ^~ > ~ ~*

  1. 通过 expires 参数设置,可以使浏览器缓存过期时间。
    是给一个资源设定一个过期时间,也就是说无需去服务端验证,直接通过浏览器自身确认是否过期即可,所以不会产生额外的流量。

    此种方法非常适合不经常变动的资源。

    例如设置 3d,表示在这 3 天之内访问这个 URL, 发送一个请求,比对服务器该文件最后更新时间没有变化。

    • 如果没变则不会从服务器抓取, 返回状态码 304;
    • 如果有修改则直接从服务器重新下载,返回状态码 200

4. Nginx原理

1、一个Nginx的 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,支持的最大并发数是多少?
    答案: 普通的静态访问最大并发数是: worker_connections * worker_processes /2

​ 而如果是 HTTP 作 为反向代理来说,最大并发数量应该是 worker_connections * worker_processes/4

5. Nginx集群

​ 对外暴漏同网段虚拟ip(相当于用户访问虚拟ip再访问真实ip,对真实ip的一种隐藏)

​ 下载keepalived用来管理集群(定时检测宕机的,进行主从(MASTER BACKUP)的管理)

  1. 打开/etc/keepalived/keepalivec.conf

global_defs {

notification_email {

acassen@firewall.loc

failover@firewall.loc

sysadmin@firewall.loc

}

notification_email_from Alexandre.Cassen@firewall.loc

smtp_server 192.168.17.129

smtp_connect_timeout 30

router_id LVS_DEVEL #唯一的, 127.0.0.1 LVS_DEVEL是提前配好的对应127.0.0.1

}

vrrp_script chk_http_port {

script “/usr/local/src/nginx_check.sh”

interval 2 #(检测脚本执行的间隔)

weight 2

}

vrrp_instance VI_1 {

state BACKUP # 备份服务器上将 MASTER 改为 BACKUP

interface ens33 //网卡

virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同

priority 90 # 主、备机取不同的优先级,主机值较大,备份机值较小

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.17.50 // VRRP H 虚拟地址

}

}

  1. 在/usr/local/src 添加检测脚本
#!/bin/bash
A=`ps -C nginx –no-header |wc -l`
if [ $A -eq 0 ];
	then /usr/local/nginx/sbin/nginx
	sleep 2
	if [ `ps -C nginx --no-header |wc -l` -eq 0 ];
		then killall keepalived
	fi
fi
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Nginx基础知识(个人总结) 的相关文章

随机推荐

  • 「学习笔记」torchvision.datasets.MNIST 参数解读/中文使用手册

    DataLoader使用手册 参数解读 PyTorch torch utils data DataLoader 中文使用手册 官方手册如下 torchvision datasets MNIST root train True transfo
  • vue开发:前端项目模板

    简介 vue cli创建vue项目 整合vuex vue router axios element ui 项目模板下载地址 创建项目 Java 前端项目合集 使用vue cli创建项目 功能选择 Babel Router vuex Lint
  • HJ67 24点游戏算法

    问题描述 给出4个1 10的数字 通过加减乘除 得到数字为24就算胜利 输入 本题含有多组样例输入 4个1 10的数字 数字允许重复 但每个数字仅允许使用一次 测试用例保证无异常数字 输出 true or false 示例 输入 7 2 1
  • CRC的基本原理详解

    CRC Cyclic Redundancy Check 被广泛用于数据通信过程中的差错检测 具有很强的 检错能力 本文详细介绍了CRC的基本原理 并且按照解释通行的查表算法的由来的思路介绍 了各种具体的实现方法 1 差错检测 数据通信中 接
  • mybatisplus多条件并列复杂查询

    在使用mybatisPlus时 有时需要一些负责的sql条件拼接 这时 我们可以利用 QueryWrapper的and Consumer consumer 和 or Consumer consumer 来对条件进行拼接 查询条件拼接 例如
  • 配置AOP时报错:java.lang.ClassCastException: com.sun.proxy.$Proxy2 cannot be cast to

    报错 Exception in thread main java lang ClassCastException com sun proxy Proxy2 cannot be cast to 看报错信息 显示的是动态代理生成的类无法转换到我
  • navigator.geolocation.getCurrentPosition 获取位置偏移

    navigator geolocation getCurrentPosition function position 获取当前位置成功返回 经度 coords longitude 纬度 coords latitude 准确度 coords
  • 前端Vue模板页面(组件最全)

    https github com PanJiaChen vue element admin 这里是一个真诚的 青年技术交流QQ群 761374713 不管你是大学生 社畜 想学习变成的其他人员 欢迎大家加入我们 一起成长 一起进步 真诚的欢
  • Centos7 安装 Docker Compose

    目录 一 Docker Compose 简介 二 环境准备 三 安装 四 验证 五 问题解决 一 Docker Compose 简介 Compose 是用于定义和运行多容器 Docker 应用程序的工具 通过 Compose 您可以使用 Y
  • 九、JDK1.8—并行流与串行流

    并行流 并行流就是把一个内容分成多个数据块 并用不同的线程分 别处理每个数据块的流 Java 8 中将并行进行了优化 我们可以很容易的对数据进行并 行操作 Stream API 可以声明性地通过 parallel 与 sequential
  • web自动化测试工具之Selenium的使用

    Selenium的使用 Selenium 概述 工作原理 应用场景 安装浏览器驱动 基本使用 安装Selenium模块 注意点 使用分析 代码实现 常见方法 driver对象 定位标签元素与获取标签对象 获取文本内容与属性值 使用无界面浏览
  • Oracle 【直接加载(sqlldr direct=true)】全方位解析与性能优化[2]

    3 比较direct方式使用并行和非并行选项的性能差异 数据文件 leo test data 100000记录 控制文件 leo test ctl 日志文件 leo test log 串行直接加载sqlload sqlldr userid
  • VC++ MapWinGis篇(一)

    添加高德图层 AMapProvider h pragma once include BaseProvider h class ABaseProvider public BaseProvider public ABaseProvider La
  • What time is it?【模拟】

    题目链接 POJ 1676 题意 给你两个时间点 前一个时间点比后一个时间点快了15分钟 当然 也有可能是隔天的 现在要问是否唯一确定第一个时间 输入坑点 两个时间之间用一个空格隔开 所以一行一共可以有25个字符 我们可以枚举00 00 2
  • ABAP doi 导出程序

    PERFORM FRM OUTPUT EXCEL 38 TABLES GT RESULT USING ZHRPA038 LDF PATH FORM FRM OUTPUT EXCEL 38 TABLES PT EXCEL TYPE STAND
  • css如何让两个div上下排列_深入了解CSS层叠上下层

    1 要想理解层叠上下层 首先要先从文档流和盒模型说起 文档流 在CSS中 文档流是一个很基础也是很重要的一个概念 很多时候她被称为Document Flow 但在CSS的标准被称为Normal Flow 即普通流或常规流 大家更喜欢称之为文
  • 基于MATLAB粒子群算法求解单目标优化问题

    基于MATLAB粒子群算法求解单目标优化问题 在实际应用中 优化问题是非常常见的一类问题 而对于单目标优化问题 粒子群算法是目前被广泛采用的一种优化算法 通过对分布在搜索空间中的粒子进行适应度评估和位置调整 粒子群算法可以在较短时间内找到全
  • uniapp开发微信小程序与H5的区别(Vue)

    1 微信小程序中父组件监听子组件的事件 子组件的 listeners拿不到事件 2 微信小程序中event stopPropagation 没用 只能用vue指令的 stop来阻止 3 vue开发网页的时候 一般对于不需要响应式的数据我们可
  • python flask框架下登录注册界面_Python-用户登录 Flask-Login

    用户登录功能是 Web 系统一个基本功能 是为用户提供更好服务的基础 在 Flask 框架中怎么做用户登录功能呢 今天学习一下 Flask 的用户登录组件 Flask Login Python 之所以如此强大和流行 除了本身易于学习和功能丰
  • Nginx基础知识(个人总结)

    声明 1 本文为我的个人复习总结 并非那种从零基础开始普及知识 内容详细全面 言辞官方的文章 2 由于是个人总结 所以用最精简的话语来写文章 3 若有错误不当之处 请指出 Nginx C语言编写 战斗民族俄罗斯人所创 是高性能的 HTTP