現在、 nginx 構成に以下の行を残すことで、 Let's Encrypt SSL 証明書を正常にインストールできます。
location / {
try_files $uri $uri/ /index.php?$query_string;
}
Web サイトで基本認証を有効にしたいと考えています。以下はそうするためにうまくいきます:
location / {
try_files $uri $uri/ /index.php?$query_string;
auth_basic "Restricted Content";
auth_basic_user_file /etc/nginx/.htpasswd;
}
ただし、Let's Encrypt の SSL 証明書は毎月更新する必要があります。curl を使用して、この更新を自動化できます。ただし、Let's Encrypt には、次のプレフィックスを持つルートを含むルートに沿ったコールバックがあります。
/.well-known/acme-challenge/
しかし、ここで、上記のルート プレフィックスの例外を追加する必要があります。
location ^~ /.well-known/acme-challenge/ {
auth_basic off;
}
上記の多くのバリエーションを試しましたが、どれも機能していないようです。上記の構成でインストールする Let's Encrypt SSL 証明書を取得できません。基本認証を外すと (auth_basic で始まる 2 行を削除して)、Let's Encrypt SSL 証明書がインストールされないこともわかりました。
location ^~ /.well-known/acme-challenge/ {
try_files $uri $uri/ /index.php?$query_string;
}
location / {
try_files $uri $uri/ /index.php?$query_string;
}
基本認証が有効になっているときにコールバックルートが実行されるように、提案をいただければ幸いです。また、基本認証が有効になっていない上記の構成で Let's Encrypt をインストールできない理由についても知りたいと思います。前もって感謝します。
追加のエラー ログ:
/var/log/nginx# cat cert.dev.farm-error.log.1
2016/03/18 13:12:26 [error] 12336#12336: *1 open() "/home/forge/cert.dev.farm/public/.well-known/acme-challenge/jGhldzH8cV3d666a44nRy-Gzf98m1u2qUbkWnNv0aMI" failed (2: No such file or directory), client: 66.133.109.36, server: cert.dev.farm, request: "GET /.well-known/acme-challenge/jGhldzH8cV3d666a44nRy-Gzf98m1u2qUbkWnNv0aMI HTTP/1.1", host: "cert.dev.farm"
2016/03/18 13:17:09 [error] 13202#13202: *1 open() "/home/forge/cert.dev.farm/.well-known/acme-challenge/k9jsDB_mkvU5UzvL-B7hd3iA90ZTq61OaDNixoeRQuQ" failed (2: No such file or directory), client: 66.133.109.36, server: cert.dev.farm, request: "GET /.well-known/acme-challenge/k9jsDB_mkvU5UzvL-B7hd3iA90ZTq61OaDNixoeRQuQ HTTP/1.1", host: "cert.dev.farm"
2016/03/18 13:17:09 [error] 13202#13202: *1 FastCGI sent in stderr: "Unable to open primary script: /home/forge/cert.dev.farm/index.php (No such file or directory)" while reading response header from upstream, client: 66.133.109.36, server: cert.dev.farm, request: "GET /.well-known/acme-challenge/k9jsDB_mkvU5UzvL-B7hd3iA90ZTq61OaDNixoeRQuQ HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "cert.dev.farm"
2016/03/18 13:23:48 [error] 14522#14522: *1 open() "/home/forge/cert.dev.farm/public/.well-known/acme-challenge/5ZBXFn23tOUPcQFNrI3DqUE-l9x3rmdiOkYwabDl-jk" failed (2: No such file or directory), client: 66.133.109.36, server: cert.dev.farm, request: "GET /.well-known/acme-challenge/5ZBXFn23tOUPcQFNrI3DqUE-l9x3rmdiOkYwabDl-jk HTTP/1.1", host: "cert.dev.farm"