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

    文章

    1302

    浏览量

    73653
  • 软件
    +关注

    关注

    69

    文章

    5297

    浏览量

    90874
  • nginx
    +关注

    关注

    0

    文章

    180

    浏览量

    12968

原文标题:总结

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Nginx高并发优化方案

    作为一名在生产环境中摸爬滚打多年的运维工程师,我见过太多因为Nginx配置不当导致的性能瓶颈。今天分享一套完整的Nginx高并发优化方案,帮助你的系统从10万QPS突破到百万级别。
    的头像 发表于 08-13 15:51 669次阅读

    Nginx在企业环境中的调优策略

    Nginx作为现代互联网架构中最重要的Web服务器和反向代理服务器,其性能调优对企业级应用的稳定性和效率至关重要。本指南将从运维实践角度出发,详细介绍Nginx在企业环境中的各种调优策略和最佳实践。
    的头像 发表于 07-14 11:13 401次阅读

    Nginx和Apache的差异

    Nginx是一个 轻量级/高性能 的反向代理Web服务器,用于 HTTP、HTTPS、SMTP、POP3 和IMAP 协议。
    的头像 发表于 07-09 09:45 475次阅读

    一文详解Nginx负载均衡

    Nginx作为负载均衡器,通过将请求分发到多个后端服务器,以提高性能、可靠性和扩展性。支持多种负载均衡算法,如轮询、最小连接数、IP哈希等,可以根据需求选择适合的算法。
    的头像 发表于 06-25 14:51 859次阅读
    一文<b class='flag-5'>详解</b><b class='flag-5'>Nginx</b>负载均衡

    Nginx配置终极指南

    Nginx 是开源、高性能、高可靠的 Web 和反向代理服务器,而且支持热部署,几乎可以做到 7 * 24 小时不间断运行,即使运行几个月也不需要重新启动,还能在不间断服务的情况下对软件版本进行热
    的头像 发表于 06-18 15:56 798次阅读
    <b class='flag-5'>Nginx</b>配置终极指南

    云原生环境里Nginx的故障排查思路

    本文聚焦于云原生环境下Nginx的故障排查思路。随着云原生技术的广泛应用,Nginx作为常用的高性能Web服务器和反向代理服务器,在容器化和编排的环境中面临着新的故障场景和挑战。
    的头像 发表于 06-17 13:53 639次阅读
    云原生环境里<b class='flag-5'>Nginx</b>的故障排查思路

    Nginx性能优化终极指南

    而worker 进程数默认为 1 。单进程最大连接数为1024。如下图(打开Nginx目录下的/conf/nginx.conf 文档),现在我们来对这两个数值进行调优
    的头像 发表于 06-16 13:44 912次阅读
    <b class='flag-5'>Nginx</b>性能优化终极指南

    Nginx核心功能深度解析

    Nginx核心功能深度解析
    的头像 发表于 05-09 10:50 694次阅读

    Nginx缓存配置详解

    Nginx 是一个功能强大的 Web 服务器和反向代理服务器,它可以用于实现静态内容的缓存,缓存可以分为客户端缓存和服务端缓存。
    的头像 发表于 05-07 14:03 1037次阅读
    <b class='flag-5'>Nginx</b>缓存配置<b class='flag-5'>详解</b>

    Nginx服务优化教程

    隐藏Nginx版本号,避免安全漏洞泄漏:修改配置文件法;修改源码法
    的头像 发表于 03-12 15:57 801次阅读
    <b class='flag-5'>Nginx</b>服务优化教程

    Nginx常见面试题总结

    Nginx是一个 轻量级/高性能的反向代理Web服务器,用于 HTTP、HTTPS、SMTP、POP3 和 IMAP 协议。
    的头像 发表于 03-03 09:36 1536次阅读
    <b class='flag-5'>Nginx</b>常见面试题总结

    如何通过优化Nginx配置来提高网络环境的安全性

    简介: 在当今数字化时代,网络安全至关重要。Nginx作为流行的Web服务器,不仅提供高性能,还具备强大的安全保障功能。然而,默认配置可能无法抵御所有安全威胁,因此对Nginx进行安全加固尤为重要
    的头像 发表于 02-14 17:49 1809次阅读

    华为 FlexusX 与 Docker+Nginx 的高效整合之路

    前言 华为 FlexusX 携手 Docker+Nginx,高效整合,云端性能再升级!FlexusX 服务器,依托华为强大的技术实力,为 Docker 容器与 Nginx 服务器提供了完美的运行环境
    的头像 发表于 01-23 17:55 570次阅读
    华为 FlexusX 与 Docker+<b class='flag-5'>Nginx</b> 的高效整合之路

    nginx+lua+redis实现灰度发布

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

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

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