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

    文章

    1255

    浏览量

    69309
  • 软件
    +关注

    关注

    69

    文章

    4731

    浏览量

    87122
  • nginx
    +关注

    关注

    0

    文章

    142

    浏览量

    12158

原文标题:总结

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

收藏 人收藏

    评论

    相关推荐

    nginx负载均衡配置介绍

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

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

    前言,我这里验证的nginx-v1.23.2单机环境下的nginx中的正则表达式、location路径匹配规则和优先级。
    的头像 发表于 09-29 16:02 419次阅读
    <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 217次阅读

    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

    如何使用nginx反向代理功能?保姆级教程!

    一关于nginxnginx是一款高性能的开源Web服务器软件,也可以用于反向代理、负载均衡等,并且具有高性能、低内存消耗等优点。本文我们主要讲解关于nginx的反向代理功能,并在服务器上实现如下功能
    的头像 发表于 06-21 08:21 559次阅读
    如何使用<b class='flag-5'>nginx</b>反向代理功能?保姆级教程!

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

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

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

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

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

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

    Apache服务器和Nginx服务器

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

    【爱芯派 Pro 开发板试用体验】实现简单视频直播系统

    的openssl库,安装命令: sudo apt install libssl-dev 开放板上的其他软件,可以用命令行安装。 二、安装nginx和http-flv模块 2.1 nginx
    发表于 01-21 16:36

    腾讯云和华为云的ingress路径匹配规则把我绕晕了

    本文主要调研了Tke的两类ingress,分别是应用型CLB和Nginx ingress Controller,这两类ingress在页面创建时均不支持选择路径匹配规则,而二者关于路径匹配规则的实现
    的头像 发表于 01-08 15:59 838次阅读
    腾讯云和华为云的ingress路径<b class='flag-5'>匹配</b>规则把我绕晕了

    Nginx在Windows/docker中的使用

    nginx 是一个高性能的开源反向代理服务器和 web 服务器,一般用来搭建静态资源服务器、负载均衡器、反向代理,本文将分享其在 Windows/docker 中的使用,使用 nssm 部署成服务的方案脚本,局域网中自定义域名解决https提示不安全的解决方案,以及一路踩过的坑。
    的头像 发表于 01-03 10:20 1729次阅读
    <b class='flag-5'>Nginx</b>在Windows/docker中的使用

    OpenCV边缘模板匹配算法原理详解

    OpenCV中自带的模板匹配算法,完全是像素基本的模板匹配,特别容易受到光照影响,光照稍微有所不同,该方法就会歇菜了!搞得很多OpenCV初学者刚学习到该方法时候很开心,一用该方法马上很伤心
    的头像 发表于 12-07 10:56 1302次阅读
    OpenCV边缘模板<b class='flag-5'>匹配</b>算法原理<b class='flag-5'>详解</b>

    Nginx的配置文件如何设置头信息保留真实IP不丢失

    Nginx 配置中设置头信息以保留客户端的真实 IP 地址通常是在使用反向代理的场景中需要的。当 Nginx 作为反向代理时,客户端的真实 IP 地址可能会在转发请求时丢失,因为到达应用服务器
    的头像 发表于 11-30 10:54 1839次阅读