J'ai un serveur Nginx et j'ai désactivé les fichiers cachés dans le nginx_vhost.conf
## Disable .htaccess and other hidden files
location ~ /\. {
deny all;
access_log off;
log_not_found off;
}
Mais LetsEncrypt a besoin d'accéder à .well-known
répertoire.
Comment autoriser le .well-known
répertoire et refuser les autres fichiers cachés?
Les autres solutions ne m'ont pas aidé.
Ma solution consiste à inclure un regex négatif pour .well-known
. Votre bloc de code devrait alors ressembler à ceci:
## Disable .htaccess and other hidden files
location ~ /\.(?!well-known).* {
deny all;
access_log off;
log_not_found off;
}
Il bloquera tous les fichiers de points sauf ceux commençant par .well-known
P.S .: J'ajouterais également return 404;
au bloc.
Nginx applique les emplacements avec des expressions régulières dans l'ordre de leur apparition dans le fichier de configuration.
Par conséquent, ajouter une entrée comme celle-ci juste avant votre position actuelle vous aidera.
location ~ /\.well-known {
allow all;
}
J'ai fourni un tutoriel complet étape par étape sur comment utiliser Let's Encrypt avec NGINX sur mon site Web.
Les éléments clés sont:
Vous n'avez pas du tout besoin d'écouteurs dans votre bloc https, tout se fait sur https. C'est seulement pour prouver que vous contrôlez le domaine, il ne sert rien de privé ou de secret.
# Answer let's encrypt requests, but forward everything else to https
server {
listen 80;
server_name example.com www.example.com
access_log /var/log/nginx/access.log main;
# Let's Encrypt certificates with Acmetool
location /.well-known/acme-challenge/ {
alias /var/www/.well-known/acme-challenge/;
}
location / {
return 301 https://www.example.com$request_uri;
}
}
Guide étape par étape complet lié ci-dessus.
Ajoutez ceci (avant ou après):
location ^~ /.well-known/ {
log_not_found off;
}
Vous pouvez également l'ajouter en bas, car la correspondance ^~
le modificateur a priorité sur les expressions régulières. Voir les les docs .
Si vous avez beaucoup de fichiers de configuration et qu'ils contiennent déjà un refus sur .htaccess comme
location ~ /\.ht { deny all; }
alors au lieu d'ignorer tous les fichiers de points, vous pouvez simplement ajouter un deuxième ignorer pour .git avec
sed -i '/location ~ \/\\.ht { deny all; }/a \ location ~ \/\\.git { deny all; }' /etc/nginx/*