如何禁止访问除.well-已知的所有点目录?

mpe*_*pen 15 nginx

我在我的nginx配置中有这个:

location ~ /\. {
    deny all;
}

location /.well-known/ {
    allow all;
}
Run Code Online (Sandbox Code Playgroud)

但我仍然无法访问http://example.com/.well-known/acme-challenge/taUUGC822PcdnCnW_aADOzObZqFm3NNM5PEzLNFJXRU.如何允许访问该一个点目录?

Ric*_*ith 25

您有一个正则表达式位置和前缀位置.除非^~与前缀位置一起使用,否则正则表达式位置优先.尝试:

location ~ /\. {
    deny all;
}
location ^~ /.well-known/ {
#   allow all;
}
Run Code Online (Sandbox Code Playgroud)

请参阅此文档了解详细信息

  • 不,它不是正则表达式。**但是**,如果您*确实*想将其更改为正则表达式,您还需要将其放置在更通用的正则表达式*上方*,因为正则表达式位置是有序的。 (2认同)
  • 我将其注释掉,因为“允许所有”应该是默认值,并强调这不是 Apache 并且位置不会合并。`nginx` 选择一个位置来[处理请求](http://nginx.org/en/docs/http/request_processing.html#simple_php_site_configuration)。 (2认同)
  • 我想要注意到任何人看到这个,因为它看起来接近Google结果的顶部(对我来说至少)它使用 - (破折号)而不是_(下划线). (2认同)

TrO*_*nNe 9

我会使用优化的代码:

location ~ /\.(?!well-known).* {
    deny all;
}
Run Code Online (Sandbox Code Playgroud)

这样除了.well-已知文件夹外,所有点都被拒绝