Nginx基础知识(个人总结)

    声明: 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
  • 3
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值