首页 > 系统相关 >Nginx篇之路由匹配规则以及配置url转发

Nginx篇之路由匹配规则以及配置url转发

时间:2023-12-06 14:59:49浏览次数:46  
标签:匹配 请求 url Nginx html location http com 路由

 

 

alias与root的区别

  • root    实际访问文件路径会拼接URL中的路径
  • alias   实际访问文件路径不会拼接URL中的路径

示例如下:

location ^~ /sta/ {  
   alias /usr/local/nginx/html/static/;  
}
  • 请求:http://test.com/sta/sta1.html
  • 实际访问:/usr/local/nginx/html/static/sta1.html 文件
location ^~ /tea/ {  
   root /usr/local/nginx/html/;  
}
  • 请求:http://test.com/tea/tea1.html
  • 实际访问:/usr/local/nginx/html/tea/tea1.html 文件

last 和 break关键字的区别

(1)last 和 break 当出现在location 之外时,两者的作用是一致的没有任何差异

(2)last 和 break 当出现在location 内部时:

  • last        使用了last 指令,rewrite 后会跳出location 作用域,重新开始再走一次刚才的行为
  • break    使用了break 指令,rewrite后不会跳出location 作用域,它的生命也在这个location中终结

permanent 和 redirect关键字的区别

  • rewrite … permanent   永久性重定向,请求日志中的状态码为301
  • rewrite … redirect         临时重定向,请求日志中的状态码为302

https://www.cnblogs.com/micro-chen/p/12179817.html

 

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就可以生效了

 

注:
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.
————————————————
版权声明:本文为CSDN博主「听说唐僧不吃肉」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/xu710263124/article/details/118902539

 

https://blog.csdn.net/xu710263124/article/details/118902539

 

 

https://www.cnblogs.com/54chensongxia/p/12938929.html

 

标签:匹配,请求,url,Nginx,html,location,http,com,路由
From: https://www.cnblogs.com/softidea/p/17879510.html

相关文章

  • nginx中目录浏览配置
    root方式配置:(会自动加目录名)#开放本地目录-rootserver{listen81;server_namelocalhost127.0.0.10.0.0.0;charsetutf-8;#处理中文乱码location/test{autoindexon;#开启目录浏览autoindex_exact_siz......
  • Nginx相关
    Nginx常见问题总结1、解决跨域问题:前端代码设置base_api VUE_APP_BASE_API='/api'网站访问域名nginx配置server{listen443http2ssl;listen[::]:443http2ssl;server_namemgmt-web.sxyd.cc;ssl_protocolsTLSv1TLSv1.1TLSv1.2;ssl......
  • docker-compose运行的容器 curl No route to host
    #信任docker0网卡firewall-cmd--permanent--zone=trusted--change-interface=docker0&&firewall-cmd--reloaddockernetworkinspectcsrpmed_default#找出默认网段w为172.20.0.0/16[{"Name":"csrpmed_default","Id&quo......
  • WPF自定义路由事件
    声明与封装创建一个继承ContentControl的类,因为封装需要使用AddHandler和RemoveHandlerRegisterRoutedEvent的参数RoutingStrategy传入RoutingStrategy.Bubble为冒泡事件,传入RoutingStrategy.Tunnel为隧道事件申明公开的eventRoutedEventHandler封装RoutedEvent///用于路由......
  • 【Nginx40】Nginx学习:动静分离与日志分割
    Nginx学习:动静分离与日志分割放轻松放轻松,最后两篇文章学习的内容是比较轻松的。首先,我们来看看Nginx动静分离的概念,然后再看看怎么为Nginx做日志分割。内容都很简单,完全不需要有任何的压力。动静分离动静分离,听着高大上吧,而且也是面试中比较喜欢问的问题。简单来说,就是动态请......
  • 【Nginx39】Nginx学习:upstream服务器组模块
    Nginx学习:upstream服务器组模块最后一个重点模块内容啦,感谢坚持到现在的你和我。总算是向大佬的道路上又前进了一步了。今天的内容主要是服务器组的配置,其实更直白点,就是Nginx负载均衡的配置模块。会不会有小伙伴不明白负载均衡是啥?如果是新同学,还不明白的话,要自己查查资料补习一......
  • 【VUE】vue动态变换背景图片的实现 +背景图片铺满+ 一般路由的配置
    一、动态变换背景图片的实现代码如下:<template><divclass="body"v-loading="loading":style="{backgroundImage:'url('+bgi+')'}"></div></template><script>data(){reyurn{ b......
  • mac安装nginx
     ~%brewinstallnginx==>Downloadinghttps://formulae.brew.sh/api/formula.jws.json#=#=-###=O#-##-#O=-########################################################################################################################......
  • 网络通信、UDP通信、TCP通信、BS架构模拟、URL了解
    网络编程可以让程序与网络上的其他设备中的程序进行数据交互所以,我们学习网络编程的主要目的就是为了实现网络通信网络通信网络通信基本模式常见的通信模式有如下2种形式:Client-Server(Cs)、Browser/Server(Bs)Client-Server(Cs)主要是客户端与服务端之间的联系(就是相应的App和后......
  • VMware虚拟机nat模式路由器ping不通虚拟机为什么?
    在VMware虚拟机中,使用NAT(NetworkAddressTranslation)模式时,虚拟机会与虚拟的路由器连接,并通过该路由器与宿主机进行通信。因此,如果NAT模式下无法ping通虚拟机,可能有以下几个原因:路由器配置问题:检查虚拟路由器的网络配置,确保其能够正确地连接到宿主机和虚拟机,并且有正确的IP地址和......