结合隐藏的 nginx 规则 files/directories

Combining nginx rules for hidden files/directories

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

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/ { ... }

以上还是前缀位置块。有关详细信息,请参阅 this document