0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Nginx软件location目录匹配详解

马哥Linux运维 来源:博客园 作者:lvzhenjiang 2021-10-08 17:10 次阅读

Nginx作为一个轻量级的,高性能的web服务软件,因其占有内存少,并发能力强的特点,而广受欢迎和使用。国内很多大型互联网公司也对Nginx很是青睐。

像BAT(百度,阿里和腾讯),TMD(头条,美团和滴滴)等等。使用过Nginx的同学都知道,你只需要按需求准确的更改好配置启动,那么就可以优雅的访问它了。

所以说Nginx对配置文件的很是看中呢,这就要求我们更改配置文件时一定要再三确认,要不然可能因为疏忽而引发惨案呢?

真实案例,就因为在配置时,少些了一个字符“/”,就造成访问不通报错,因而接到投诉。那么是怎么引起的呢?原因就是:Nginx在配置proxy_pass代理转接时,少些“/”字符造成的。有同学就有疑问,加不加“/”,区别真的那么大吗?我们带着这个疑问,来探究下这个问题。

location目录匹配详解

nginx每个location都是一个匹配目录,nginx的策略是:访问请求来时,会对访问地址进行解析,从上到下逐个匹配,匹配上就执行对应location大括号中的策略,并根据策略对请求作出相应。依访问地址:http://www.wandouduoduo.com/wddd/index.html为例,nginx配置如下:

