V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
azev
V2EX  ›  问与答

nginx 中 location 匹配问题

  •  
  •   azev · 2020-06-11 09:54:23 +08:00 · 1362 次点击
    这是一个创建于 1651 天前的主题,其中的信息可能已经有所发展或是发生改变。

    匹配根目录下的 txt 文件
    location ~ /.*\.txt 是不是这样?

    9 条回复    2020-06-11 17:03:15 +08:00
    noqwerty
        1
    noqwerty  
       2020-06-11 09:57:35 +08:00
    azev
        2
    azev  
    OP
       2020-06-11 09:57:53 +08:00
    感觉 .* 好像会有问题 要不要换成 .*? 呢
    azev
        3
    azev  
    OP
       2020-06-11 10:00:29 +08:00
    @noqwerty 不用这么恶心
    google 看了十来篇 总是讲后缀或讲目录 不知是有意还是无意忽略这个情形
    julyclyde
        4
    julyclyde  
       2020-06-11 10:45:19 +08:00
    你这个其实是“斜杠开头 txt 结尾但中间不一定几层目录”的匹配规则吧?
    wuqingdzx
        5
    wuqingdzx  
       2020-06-11 10:50:46 +08:00
    你这个不仅会匹配根目录,也会匹配二级目录.

    按我理解这么写
    ```ini

    location ~ ^/[^/]*\.txt? {
    root /var/www/html/;
    }

    location ~ ^/.*\.txt? {
    deny all;
    }

    ```
    /a.txt /var/www/html/ 里匹配
    /a/a.txt 返回 403
    Vegetable
        6
    Vegetable  
       2020-06-11 10:52:45 +08:00
    aunox
        7
    aunox  
       2020-06-11 10:54:38 +08:00
    你这个应该是匹配所有的后缀.txt 的 URL
    gesse
        8
    gesse  
       2020-06-11 13:44:03 +08:00
    @noqwerty
    优秀! 哈哈哈··
    azev
        9
    azev  
    OP
       2020-06-11 17:03:15 +08:00
    @julyclyde 对 应该是有这个问题

    @Vegetable 工具不错 试了下这个当中的.还是能匹配到多级目录

    @wuqingdzx 这个是可以的 但最后的问号貌似没有必要?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1017 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 22:12 · PVG 06:12 · LAX 14:12 · JFK 17:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.