1

Debian 8でngnixを使用してowncloud-serverを実行しています.letsencryptからのそのドメインのssl-certificateを使用しています。

今、自動更新スクリプトを使用して、定期的に実行し、証明書を更新したいと考えています。これは、owncloud を除くすべてのドメインで機能します。

実際、nginx-owncloud-config には、letsencrypt がサブフォルダーdomain.org/.well-known/acme-challengeに入るのを防ぐ場所ブロックが 1 つあります。

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 /$1;
}

私は次のようなことを試したと思います:

location ~ ^/(?:\.(?!well-known/acme-challenge)|autotest|occ|issue|indie|db_|console) {
  deny all;
}

...これが表現に影響するかどうかはわかりません。

私にとって唯一の方法は、「すべて拒否」をコメントアウトすることです。そして、それは機能します。実際には、更新スクリプトを拡張してサーバーを停止し、owncloud-confを変更し、サーバーを再起動し、新しい証明書を取得し、サーバーを再度停止し、owncloud-confを元に戻してサーバーを再起動することを念頭に置いています...

しかし、おそらくもっと単純です。そして、正規表現についてもっと学ぶかもしれません...

ヒントはありますか?

4

1 に答える 1

2

は、などでlocation ~ ^/(?:\.|autotest|occ|issue|indie|db_|console)始まる URI へのアクセスを拒否します。/./.well-known

まず、ルートにピリオド (. 以外/.well-known) で始まるファイルやディレクトリはありますか?


1 つのオプションは、正規表現をより具体的にすることです。次に例を示します。

location ~ ^/(?:\.ht|autotest|occ|issue|indie|db_|console)

で始まるすべての URI へのアクセスを拒否します/.ht


別のオプションは、修飾子location '/.well-known/acme-challenge'を追加して優先することです。このドキュメント^~を参照してください。

location ^~ /.well-known/acme-challenge

これにより、場所がすべての正規表現の場所よりも優先されます。そのため、その場所に.phpファイルが含まれていた場合、それら機能しなくなる可能性があります。


最後のオプションは、それを正規表現の場所に変えることです:

location ~ ^/\.well-known/acme-challenge

その場合、優先度は同じであり、拒否場所の上に注文できます。

于 2016-02-09T11:44:28.623 に答える