location和重定向、代理

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.rhkb.cn/news/488998.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ragflow连ollama时出现的Bug

ragflow和ollama连接后,已经添加了两个模型但是ragflow仍然一直warn:Please add both embedding model and LLM in Settings > Model providers firstly.这里可能是我一开始拉取的镜像容器太小,容不下当前添加的模型,导…

软件测试面试问答

文章目录 什么是软件?软件测试工程师的工作内容什么是软件测试?软件开发生命周期软件开发的几个阶段软件bug的五个要素Bug的十大要素:软件测试的分类软件测试方法分类单元测试设计测试用例的主要方法什么是测试用例测试用例几大要素你的测试职业发展是什…

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

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

Win10环境vscode+latex+中文快速配置

安装vscodelatex workshop 配置: {"liveServer.settings.donotVerifyTags": true,"liveServer.settings.donotShowInfoMsg": true,"explorer.confirmDelete": false,"files.autoSave": "afterDelay","exp…

AI生成不了复杂前端页面?也许有解决方案了

在2024年,编程成为了人工智能领域最热门的赛道。AI编程技术正以惊人的速度进步,但在生成前端页面方面,AI的能力还是饱受质疑。自从ScriptEcho平台上线以来,我们收到了不少用户的反馈,他们表示:“生成的页面…

【热力学与工程流体力学】流体静力学实验,雷诺实验,沿程阻力实验,丘里流量计流量系数测定,局部阻力系数的测定,稳态平板法测定材料的导热系数λ

关注作者了解更多 我的其他CSDN专栏 过程控制系统 工程测试技术 虚拟仪器技术 可编程控制器 工业现场总线 数字图像处理 智能控制 传感器技术 嵌入式系统 复变函数与积分变换 单片机原理 线性代数 大学物理 热工与工程流体力学 数字信号处理 光电融合集成电路…

360极速浏览器不支持看PDF

360安全浏览器采用的是基于IE内核和Chrome内核的双核浏览器。360极速浏览器是源自Chromium开源项目的浏览器,不但完美融合了IE内核引擎,而且实现了双核引擎的无缝切换。因此在速度上,360极速浏览器的极速体验感更佳。 展示自己的时候要在有优…

【深度学习】深刻理解ViT

ViT(Vision Transformer)是谷歌研究团队于2020年提出的一种新型图像识别模型,首次将Transformer架构成功应用于计算机视觉任务中。Transformer最初应用于自然语言处理(如BERT和GPT),而ViT展示了其在视觉任务…

idea 配置 git .gitignore文件配置

.gitignore 内容 .idea/ *.iml target/ *.class *.log .iml在idea项目里面创建一个.gitignore名字的文件,然后把这个文件提交到git上。我一般是放到.idea同级目录。 我遇到了几种情况这个文件配置了但是不生效的情况 第一种 Git的缓存可能会导致配置不生效。尝试…

Scala的隐式转换

(一)隐式转换: 编译器 偷偷地,自动地帮我们把一种数据类型转换为另一种类型。例如:int --> double 它有失败的时候(double-->int),有成功的时候。 当它转换失败的时候,我们提供一个工具,让…

Windows安装WSL子系统及docker,以及WSL和docker配置、使用及问题解决

在Windows操作系统中,Ubuntu子系统(也称为Windows Subsystem for Linux, WSL)为开发者提供了一个在Windows环境下运行Linux环境的平台。然而,有时用户在按照Ubuntu子系统或者使用WSL时,可能会遇到各种问题,下面总结一下解决方式。 想要在Windows上安装Docker(实际上是基…

F12抓包01:启动、面板功能介绍、语言设置、前端样式调试

浏览器检查工具通常用来作为浏览器web服务测试过程中,辅助测试、排查问题、定位缺陷的工具。 本文以mac系统下,当前比较常用的Chrome浏览器为例,讲解“检查”工具的常用功能操作方法。 一、打开方式 **1、****鼠标操作:**浏览器…

仿iOS日历、飞书日历、Google日历的日模式

仿iOS日历、飞书日历、Google日历的日模式,24H内事件可自由上下拖动、自由拉伸。 以下是效果图: 具体实现比较简单,代码如下: import android.content.Context; import android.graphics.Canvas; import android.graphics.Color;…

特征交叉-CAN学习笔记代码解读

一 核心模块coaction 对于每个特征对(feature_pairs)weight, bias 来自于P_inductionP_fead是MLP的input 举个例子:如果是用户ID和产品ID的co-action,且产品ID是做induction,用户ID是做feed。 step1 用户ID/产品ID都先形成一个向量&#xf…

Java从入门到工作3 - 框架/工具

3.1、SpringBoot框架结构 在 Spring Boot 或微服务架构中,每个服务的文件目录结构通常遵循一定的约定。以下是一个常见的 Spring Boot 服务目录结构示例,以及各个文件和目录的简要说明: my-service │ ├── src │ ├── main │ │…

基于SpringBoot的青少年心理健康教育网站

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…

基于事件驱动的websocket简单实现

websocket的实现 什么是websocket? WebSocket 是一种网络通信协议,旨在为客户端和服务器之间提供全双工、实时的通信通道。它是在 HTML5 规范中引入的,可以让浏览器与服务器进行持久化连接,以便实现低延迟的数据交换。 WebSock…

JavaEE 【知识改变命运】04 多线程(3)

文章目录 多线程带来的风险-线程安全线程不安全的举例分析产出线程安全的原因:1.线程是抢占式的2. 多线程修改同一个变量(程序的要求)3. 原子性4. 内存可见性5. 指令重排序 总结线程安全问题产生的原因解决线程安全问题1. synchronized关键字…

ElasticSearch如何做性能优化?

大家好,我是锋哥。今天分享关于【ElasticSearch如何做性能优化?】面试题。希望对大家有帮助; ElasticSearch如何做性能优化? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在 Elasticsearch 中,性能优化是…

Chrome浏览器调用ActiveX控件--allWebOffice控件

背景 allWebOffice控件能够实现在浏览器窗口中在线操作文档的应用(阅读、编辑、保存等),支持编辑文档时保留修改痕迹,支持书签位置内容动态填充,支持公文套红,支持文档保护控制等诸多办公功能,…