Letsencrypt Renewal + Nginx + owncloud config = 因为正则表达式失败
Letsencrypt Renewal + Nginx + owncloud config = failed because of regular expression
我正在 运行在 Debian 8 上使用 ngnix 创建自己的云服务器。
我从 letsencrypt 为该域使用 ssl 证书。
现在我想使用自动更新脚本,定期 运行 更新我的证书。这适用于所有域,除了 owncloud。
实际上在 nginx-owncloud-config 中有一个位置块,阻止 letsencrypt 进入子文件夹 domain.org/.well-known/acme-challenge:
location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {
deny all;
}
天哪,我不是正则表达式方面的专家,也不知道如何解决这个问题(以及这个表达式的实际含义)。
在那个块下面我包含了一个用于 letsecrypt-renewal 的位置块:
# Letsencrypt auto-renewal
location '/.well-known/acme-challenge' {
default_type text/plain;
root /var/www/;
try_files $uri /;
}
我想我试过类似的东西:
location ~ ^/(?:\.(?!well-known/acme-challenge)|autotest|occ|issue|indie|db_|console) {
deny all;
}
...不知道,这是否会影响表达式。
我唯一的办法就是注释掉"deny all"。它有效。实际上我的想法是,扩展续订脚本以停止服务器,更改 owncloud-conf,再次重新启动服务器,获取新证书,再次停止服务器,更改 owncloud-conf 并重新启动服务器...
但也许它更简单。我可能会学到更多关于正则表达式的知识...
有没有人给我提示?
location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console)
拒绝访问任何以 /.
开头的 URI,例如 /.well-known
.
首先,您的根目录中是否有任何以句点开头的文件和目录(/.well-known
除外)?
一个选项是使正则表达式更具体,例如:
location ~ ^/(?:\.ht|autotest|occ|issue|indie|db_|console)
将拒绝访问任何以 /.ht
.
开头的 URI
另一种选择是通过添加 ^~
修饰符使 location '/.well-known/acme-challenge'
优先。参见 this document。
location ^~ /.well-known/acme-challenge
这将使该位置优先于 所有 正则表达式位置。因此,如果该位置包含 .php
个文件,它们 可能 停止工作。
最后一个选择是将其转换为正则表达式位置:
location ~ ^/\.well-known/acme-challenge
在这种情况下,它具有相同的优先级,您可以将其排序在拒绝位置之上。
我正在 运行在 Debian 8 上使用 ngnix 创建自己的云服务器。 我从 letsencrypt 为该域使用 ssl 证书。
现在我想使用自动更新脚本,定期 运行 更新我的证书。这适用于所有域,除了 owncloud。
实际上在 nginx-owncloud-config 中有一个位置块,阻止 letsencrypt 进入子文件夹 domain.org/.well-known/acme-challenge:
location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {
deny all;
}
天哪,我不是正则表达式方面的专家,也不知道如何解决这个问题(以及这个表达式的实际含义)。
在那个块下面我包含了一个用于 letsecrypt-renewal 的位置块:
# Letsencrypt auto-renewal
location '/.well-known/acme-challenge' {
default_type text/plain;
root /var/www/;
try_files $uri /;
}
我想我试过类似的东西:
location ~ ^/(?:\.(?!well-known/acme-challenge)|autotest|occ|issue|indie|db_|console) {
deny all;
}
...不知道,这是否会影响表达式。
我唯一的办法就是注释掉"deny all"。它有效。实际上我的想法是,扩展续订脚本以停止服务器,更改 owncloud-conf,再次重新启动服务器,获取新证书,再次停止服务器,更改 owncloud-conf 并重新启动服务器...
但也许它更简单。我可能会学到更多关于正则表达式的知识...
有没有人给我提示?
location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console)
拒绝访问任何以 /.
开头的 URI,例如 /.well-known
.
首先,您的根目录中是否有任何以句点开头的文件和目录(/.well-known
除外)?
一个选项是使正则表达式更具体,例如:
location ~ ^/(?:\.ht|autotest|occ|issue|indie|db_|console)
将拒绝访问任何以 /.ht
.
另一种选择是通过添加 ^~
修饰符使 location '/.well-known/acme-challenge'
优先。参见 this document。
location ^~ /.well-known/acme-challenge
这将使该位置优先于 所有 正则表达式位置。因此,如果该位置包含 .php
个文件,它们 可能 停止工作。
最后一个选择是将其转换为正则表达式位置:
location ~ ^/\.well-known/acme-challenge
在这种情况下,它具有相同的优先级,您可以将其排序在拒绝位置之上。