location和重定向、代理

news2024/12/15 0:39:41

location匹配的规则和优先级

在nginx当中,匹配的对象一般是URI来匹配

http://192.168.233.62/usr/local/nginx/html/index.html

182.168.233.61/

location匹配的分类:

多个location一旦匹配其中之一,不在匹配其他location

1、精确匹配  location=/{...}

=: 完全相同,一个字错都匹配不到

2、正则匹配  location-/{..}

^- 表示普通字符的前缀匹配,如果匹配成功,不在匹配其他的location

~ 区分大小写的字符匹配

~* 不区分大小写进行匹配

!~  区分大小写,匹配的取非

!~* 不区分大小写,匹配取非

3、一般匹配  location /

location匹配的优先级:

location= > location ^- > location ~ ~* > location /test1 > location/

分别创建三个目录并放入图片

/data/nginx/static1      /data/nginx/static2         /data/nginx/static3

配置文件

网站配置location的规则怎么做:

1、location = / {}

直接匹配网站的根目录,也就是网站的首页。首页一般都是一个静态的页面,直接匹配可以提高访问速度。

2、处理静态文件的请求,通过前缀或者后缀进行匹配的规则:

     location ^- /static {}

     location ~* .{jpg|gif|png|jsp|html|php}$ {}

3、通用匹配:一般用来转发包含.php或者.jsp为结尾的动态请求:

location /

proxy_pass  http://

重定向

重定向:就是输入的网站之后会跳转到设定的目标网址

rewrite:使用nginx提供的全局变量或者是自己设置的变量,结合正则表达式和标志位实现url/uri重定向

1、更换域名

2、特殊情况,比方说页面需要维护,但是我不想中断服务,可以实现url的跳转,访问正常的服务器。

3、防盗链

www.baidu.com -----------------> www.sina.com

www.baidu.com/test1 ------------------->www.sina.com/test2

rewrite跳转:

1、ngx_http_rewrite_module 支持url重定向

  支持条件判断:

if语句,没有else

2、语法配置:

rewrite正则表达式  跳转后的内容 标志位

标志位的类型:

1、permanent:返回码是301,永久重定向

2、redirect: 返回码302,临时重定向

3、break 跳转时不会改变url

         break是按照location的规则进行匹配的,匹配到即终止。不属于3**开头的重定向范围之内。

4、last  本条规则匹配完毕之后,继续向下匹配到新的location规则

break和last没有跳转的返回码,属于匹配location的机制。

last一旦陷入死循环,内部循环10次就会停止,然后报错500

500:

一、服务器故障

二、防火墙屏蔽

三、应用的端口没有启动:

1、配置文件写错了

2、有其他应用占用了本服务的端口

3、服务器资源不够,应用无法启动

4、磁盘空间不足

四、last匹配机制导致陷入死循环,10次之后就会报错500

五、检查网络

rewrite /test/(.*)/xy104/$1 redirect

(.*) : 正则表达式匹配的内容进行捕获

/usr/local/nginx/html/test/index.thml

/usr/local/nginx/html/xy104/index.thml

301和302:

301永久重定向:永久性的变更url,搜索引擎的排名和权重会转移到新的url,客户端会保留新的url

302 临时重定向,短期的url变更,一般用在维护时,搜索引擎的排名和权重不会转移到新的url,客户端会继续访问原始的url

1、基于域名的跳转:

www.xy105.com--------------->www.xy104.com

2、基于ip的跳转:

192.168.233.61,这个服务器的网页正在维护,只有本机可以访问,其他主机访问统一显示正在维护中

rewrite ^/(.*)$ http://www.xy104.com/$1 permanent;

匹配$host的路径  www.xy105.com/(.*) -------------> www.xy104.com/$1

3、基于后缀名的跳转:

www.xy105.com/test1/index.php

www.xy104.com

nginx的正向代理,反向代理和nginx内置变量的介绍

nginx的内置变量:

$uri :可以获取客户请求的地址,不包含主机和查询的参数

$request_uri :获取客户端的请求地址,包含主机和查询的参数

$host 请求的主机名? 客户端--------发送请求的url地址

$http_user_agent: 获取客户端请求的浏览器和操作系统

