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;   
}

在这里插入图片描述

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;  
}

在这里插入图片描述

4. fair(第三方)

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

upstream server_pool{   
server 192.168.10.1:80;    
server 192.168.10.2:80;
server 192.168.10.3:80;
fair;    
}
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)测试结果

测试
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/511492.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

HBase(超级无敌详细PROMAX讲解版)

简介 概述 图-1 HBase图标 HBase原本是由Yahoo!公司开发的后来贡献给了Apache的一套开源的、基于Hadoop的、分布式的、可扩展的非关系型数据库(Non-Relational Database),因此HBase不支持SQL(非关系型数据库基本上都不支持SQL),而是提供了一套单独的命…

RESTful规范总结

概念:RESTful(Representational State Transfer 的缩写)是一种广泛使用的API架构风格。 1.资源:在REST API的设计中,首先需要面向资源建模,其中每个节点是是一个简单资源或集合资源。 1.1一个集合包含相同…

Error: TF_DENORMALIZED_QUATERNION: Ignoring transform forchild_frame_id

问题 运行程序出现: Error: TF_DENORMALIZED_QUATERNION: Ignoring transform for child_frame_id “odom” from authority “unknown_publisher” because of an invalid quaternion in the transform (0.0 0.0 0.0 0.707) 主要是四元数没有归一化 Eigen::Quatern…

Redis常用命令补充和持久化

一、redis 多数据库常用命令 1.1 多数据库间切换 1.2 多数据库间移动数据 1.3 清除数据库内数据 二、redis高可用 2.1 redis 持久化 2.1.1 持久化的功能 2.1.2 持久化的两种方式 2.1.2.1 RDB 持久化 2.1.2.2 AOF 持久化 2.1.2.3 RDB和AOF的优缺点 三、小结 一、r…

JUC:double-checked locking(DCL) 懒汉单例模式

文章目录 double-checked locking(DCL) 问题解决方法 volatile作用 double-checked locking(DCL) 问题 第一个if用于后续进入的线程,不用再获取锁来判断是否已经创建了对象。第二个if,为的是第一个进入的线程创建对象,以及防止卡在第一个if之…

vscode shadertoy插件,非常方便的glsl着色器编写工具

很著名的shadertoy网站,集合了非常多大神利用数学写出美妙的shader效果。像shadertoy创始人之一的IQ大神它在这方面有很多的建树。他的利用光线步进和躁声可以创建很多不可思议的3D场景。 vscode有一件shadertoy的插件,安装后可以新建一个*.glsl文件&am…

JavaScript实现全选、反选功能(Vue全选、反选,js原生全选、反选)

简介: 在JavaScript中,实现全选和反选通常是通过操作DOM元素和事件监听来实现; 全选功能:当用户点击一个“全选”复选框时,页面中所有具有相同类名的复选框都将被选中; 反选功能:用户点击一个…

蓝桥杯刷题-四平方和

四平方和 代码: from copy import deepcopy n int(input()) maxn int(5e6) 10 dic dict() for a in range(maxn):if a * a > n:breakfor b in range(a,maxn):if a * a b * b > n:breakif dic.get(a*ab*b) is None:dic[a*ab*b] (a,b) ans [maxn for _ …

klipper源码分析之TMC步进电机驱动

步进电机驱动芯片常用的有tmc2208和tmc2209,这2种芯片都支持STEP/DIR模式和UART单线模式,STEP/DIR模式比较简单,软件无法动态修改寄存器,而UART模式可以修改。这2种模式printer.cfg配置也不一样,更多的参考请查看官方文…

Transformer - Positional Encoding 位置编码 代码实现

Transformer - Positional Encoding 位置编码 代码实现 flyfish import torch import torch.nn as nn import torch.nn.functional as F import os import mathclass PositionalEncoding(nn.Module):def __init__(self, d_model, dropout, max_len5000):super(PositionalEnco…

ArcGis研究区边界提取

ArcGis研究区边界提取 *0* 引言*1* 有的步骤0 引言 GRACE数据处理前要先确定研究范围,而大多情况下所选的研究区都是有特殊意义的,比如常年干旱、经济特区、降水丰富等,这些区域往往有精确的边界,那就要从大的区块中将研究范围抠出来,获取相应坐标,以量化区域重力变化。那…

基于MiniExcel的三种常用导出Excel方法(固定列导出、动态列导出、按模板导出)

为了方便代码编写和测试,把很多代码都放在一个class里面,实际开发根据需要放到对应的目录下即可。 1.使用nuget下载安装miniexcel; 2.编写对应的测试接口,具体代码如下: using Microsoft.AspNetCore.Authorization; using Micr…

etcdctl配置

下载etcdctl压缩文件 wget https://github.com/etcd-io/etcd/releases/download/v3.5.0/etcd-v3.5.0-linux-amd64.tar.gztar -xvf etcd-v3.5.0-linux-amd64.tar.gzsudo mv ./etcd-v3.5.0-linux-amd64/etcdctl /usr/local/bin/ chmod x /usr/local/bin/etcdctl 配置etcdctl 配…

路由器拨号失败解决方法

目录 一、遇到问题 二、测试 三、解决方法 (一)路由器先单插wan口设置 (二)mac地址替换 (三)更改路由器DNS 一、遇到问题 1 .在光猫使用桥接模式,由路由器进行拨号的时候,出现…

网络播放解码器 SIP-7102网络音频解码播放器

网络播放解码器 SIP-7102网络音频解码播放器 SIP-7102是一款支持SIP协议的网络音频解码播放器,具有10/100M以太网接口,其接收网络的音频数据,通过设备的DSP及放大电路,可以直接连接两路15W的扬声器。可以用于公共广播、报警系统、…

CSS 清除浮动

浮动副作用 当元素设置float浮动后,该元素就会脱离文档流并向左/向右浮动。浮动也会产生一些问题,所以在使用的时候还需要清除浮动,这样操作起来还是很麻烦的,在没有浮动的时候就不要乱使用,因为还需要清除掉&#xff…

windows系统kafka小白入门篇——下载安装,环境配置,入门代码书写

目录 1. kafka 下载 2. 修改配置文件 2.1 文件夹内容 2.2 创建一个 data 空文件夹 2.3 修改 zookeeper.properties 配置文件 2.4 修改 server.properties 配置文件 2.5 创建 "zk.cmd" windows脚本文件 2.6 创建 "kfk.cmd" windows脚本文件 3. 启动…

docker搭建CI/CD环境配置过程中的常见问题

一、Jenkins 1、pull镜像问题 docker pull jenkins/jenkins:lts Using default tag: latest Trying to pull repository docker.io/library/centos ... Get https://registry-1.docker.io/v2/library/centos/manifests/latest: Get https://auth.docker.io/token?scoperepo…

小剧场短剧影视小程序源码,附带系统搭建教程

安装教程 linux/win任选 PHP版本:7.3/7.2(测试时我用的7.2要安装sg扩展 不会的加QQ295526639) 批量替换域名http://video.owoii.com更换为你的 批量替换域名http://120.79.77.163:1更换为你的 这两个都替换你的 /extend/yzf/lib/epay.config.…

论文笔记 - :DIGGING INTO OUTPUT REPRESENTATION FOR MONOCULAR 3D OBJECT DETECTION

Title: 深入研究单目 3D 物体检测的输出表示 Abstract 单目 3D 对象检测旨在从单个图像中识别和定位 3D 空间中的对象。最近的研究取得了显着的进展,而所有这些研究都遵循基于 LiDAR 的 3D 检测中的典型输出表示。 然而,在本文中,我们认为…