为隐藏文件/目录组合nginx规则

为隐藏文件/目录组合nginx规则,nginx,nginx-location,Nginx,Nginx Location,我正在为我的网站设置Let's Encrypt certificate,由于我的一个位置规则,我在访问ACME challenge文件时遇到了一个小问题。基本上,我有拒绝访问隐藏文件的规则,以及我需要的几个其他规则,以保护该虚拟域上可用的系统数据文件。我的规则是阻止访问隐藏文件: location ~ ^/(?:\.|data|config|db_structure\.xml){ deny all; } 访问ACME质询文件的规则是: location /.well-known/acm

我正在为我的网站设置Let's Encrypt certificate,由于我的一个位置规则,我在访问ACME challenge文件时遇到了一个小问题。基本上,我有拒绝访问隐藏文件的规则,以及我需要的几个其他规则,以保护该虚拟域上可用的系统数据文件。我的规则是阻止访问隐藏文件:

location ~ ^/(?:\.|data|config|db_structure\.xml){
    deny all;
}
访问ACME质询文件的规则是:

location /.well-known/acme-challenge/ {
    alias /var/www/challenges/;
    try_files $uri =404;
}

我想将nginx不会拒绝ACME挑战请求的这两条规则结合起来。我试图将ACME挑战规则置于隐藏文件规则之上和之下,但这两种情况下都不起作用。我也对这两条规则做了一些修改,但我无法让它按预期工作。我非常感谢您对这个问题的任何帮助。

使用
^
修饰符,它使前缀位置块优先于同一级别的任何正则表达式位置块

例如:

location ^~ /.well-known/acme-challenge/ { ... }
上面仍然是一个前缀位置块。有关详细信息,请参阅