• nginx常用指令、方向代理、负载均衡、动静分离、高可用实例


    常用命令

    使用nginx操作命令前提条件:进入nginx目录中 usr/local/nginx/sbin

    1.启动nginx
    ./nginx

    2.关闭nginx
    ./nginx -s stop

    3.重新加载nginx
    ./nginx -s reload
    4.查看版本号
    ./nginx -v

    linux开启防火墙端口指令
    firewall-cmd --zone=public --add-port=8081/tcp --permanent
    开放8081tcp端口
    开放后需要重启防火墙 firewall-cmd --reload
    查看端口:firewall-cmd --list-all

    nginx配置文件

    位置:在nginx/conf/nginx.conf
    nginx配置文件中有三部分
    1.全局快
    从配置文件开始到events块之间的内容 主要会设置一些影响nginx服务器整体运行的配置指令
    比如 worker processes 1:值越大 可以支持的并发处理量越多
    2.events块
    主要影响nginx和用户网络的连接
    比如 worker connections 支持的最大连接数
    3.http块
    nginx服务器配置中最频繁的部分 代理 缓存和日志定义等绝大多数功能和第三方模块都在这里
    http块包括http全局块和server块
    3.1http全局块
    http 全局块配置的指令包括文件引入、MIME-TYPE 定义、日志自定义、连接超时时间、单链接请求数上限等。
    3.2server块
    与虚拟主机有密切联系
    每个 http 块可以包括多个 server 块,而每个 server 块就相当于一个虚拟主机。

    而每个 server 块也分为全局 server 块,以及可以同时包含多个 locaton 块。

    反向代理实例

    1.实例一

    1.修改nginx.conf配置文件
    server快中 server_name 改为IP地址 192.168.145.129
    在这里插入图片描述
    location中添加转发路径
    在这里插入图片描述

    2.实例二

    使用nginx反向代理,根据访问的路径跳转到不同端口的服务中
    nginx监听端口为9001
    1.准备工作
    准备两个tomcat 一个8080 一个8081
    在usr/src 中创建两个文件夹:tomcat8080 tomcat8081 分别在两个文件夹中放入tomcat安装包 解压 并启动

    进入tomcat8081中的conf中 修改server.xml配置:

    8005改为8015:
    在这里插入图片描述

    8080改8081:
    在这里插入图片描述
    2.创建测试页面和文件夹
    分别在两个文件夹中的webapps中创建edu文件夹和vod文件夹 edu、vod中放一个可以区别两个tomcat 的html页面
    3.修改配置
    在这里插入图片描述
    监听端口号为9001
    如果路径包含edu 到8080端口
    如果路径包含vod 到8081端口

    location指令说明:
    该指令用于匹配url
    在这里插入图片描述

    1、= :用于不含正则表达式的 uri 前,要求请求字符串与 uri 严格匹配,如果匹配成功,就停止继续向下搜索并立即处理该请求。
    2、~:用于表示 uri 包含正则表达式,并且区分大小写。
    3、~:用于表示 uri 包含正则表达式,并且不区分大小写。
    4、^~:用于不含正则表达式的 uri 前,要求 Nginx 服务器找到标识 uri 和请求字符串匹配度最高的 location 后,立即使用此 location 处理请求,而不再使用 location 块中的正则 uri 和请求字符串做匹配。
    注意:如果 uri 包含正则表达式,则必须要有 ~ 或者 ~
    标识。

    开放需要的端口 重启nginx
    edu被转发到8080端口
    在这里插入图片描述
    vod被转发到8081端口
    在这里插入图片描述

    负载均衡实例

    实现效果:
    浏览器地址输入 192.168.145.130/edu/success.html 把请求平均分配到8080和8081

    在两个tomcat的webapps中 创建edu文件夹
    进行负载均衡配置
    在nginx.conf中

    在http块中添加upstream
    在这里插入图片描述

    修改location里的proxy_pass
    在这里插入图片描述

    重启nginx

    第一次进入 8081
    在这里插入图片描述
    刷新 变成8080
    在这里插入图片描述

    负载均衡分配策略

    1.轮询(默认)
    按时间顺序平均分配到不同服务器 服务器宕机 会被自动剔除
    2.weight
    weight代表权重,默认为1,权重越高被分配的客户端越多,适用于服务器性能不均的情况
    在这里插入图片描述
    3.ip_hash

    每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器,可以解决 session 的问题
    在这里插入图片描述
    4.fair
    按后端服务器的响应时间来分配请求,响应时间短的优先分配
    在这里插入图片描述

    动静分离实例

    1.准备工作
    创建data目录 里面创建www image目录
    在image里加入success.html image里加入p1.jpg
    2.配置nginx

    location后加 /www/ root后加/data/
    在这里插入图片描述
    同样添加另一个location autoindex on是开启目录浏览下载功能
    在这里插入图片描述
    输入image路径,会出现下载目录:
    在这里插入图片描述
    输入图片路径 直接访问图片
    在这里插入图片描述

    高可用实例

    在这里插入图片描述
    需要有两台nginx服务器来保证高可用 一台主服务器,一台备用服务器
    1.准备工作
    1.两台服务器
    2.在两台服务器安装keepalived
    yum install keepalived -y
    2.开始配置(修改keepalived配置文件)
    配置文件位置:/etc/keepalived/keepalived.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.145.130
       smtp_connect_timeout 30
       router_id LVS_DEVEL
       vrrp_skip_check_adv_addr
       vrrp_strict
       vrrp_garp_interval 0
       vrrp_gna_interval 0
    }
    vrrp_script chk_http_port {
    script "/usr/local/src/nginx_check.sh"
    interval 2	#(检测脚本执行的间隔)			
    	weight 2		
    	}		
    
    vrrp_instance VI_1 {
        state MASTER                         #备份服务器改为BACKUP
        interface ens33                       #网卡
        virtual_router_id 51    #主备机必须相同
        priority 100                    #  主从机采取不同优先级 主机大 备机小
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
            192.168.145.50                     
        }
    }
    
    
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42

    配置详解:
    router_id LVS_DEBELBACK #访问到主机 LVS_DEVELBACK是主机名字 在etc/host 中可以查看
    vrrp_script chk_http_port 检测脚本配置
    advert_int 1 心跳频率 每过一秒检测是否活着

    从服务器基本一样 就是把state改成backup priprity改小
    在两个服务器/usr/local/src/nginx_check.sh添加nginx_check.sh文件,内容:

    #!/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
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    进入虚拟路径,出现nginx画面
    在这里插入图片描述

    在linux输入 ip a指令
    在这里插入图片描述

    此处说明已绑定到192.168.145.50

    关闭主机的keepalived和nginx
    再次进入192.168.145.50
    在这里插入图片描述
    仍然可以进入

  • 相关阅读:
    python LeetCode 刷题记录 83
    Fastjson tomcat-dhcp链
    【网安大模型专题10.19】论文4:大模型+自动生成代码评估:改进自动化测试方法、创建测试输入生成器、探索新的评估数据集扩充方法,提高编程基准的精度
    sql 11
    探讨Cesium多边形内取点问题
    JVM内存和垃圾回收-14.垃圾回收相关概念
    飞行态势知识图谱及其问答系统的构建方法
    95-Java的对象序列化、反序列化
    微服务面试题
    2023-09-04 mysql-代号m-并发控制-整体方向-设计
  • 原文地址:https://blog.csdn.net/qq_56892136/article/details/126373488