$remote_addr 客户端的ip地址(可以隐藏)

$remote_port 客户端请求的端口

$server_addr 可以查询到服务端的ip地址

$server_port  服务端的端口号

$request_method : 获取客户端的请求方式,GET、POST

$scheme:获取请求的协议  http协议  https

$request_filename:获取客户端请求文件名

$document_root: 获取当前请求的根目录

nginx在配置location匹配时,会使用两个获取头部的内置变量:

X_Real_IP:直接向服务端发送客户端访问的真实ip地址

proxy_set_header X_Real_IP $remote_addr;

X-Forwarded-For  传递完整的代理链,只要数据包经过代理,都会被传送nginx,记录所有的代理地址和客户端的真实ip

proxy_set_header X_Forwarded-For $proxy_add_x_forwarded_for; 记录所有经过的代理地址

nginx的代理

正向代理:

代理:

访问一个代理的地址---------------> 目标访问的网页

代理:VPN  科学上网

                       加速

 七层代理

反向代理

四层代理

七层代理

四层代理:传输层   ip+端口

七层代理:应用层  http协议

四层代理和七层代理之间的区别:

1、四层代理是基于tcp/ip协议层的代理转发方式,只是基于ip+端口号的形式实现代理

  四层代理无法获取http请求中的url信息,只是对数据包进行转发。

四层转发数据包,是有内核进行转发,速度更快。

2、七层代理是通过http协议进行代理转发的方式

        处理http的请求和响应

       当收到http请求之后,根据代理的方式,把http请求转发到指定的服务器。

       可以对http请求进行深入的分析和处理的。可以对请求内容做路由,流量控制,可以内容过滤等等。

七层代理是由应用层处理,用户态来处理,速度相对较慢,但是更安全,更可靠

同时能做四层代理和七层代理的  nginx      Haproxy

lvs:只能四层转发

正向代理:

正向代理都是需要对请求进行处理,属于七层代理。

正向代理是面向客户端的,客户端想要访问web服务器,但是客户端的ip地址禁止访问,通过代理的ip地址访问目标的服务器。

服务端只会知道代理服务器的地址,但是不知道客户端的ip地址。

正向代理的特点:

1、代理的ip地址和访问的服务器对客户端来说是已知的

2、后端服务器不知道客户端的ip地址

固定代理

vim /usr/local/nginx/conf/nginx.conf

自动代理

vim zddl.conf

反向代理--------》负载均衡

负载均衡:将四层或者七层的请求分配到多台后端的服务器上。

从而负担整个业务的负载。提高系统的稳定性,也可以提供高可用 (备灾,其中一台后端服务器如果发生故障不影响整体业务)

负载均衡的算法:

round robin  轮询  rr:负载均衡的默认算法,请求轮流分配给后端服务器。

轮询算法适用于后端服务器处理能力相近的情况,默认的算法,可以不加。

加权轮询:weight round robin  轮询的升级版,给每个后端服务器赋予不同的权重

处理能力更强的服务器设置更高的权重

处理能力低的,设置低权重。

高峰时间可以通过这个方法进行流量的优化。

适用于服务器处理能力差异比较大的情况

weight=3

ip_Hash:

当我们访问后端服务器,根据客户端的ip地址,使用hash算法算出ip地址的hash值,然后再把请求发送到相应的后端服务器。

如果客户端访问的ip地址相同,通过hash算法,再一次的请求会被分配到上一次访问的服务器。保证会话的稳定。

负载均衡的会话保持----------》ip_hash

会话保持到期之后,会话中断,重新请求会重新计算hash值。

ip_hasp;

最小连接数(配合加权轮询一块使用):最少链接数的算法可以将请求发送到当前链接比较少的后端服务器。

这种算法适用后端服务器处理任务耗时不同的情况,可以有效的避免所有的请求集中在处理能力更强的后端服务器上。

least_conn;

weight=3;

URL_HASH: 根据请求当中url地址来计算hash值,如果客户端请求的url相同,客户端的请求就会被分配到同一个服务器上。

后台服务器的数量发生变化,会影响结果(这个讨论无意义)

hash $request_uri consistent;

weight=3;

负载均衡的特点:

