http://my-domain.com/.well-known/acme-challenge/XXXX に応答するように Nginx を設定する 質問する

http://my-domain.com/.well-known/acme-challenge/XXXX に応答するように Nginx を設定する 質問する

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 つの選択肢があります。

  1. パスを変更する。例えば

    $ echo hi > /var/www/letsencrypt/.well-known/acme-challenge/hi
    
  2. 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を忘れないでください

おすすめ記事