nginx路径匹配_url路径匹配

nginx路径匹配_url路径匹配一、前言一般我们经常在访问网站时,通常会遇到输入某个页面的网址时,出现路由的转发,重定向等。可能访问的是一个网址,出来的时候就显示的是另外的地址。这种情况下,通常属于nginx的页面跳转。二、Nginx可提供的服务类型nginx做请求代理,提供多种服务1、php搭建的网站2、hexo创建的博客系统3、spring-boot&tomcat搭建的后台4、静态网页三、location匹配规则1、语法location可以把不同方式的请求,定位到不同的处理方式上.location

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

一、前言
一般我们经常在访问网站时,通常会遇到输入某个页面的网址时,出现路由的转发,重定向等。可能访问的是一个网址,出来的时候就显示的是另外的地址。
这种情况下,通常属于nginx的页面跳转。

二、Nginx可提供的服务类型
nginx做请求代理,提供多种服务
1、php搭建的网站
2、hexo创建的博客系统
3、spring-boot & tomcat搭建的后台
4、静态网页

三、location匹配规则
1、语法
location可以把不同方式的请求,定位到不同的处理方式上.

location ~* /js/.*/\.js
以 = 开头,表示精确匹配;如只匹配根目录结尾的请求,后面不能带任何字符串。
以^~ 开头,表示uri以某个常规字符串开头,不是正则匹配
以~ 开头,表示区分大小写的正则匹配;~* 开头,表示不区分大小写的正则匹配
以/ 开头,通用匹配, 如果没有其它匹配,任何请求都会匹配到

location匹配规则:“先匹配普通,再匹配正则”,如果先匹配正则,那么会覆盖掉普通匹配。

2、用法说明
location正则写法:
1、# 精确匹配 / ,主机名后面不能带任何字符串

location = / { 
   
[ configuration A ]
}

在这里插入图片描述
2、 所有的地址都以 / 开头,所以这条规则将最后匹配到默认请求中
#但是正则和最长字符串会优先匹配

location / { 
   
[ configuration B]
}

例如:

    location / { 
    
          proxy_pass http://server_pools;
        } 
注:这条规则只有其他不符合要求才能匹配到;将是最后匹配到的,匹配度最低,上面实现的功能是:比如网站是www.blog.com;后面什么都不输入的时候,其他的规则也不匹配的时候,最后交给负载均衡池的服务器

3、# 匹配任何以 /documents/ 开头的地址,匹配符合以后,还要继续往下搜索
注:只有后面的正则表达式没有匹配到时,这一条才会采用这一条

location /documents/ { 
   
[ configuration C ]
}

例如:

location  /static/
       { 
   
        rewrite ^  http://www.abc.com ;      
       }
解释:上面实现的功能:假设网站域名为www.blog.com;那么配置上面的功能是输入www.blog.com/static/时,不管static后面是什么页面(页面也可以不存在),那么最终会同样跳转到www.abc.com这个网站。

4.# 匹配任何以 /documents/ 开头的地址,匹配符合以后,还要继续往下搜索
注:只有后面的正则表达式没有匹配到时,这一条才会采用这一条

location ~ /documents/Abc { 
   
[ configuration CC ]
}

5、# 匹配任何以 /images/ 开头的地址,匹配符合以后,停止往下搜索正则,采用这一条。

location ^~ /images/ { 
   
[ configuration D ]
}

6、# 匹配所有以 gif,jpg或jpeg 结尾的请求
注:然而,所有请求 /images/ 下的图片会被 config D 处理,因为 ^~ 到达不了这一条正则

location ~* \.(gif|jpg|jpeg)$ { 
   
[ configuration E ]
}

例:
在这里插入图片描述

7、匹配规则总结:
顺序匹配优先级:
(location =) > (location 完整路径) > (location ^~ 路径) > (location ,* 正则顺序) > (location 部分起始路径) > (/)

8、实际常见使用建议方法

#直接匹配网站根,通过域名访问网站首页比较频繁,使用这个会加速处理,官网如是说。#这里是直接转发给后端应用服务器了,也可以是一个静态首页
# 1、第一个必选规则
location = / { 
   
proxy_pass  http://tomcat:8080/index
}