1、根据算法把请求分发到不同的服务器

2、客户端访问的是代理地址,响应也是代理服务器响应

3、客户端并不了解后端服务器的情况

4、可以提高安全性,后端服务器是隐藏的

5、负载均衡是有缓存的,可以直接访问缓存提高响应速度

负载均衡的架构:

nginx1   192.168.233.61  代理服务器

nginx2  192.168.233.62   后端1

nginx3   192.168.233.63  后端2

客户端:谷歌浏览器

配置流量分发,主要依靠代理服务器完成的,主要配置在代理服务器完成,配置算法。

七层代理:

upstream:模块仅支持http协议,用来处理http的请求和响应

upstream 只能写在http模块当中。不能在server也不在全局

轮询

http中

location中

加权轮询

http中

ip_hash

最少链接数

URL_HASH

四层代理:

stream:不支持http响应,仅支持tcp和udp,处理数据包的流量分发。

四层代理需要写在全局模块当中

支持 轮询(rr)  加权轮询(weight) 最少链接数(least_conn;)

不支持hash   hash不能在四层算法当中使用的

基于域名代理

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

用拉普拉斯变换的方差算法实现相机自动对焦

使用拉普拉斯变换的方差来计算图像的清晰度的主要原因是拉普拉斯算子可以有效检测图像的边缘和高频细节。图像的清晰度与边缘强度和高频分量的丰富程度密切相关,以下是更详细的解释: 1. 拉普拉斯算子的作用 拉普拉斯算子是一种二阶导数算子,定义为: 它可以在图像中检测快…

【考前预习】3.计算机网络—数据链路层

往期推荐 【考前预习】2.计算机网络—物理层-CSDN博客 【考前预习】1.计算机网络概述-CSDN博客 浅谈云原生--微服务、CICD、Serverless、服务网格_云原生cicd-CSDN博客 子网掩码、网络地址、广播地址、子网划分及计算_子网广播地址-CSDN博客 浅学React和JSX-CSDN博客 目录 1.数…

【Kafka】Kafka-Eagle 和 Kafka-UI 的安装使用

前言 Kafka Eagle 提供了完善的管理页面,可以监控 Kafka 集群的整体运行情况,很方便的去管理和可视化 Kafka 集群的一些信息,例如 Broker 详情、性能指标趋势、Topic 集合、消费者信息等,在生产环境中经常使用。 一、MySQL 环境…

HCIA-Access V2.5_2_2_2网络通信基础_IP编址与路由

网络层数据封装 首先IP地址封装在网络层,它用于标识一台网络设备,其中IP地址分为两个部分,网络地址和主机地址,通过我们采用点分十进制的形式进行表示。 IP地址分类 对IP地址而言,它细分为五类,A,B,C,D,E,…

TÜLU 3: Pushing Frontiers inOpen Language Model Post-Training

模型:https://huggingface.co/allenai 技术报告:https://allenai.org/papers/tulu-3-report.pdf 数据集:https://huggingface.co/collections/allenai/tulu-3-datasets-673b8df14442393f7213f372 GitHub:https://github.com/al…

【卷积神经网络】LeNet实践

模型建立 数据初始化根据模型搭建前向传播打印模型结构 前向传播数据初始化 def __init__(self):super(LeNet, self).__init__()# 第一层卷积层:# 输入:灰度图像 (1通道,大小 28x28)# 输出:6个特征图 (大小 28x28, 通过padding2保…

ubuntu20.04复现 Leg-KILO

这里写目录标题 opencv版本问题下载3.2.0源代码进入解压后的目录创建构建目录运行 CMake 配置 配置时指定一个独立的安装目录,例如 /opt/opencv-3.2:出错: 使用多线程编译错误1: stdlib.h: 没有那个文件或目录错误2:er…

python学习笔记—7—变量拼接

1. 字符串的拼接 print(var_1 var_2) print("supercarry" "doinb") name "doinb" sex "man" score "100" print("sex:" sex " name:" name " score:" score) 注意: …

Redis - 消息队列 Stream

一、概述 消息队列 定义 消息队列模型:一种分布式系统中的消息传递方案,由消息队列、生产者和消费者组成消息队列:负责存储和管理消息的中间件,也称为消息代理(Message Broker)生产者:负责 产…