location /wddd/ { proxy_connect_timeout 18000; ##修改成半个小时 proxy_send_timeout 18000; proxy_read_timeout 18000; proxy_pass http://127.0.0.1:8080; }

那访问时就会匹配这个location,从而把请求代理转发到本机的8080Tomcat服务中,Tomcat相应后,信息原路返回。总结:location如果没有“/”时,请求就可以模糊匹配以字符串开头的所有字符串,而有“/”时,只能精确匹配字符本身。

下面举个例子说明:配置location /wandou可以匹配/wandoudouduo请求,也可以匹配/wandou*/duoduo等等,只要以wandou开头的目录都可以匹配到。而location /wandou/必须精确匹配/wandou/这个目录的请求,不能匹配/wandouduoduo/或/wandou*/duoduo等请求。

proxy_pass有无“/”的四种区别探究

访问地址都是以:http://www.wandouduoduo.com/wddd/index.html 为例。请求都匹配目录/wddd/

第一种:加“/”

location /wddd/ { proxy_pass http://127.0.0.1:8080/; }

测试结果,请求被代理跳转到:http://127.0.0.1:8080/index.html

第二种: 不加“/”

location /wddd/ { proxy_pass http://127.0.0.1:8080; }

测试结果,请求被代理跳转到:http://127.0.0.1:8080/wddd/index.html

第三种: 增加目录加“/”

location /wddd/ { proxy_pass http://127.0.0.1:8080/sun/; }

测试结果,请求被代理跳转到:http://127.0.0.1:8080/sun/index.html

第四种:增加目录不加“/”

location /wddd/ { proxy_pass http://127.0.0.1:8080/sun; }

测试结果,请求被代理跳转到:http://127.0.0.1:8080/sunindex.html

总结

location目录后加“/”,只能匹配目录,不加“/”不仅可以匹配目录还对目录进行模糊匹配。而proxy_pass无论加不加“/”,代理跳转地址都直接拼接。为了加深大家印象可以用下面的配置实验测试下:

server { listen 80; server_name localhost; # http://localhost/wddd01/xxx -》 http://localhost:8080/wddd01/xxx location /wddd01/ { proxy_pass http://localhost:8080; } # http://localhost/wddd02/xxx -》 http://localhost:8080/xxx location /wddd02/ { proxy_pass http://localhost:8080/;

} # http://localhost/wddd03/xxx -》 http://localhost:8080/wddd03*/xxx location /wddd03 { proxy_pass http://localhost:8080;

} # http://localhost/wddd04/xxx -》 http://localhost:8080//xxx,请注意这里的双斜线,好好分析一下。 location /wddd04 { proxy_pass http://localhost:8080/;

} # http://localhost/wddd05/xxx -》 http://localhost:8080/hahaxxx,请注意这里的haha和xxx之间没有斜杠,分析一下原因。 location /wddd05/ { proxy_pass http://localhost:8080/haha;

} # http://localhost/api6/xxx -》 http://localhost:8080/haha/xxx location /wddd06/ { proxy_pass http://localhost:8080/haha/;

} # http://localhost/wddd07/xxx -》 http://localhost:8080/haha/xxx location /wddd07 { proxy_pass http://localhost:8080/haha; }

# http://localhost/wddd08/xxx -》 http://localhost:8080/haha//xxx,请注意这里的双斜杠。 location /wddd08 { proxy_pass http://localhost:8080/haha/; } }

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Web
    Web
    +关注

    关注

    2

    文章

    1263

    浏览量

    69514
  • 软件
    +关注

    关注

    69

    文章

    4957

    浏览量

    87604
  • nginx
    +关注

    关注

    0

    文章

    151

    浏览量

    12185

原文标题:总结

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    nginx+lua+redis实现灰度发布

    作者:马仁喜 前言: 授人以鱼不如授人以渔 .先学会用,在学原理,在学创造,可能一辈子用不到这种能力,但是不能不具备这种能力。这篇文章主要是沉淀使用nginx+lua+redis实现灰度,当我们具备
    的头像 发表于 12-17 10:01 86次阅读

    Nginx代理转发实战:零基础掌握服务器流量分发技巧

    的url中就会带上location中的匹配路径。      假设下面四种 Nginx配置,都用 http://192.168.1.8/proxy/test.html 进行访问: 第一种:
    的头像 发表于 12-09 12:28 466次阅读

    Nginx日常运维方法Linux版

    Nginx安装目录?   whereis nginx   如图: 执行目录:/usr/sbin/nginx 模块所在
    的头像 发表于 12-06 16:38 164次阅读
    <b class='flag-5'>Nginx</b>日常运维方法Linux版

    详解nginx中的正则表达式

    前言,我这里验证的nginx-v1.23.2单机环境下的nginx中的正则表达式、location路径匹配规则和优先级。
    的头像 发表于 12-03 09:59 200次阅读
    <b class='flag-5'>详解</b><b class='flag-5'>nginx</b>中的正则表达式

    确保网站无缝运行:Keepalived高可用与Nginx集成实战

    目录 keepalived高可用(nginx) keepalived简介 keepalived的重要功能 keepalived高可用架构图 keepalived工作原理描述 keepalived实现
    的头像 发表于 11-27 09:08 471次阅读
    确保网站无缝运行:Keepalived高可用与<b class='flag-5'>Nginx</b>集成实战

    nginx隐藏版本号与WEB服务器信息

    nginx不仅可以隐藏版本信息,还支持自定义web服务器信息 先看看最终的隐藏结果吧 具体怎么实现呢,其实也很简单,请往下看 1 官网下载最新稳定版 wget http://nginx
    的头像 发表于 11-22 10:25 174次阅读
    <b class='flag-5'>nginx</b>隐藏版本号与WEB服务器信息

    nginx负载均衡配置介绍

    目录 nginx负载均衡 nginx负载均衡介绍 反向代理与负载均衡 nginx负载均衡配置 Keepalived高可用nginx负载均衡器
    的头像 发表于 11-10 13:39 254次阅读
    <b class='flag-5'>nginx</b>负载均衡配置介绍

    nginx中的正则表达式和location路径匹配指南

    前言,我这里验证的nginx-v1.23.2单机环境下的nginx中的正则表达式、location路径匹配规则和优先级。
    的头像 发表于 09-29 16:02 820次阅读
    <b class='flag-5'>nginx</b>中的正则表达式和<b class='flag-5'>location</b>路径<b class='flag-5'>匹配</b>指南

    Jtti:美国VPS开启nginx状态监控,查看web服务器的并发连接数

    |htaccess|asp|aspx|jsp|asa|mdb)$ { deny all; }location ~ ^/Nginxstatus/ {stub_status on;access_log off;}上面的代码红色部分为nginx的监控代?。 2、重
    的头像 发表于 08-26 15:42 294次阅读

    nginx重启命令linux步骤是什么?

      1、验证nginx配置文件是否正确   方法一:进入nginx安装目录sbin下,输入命令./nginx -t   看到如下显示nginx
    发表于 07-11 17:13

    nginx重启命令linux步骤是什么?

      1、验证nginx配置文件是否正确   方法一:进入nginx安装目录sbin下,输入命令./nginx -t   看到如下显示nginx
    发表于 07-10 16:40

    RT-Thread专业版入选《2023年上海市工业软件推荐目录

    在推进制造业数字化转型的关键时刻,上海市发布了《2023年上海市工业软件推荐目录》,旨在落实《上海市促进工业软件高质量发展行动计划(2021-2023年)》,聚焦重点行业和领域痛点问题,提升关键
    的头像 发表于 04-02 08:34 476次阅读
    RT-Thread专业版入选《2023年上海市工业<b class='flag-5'>软件</b>推荐<b class='flag-5'>目录</b>》

    芯和ChannelExpert高速通道分析软件入选2023工业软件推荐目录

    继2022年三款EDA产品入选工业软件推荐目录之后,芯和半导体又一款EDA——ChannelExpert高速通道分析软件也成功入选了2023年上海市工业软件推荐
    的头像 发表于 03-14 17:22 594次阅读
    芯和ChannelExpert高速通道分析<b class='flag-5'>软件</b>入选2023工业<b class='flag-5'>软件</b>推荐<b class='flag-5'>目录</b>

    积鼎科技两款国产流体仿真软件入选《上海市工业软件推广目录》!

    ,《2023年上海市工业软件推荐目录》正式发布。 由积鼎科技自主研发的多介质多相流分析软件成功入选。由此,积鼎科技的两款核心产品, 通用流体仿真软件和多介质多相流分析
    的头像 发表于 03-08 16:07 425次阅读

    Apache服务器和Nginx服务器

    Apache和Nginx都是常见的开源Web服务器软件,它们用于处理HTTP请求并提供网站和应用程序的服务。下面是对Apache和Nginx的一些基本特点的比较: 一、Apache HTTP
    的头像 发表于 01-22 16:48 572次阅读