nginx に、私が入れたファイルを返すことができません/var/www/letsencrypt
。
nginx/sites-available/mydomain.conf
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
server_name my-real-domain.com;
include /etc/nginx/snippets/letsencrypt.conf;
root /var/www/mydomain;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
nginx/スニペット/letsencrypt.conf
location ^~ /.well-known/acme-challenge/ {
default_type "text/plain";
root /var/www/letsencrypt;
}
次のコマンドを実行します:certbot certonly --webroot -w /var/www/letsencrypt/ -d my-real-domain.com
しかし、certbot がアクセスしようとするページは常に 404 です。
デバッグ
$ echo hi > /var/www/letsencrypt/hi
$ chmod 644 /var/www/letsencrypt/hi
今はできるはずですcurl localhost/.well-known/acme-challenge/hi
が、うまくいきません。まだ 404 です。何が足りないのか分かりますか?
ベストアンサー1
オプションはroot /var/www/letsencrypt/;
nginx に「これはベース ディレクトリです」と伝えるので、最終的なパスは になります/var/www/letsencrypt/.well-known/acme-challenge/
。
したがって、2 つの選択肢があります。
パスを変更する。例えば
$ echo hi > /var/www/letsencrypt/.well-known/acme-challenge/hi
nginx の動作を変更して、nginx がこれをエイリアスとして扱うようにします。
location ^~ /.well-known/acme-challenge/ { default_type "text/plain"; rewrite /.well-known/acme-challenge/(.*) /$1 break; root /var/www/letsencrypt; }
killall -1 nginx
設定をリロードするためにmakeを忘れないでください