• Nginx三大常用功能“反向代理,负载均衡,动静分离”


    注意:以下案例在Windows系统计算机作为宿主机,Linux CentOS 作为虚拟机的环境中实现

    一,Nginx配置实例-反向代理

    1.反向代理 案例一

    实现效果:使用nginx反向代理,访问 www.123.com 直接跳转到127.0.0.1:8080

    准备工作
    1. 启动一个 tomcat
      linux系统安装tomcat;将tomcat安装文件放到liunx系统/opt中,解压;进入tomcat的bin目录中,./startup.sh启动tomcat服务器 ,使用默认端口8080

    2. linux本机访问:localhost:8080

    3. windows系统中通过浏览器访问tomcat服务器,注意防火墙或开放端口

    4. 映射域名,通过修改本地 C:/Windows/System32/drivers/etc/hosts 文件,将www.123.com映射到 192.168.137.129
      在这里插入图片描述

    5. 配置完成之后,访问www.123.com:8080
      现在,我们如何做到访问 www.123.com 便可以跳转到 Tomcat初始界面呢?
      这里就要用到 Nginx的反向代理
      nginx.conf 配置文件中增加如下配置:
      在这里插入图片描述

    2.反向代理 案例二

    实现效果:使用nginx反向代理,根据访问的路径跳转到不同端口服务

    nginx监听端口为9000
    访问 http://127.0.0.1:9000/edu/ 直接跳转到127.0.0.1:8080
    访问http://127.0.0.1:9000/vod/ 直接跳转到127.0.0.1:8081

    准备工作

    第1步,准备两个tomcat,一个8080端口,一个8081端口,并准备好测试的页面
    webapps/edu/index.html 页面内容:8080!!
    webapps/vod/index.html 页面内容:8081!!
    由于一个ip服务器上启动两个tomcat,端口不能相同。所以,需要修改端口:22行8005->9005;69行8080->8081;

    第2步,修改nginx的配置文件,在http块中添加server{}
    在这里插入图片描述
    访问测试:
    在这里插入图片描述
    在这里插入图片描述

    这里对location指令做一下说明:
    该指令用于匹配 URL。
    语法如下:
    在这里插入图片描述

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

    二,Nginx配置实例-负载均衡

    实现效果

    浏览器地址栏输入地址 http://192.168.137.129/edu/a.html,负载均衡效果,将请求平均分配到80808081两台服务器上。

    准备工作

    (1)准备两台tomcat服务器,一台8080,一台8081
    (2)在两台tomcat里面webapps目录中,创建名称是edu文件夹,在edu文件夹中创建页面a.html(让a.html内容不一样,查看效果),用于测试

    负载均衡配置

    upstream称为上游服务器,即真实处理请求的业务服务器。
    在这里插入图片描述
    在这里插入图片描述

    nginx分配服务器策略

    随着互联网信息的爆炸性增长,负载均衡(load balance)已经不再是一个很陌生的话题,顾名思义,负载均衡即是将负载分摊到不同的服务单元,既保证服务的可用性,又保证响应足够快,给用户很好的体验。快速增长的访问量和数据流量催生了各式各样的负载均衡产品,很多专业的负载均衡硬件提供了很好的功能,但却价格不菲,这使得负载均衡软件大受欢迎,nginx就是其中的一个,在linux下有Nginx、LVS、Haproxy等等服务可以提供负载均衡服务,而且Nginx提供了几种分配方式(策略):

    1. 轮询(默认)

    每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
    在这里插入图片描述

    2. weight

    weight代表权,重默认为1,权重越高被分配的客户端越多
    指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。 例如:

    upstream server_pool{   
    server 192.168.10.1 weight=1;    
    server 192.168.10.2 weight=2; 
    server 192.168.10.3 weight=3;   
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    3. ip_hash

    每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。 例如:

    upstream server_pool{   
    ip_hash;    
    server 192.168.10.1:80;   
    server 192.168.10.2:80;  
    server 192.168.10.3:80;  
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述

    4. fair(第三方)

    按后端服务器的响应时间来分配请求,响应时间短的优先分配。

    upstream server_pool{   
    server 192.168.10.1:80;    
    server 192.168.10.2:80;
    server 192.168.10.3:80;
    fair;    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    5. 其他参数

    在这里插入图片描述

    三,Nginx配置实例-动静分离

    Nginx 动静分离简单来说就是把动态请求静态请求分开,Nginx 处理静态请求,Tomcat处理动态请求。
    动静分离从目前实现角度来讲大致分为两种:

    • 一种是纯粹把静态文件独立成单独的域名,放在独立的服务器上,也是目前主流推崇的方案;
    • 另外一种方法就是动态跟静态文件混合在一起发布,通过 nginx 来分开。
      通过 location 指定不同的后缀名实现不同的请求转发。

    准备

    项目静态资源准备
    在这里插入图片描述
    在这里插入图片描述

    nginx配置

    找到nginx安装目录,打开/conf/nginx.conf配置文件
    在这里插入图片描述
    添加监听端口、访问服务名字;重点是添加location;
    最后检查 Nginx 配置是否正确即可,然后测试动静分离是否成功。

    测试一

    (1)浏览器中输入地址:http://192.168.137.129/image/01.jpg

    • 因为配置文件中设置了autoindex on,所以通过访问目录时可以列出该目录问题。注意:文件路径的斜线
      在这里插入图片描述
      在这里插入图片描述

    (2)在浏览器地址栏输入地址:http://192.168.137.129/www/a.html
    在这里插入图片描述

    测试二

    (1)如果开启反向代理,访问tomcat动态资源jsp,jsp中引用的静态资源可以从nginx服务器中进行加载。
    在这里插入图片描述

    (2)建立jsp部署到tomcat8080/webapps/edu目录下;tomcat8081/webapps/edu目录下

    jsp内容如下
    123
    在这里插入图片描述

    (3)测试结果

    测试
    在这里插入图片描述
    在这里插入图片描述
  • 相关阅读:
    基于Python的高校网络课程数据分析
    ROS 多机器人导航RVIZ环境的配置
    SQL SERVER Inregration Services-OLE DB、Oracle和ODBC操作
    micro-app 研究-提前准备
    Zabbix使用手册
    WPF界面设计工具---Blend学习(一)
    小程序中如何划分会员级别以及不同级别不同积分累计、折扣、返佣、升级条件等
    [软件安装]anaconda安装
    JavaScript中常用的输入输出语句介绍
    SHAP(一):使用 XGBoost 预测英雄联盟获胜
  • 原文地址:https://blog.csdn.net/weixin_52828297/article/details/137242995