# 2、第二个必选规则是处理静态文件请求,这是nginx作为http服务器的强项# 
有两种配置模式,目录匹配或后缀匹配,任选其一或搭配使用location ^~ /static/ { 
   
root /webroot/static/;
}
location ~* \.(gif|jpg|jpeg|png|css|js|ico)$ { 
   
root /webroot/res/;
}
# 3、第三个规则就是通用规则,用来转发动态请求到后端应用服务器#非静态文件请求就默认是动态请求,
#自己根据实际把握毕竟目前的一些框架的流行,带.php,.jsp后缀的情况很少了
location / { 
   
proxy_pass  http://tomcat:8080/
}
http://tengine.taobao.org/book/chapter_02.html
http://nginx.org/en/docs/http/ngx_http_rewrite_module.html

四、Nginx的url转发
示例1:
比如要实现项目之间的无缝衔接,即就是在进行访问的时候,发起的请求被转发到另一个服务器去处理。
在这里插入图片描述

注:第一个location是第一个项目
第二个location是我要转发的路径

即我访问 www.lc.com/abc/** 之后的请求都会被准发到另一个服务器去处理。
当配置完成后,重新加载reload就可以生效了

示例2:
在这里插入图片描述
注:
1.上面第一部分,是静态资源(html和图片)的转发.

2.上面第二部分,是api路径转发效果是: http://xxx.xxx.com/api/xxx –> http://localhost:7500/api/xxx. 转发的时候,包含了url的前缀.

3.上面第三部分,是backend路径的转发,效果是: http://xxx.xxx.com/backend/xxx –> http://localhost:8016/xxx. 转发不包含url前缀backend.

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/180525.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • update 数据。表之间关联 赋值

    update 数据。表之间关联 赋值

    2022年3月7日
    39
  • goland2022.01.4激活【最新永久激活】2022.01.17

    (goland2022.01.4激活)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html0HKLM1UCCY-eyJsaWN…

    2022年3月31日
    188
  • python txt读取_python读取本地文件

    python txt读取_python读取本地文件以下代码为1:新建onefile.txt文件2:向onefile.txt文件中写入数据3:尝试读取新建文件的所有数据4:尝试读取该文件指定数据5:拷贝onefile.txt至新建twofile.txt文件,并且统计行数与字节长度下面该代码为第1,2,3,4项把代码复制,并创建test.py文件,然后在当前文件夹中的终端执行python3test.py即可#打开文件,并且写入6.2文件的基本处理defmain():#第一步打开文件#打开文件open()

    2022年9月29日
    4
  • ubuntu tftp 端口 NFS端口固定与防火墙「建议收藏」

    ubuntu tftp 端口 NFS端口固定与防火墙「建议收藏」在ubuntu中安装tftp服务安装tftpsudoapt-getinstalltftp-hpatftpd-hpa创建/tftpboot文件夹TFTP需要一个文件夹来存放文件,我们在根目录下新建一个/tftpboot目录做为TFTP文件存储目录,之所以使用该目录是因为后面使用的Petalinux工具默认使用该目录,省得我们每次建Petalinux工程的时候手动修改。创建/tftpboot目录命令如下:sudomkdir-p/tftpbootsudo

    2022年6月27日
    43
  • 零基础入门微信小程序开发 (2020 版)_GitChat(微信小程序开发入门书籍)

    本课程是一个系列入门教程,目标是从0开始带领读者上手实战,课程以微信小程序的核心概念作为主线,介绍配置文件、页面样式文件、JavaScript的基本知识并以指南针为例对基本知识进行扩展,另外加上开发工具的安装、小程序发布等内容,共9篇文章。

    2022年4月13日
    104
  • js将json字符串转换成json对象_json对象转字符串

    js将json字符串转换成json对象_json对象转字符串json简介及json字符串转换成json对象JSON有两种表示结构:对象和数组对象结构以”{”大括号开始,以”}”大括号结束。中间部分由0或多个以”,”分隔的”key(关键字)/value(值)”对构成,关键字和值之间以”:”分隔,语法结构如代码 { key1:value1, key2:value2, … } 其中关键字是字符串,而值可以是字符串,数值,true,false,null,对象或数组数组结构以”[”开始,以”]”结束。中间由0或多个以”,”分隔

    2022年10月6日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号