3D 生成重建034-NerfDiff借助扩散模型直接生成nerf

3D 生成重建034-NerfDiff借助扩散模型直接生成nerf 文章目录 0 论文工作1 论文方法2 实验结果 0 论文工作 感觉这个论文可能能shapE差不多同时期工作,但是shapE是生成任意种类。 本文提出了一种新颖的单图像视图合成方法NerfDiff,该方法利用神经辐射场 …

聊聊Oracle自适应查询优化

成也AQO败也AQO 因为工作的原因,我们接触到的客户大部分是金融和运营商行业,这些客户有个最大的特点是追求稳定,对于使用数据库新特性持保守的态度,不会轻易尝试某些可能会导致生产系统不稳定的新特性。上线前通常都会将一些新特…

【数据库】选择题+填空+简答

1.关于冗余数据的叙述中,不正确的是() A.冗余的存在容易破坏数据库的完整新 B.冗余的存在给数据库的维护增加困难 C.不应该在数据库中存储任何冗余数据 D.冗余数据是指由基本数据导出的数据 C 2.最终用户使用的数据视图称为(&…

Comparator.comparing 排序注意

1. 对数字型字符串排序 List<String> values new ArrayList<>();values.add("10");values.add("6");values.add("20");values.add("30");values.add("50");//方法1 &#xff08;正确的排序方法&#xff09;//倒…

R语言的数据结构-矩阵

【图书推荐】《R语言医学数据分析实践》-CSDN博客 《R语言医学数据分析实践 李丹 宋立桓 蔡伟祺 清华大学出版社9787302673484》【摘要 书评 试读】- 京东图书 (jd.com) R语言医学数据分析实践-R语言的数据结构-CSDN博客 矩阵是一个二维数组&#xff0c;矩阵中的元素都具有相…

动态分区存储管理

一、实验目的 目的&#xff1a;熟悉并掌握动态分区分配的各种算法&#xff0c;熟悉并掌握动态分区中分区回收的各种情况&#xff0c;并能够实现分区合并。 任务&#xff1a;用高级语言模拟实现动态分区存储管理。 二、实验内容 1、实验内容 分区分配算法至少实现首次适应算法、…

JPG 转 PDF:免费好用的在线图片转 PDF 工具

JPG 转 PDF&#xff1a;免费好用的在线图片转 PDF 工具 在日常工作和生活中&#xff0c;我们经常需要将图片转换为 PDF 格式。无论是制作电子文档、准备演示材料&#xff0c;还是整理照片集&#xff0c;将图片转换为 PDF 都是一个常见的需求。今天为大家介绍一款完全免费、无需…

10、C++继承2

本章介绍菱形继承、虚继承和类型适应。 1、菱形继承与虚继承 在多继承中&#xff0c;可能会发生多个父类共基类的问题&#xff0c;即菱形继承。 例如&#xff1a; 解决办法&#xff1a; 父类继承基类时使用虚继承&#xff0c;在继承前加virtual&#xff0c;即&#xff1a;虚…

探索Telnet:实现Windows远程登录Ubuntu的实践指南

前言 在互联网技术日新月异的今天&#xff0c;远程登录已经成为许多开发者和系统管理员日常工作中不可或缺的一部分。虽然SSH已经成为远程登录的首选协议&#xff0c;但了解并掌握Telnet这一经典协议仍然具有重要意义。本文将带您一起探索如何使用Telnet实现Windows远程登录Ub…

字符串的常见操作【C语言】

一、案例内容 字符串的常见操作主要有创建&#xff0c;输出&#xff0c;查找指定字符或查找指定位置的字符、删除指定字符或删除指定位置的字符&#xff0c;在指定位置插入指定字符等。 二、案例代码 #include <stdio.h> #include <stdlib.h> #include <stri…

axios的引入和基本使用

一、axios的引入 使用 pnpm add axios 二、使用axios 三、axios的使用方法补充 axios除了直接使用它实例上的方法&#xff0c;还可以通过配置的方式进行使用axios({})&#xff0c;传入一个对象&#xff0c;这个对象可以有如下属性&#xff1a; url&#xff08;字符串&#…