有効期限まで1ヶ月を切っているLet's encryptの証明書を更新しようとletsencrypt-auto renewをしたらownCloudで使っている証明書の更新処理がwebroot認証でエラーに。ownCloudのnginx設定はここに載っている設定を使っているのだが…
nginxの設定でlocation .well-known/acme-challenge内をallow all;にしても「アクセスが拒否されました」となる。
いろいろ試行錯誤した結果、.から始まるファイル/ディレクトリをアクセス禁止から除外し、/.well-known/acme-challengeに対してallow all;、try_files $uri =404;にした所うまく更新できた。
# location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) { location ~ ^/(?:autotest|occ|issue|indie|db_|console) { deny all; } location ~ ^/\.well-known/acme-challenge { allow all; try_files $uri =404; }
nginxの挙動が謎すぎて困った一幕であった。