O Nginx aplica locais com expressões regulares na ordem em que aparecem no arquivo de configuração.
Portanto, adicionar uma entrada como esta apenas antes de sua localização atual ajudará você.
location ~ /\.well-known {
allow all;
}
Eu tenho um servidor Nginx e desabilitei arquivos ocultos no nginx_vhost.conf
## Disable .htaccess and other hidden files
location ~ /\. {
deny all;
access_log off;
log_not_found off;
}
Mas o LetsEncrypt precisa de acesso ao diretório .well-known
.
Como faço para permitir o diretório .well-known
e negar os outros arquivos ocultos?
O Nginx aplica locais com expressões regulares na ordem em que aparecem no arquivo de configuração.
Portanto, adicionar uma entrada como esta apenas antes de sua localização atual ajudará você.
location ~ /\.well-known {
allow all;
}
Eu forneci um tutorial passo a passo completo sobre como usar Vamos Criptografar com NGINX no meu site.
As partes principais são:
Você não precisa de ouvintes em seu bloco https, tudo é feito em https. Isso serve apenas para provar que você controla o domínio, não está servindo nada particular ou secreto.
# 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;
}
}
Guia passo a passo completo vinculado acima.
As outras soluções não me ajudaram.
Minha solução é incluir um regex negativo para .well-known
. Seu bloco de código deve ficar assim:
## Disable .htaccess and other hidden files
location ~ /\.(?!well-known).* {
deny all;
access_log off;
log_not_found off;
}
Ele bloqueará todos os arquivos de pontos, exceto os que começam com .well-known
P.S .: Eu também adicionaria return 404;
ao bloco.
Adicione isto (antes ou depois):
location ^~ /.well-known/ {
log_not_found off;
}
Você pode adicionar isso também na parte inferior, porque o modificador ^~
correspondente tem precedência sobre as expressões regulares.
Consulte os documentos .
Se você tem muitos arquivos de configuração e eles já contêm uma negação no .htaccess como
location ~ /\.ht { deny all; }
então ao invés de ignorar todos os arquivos de ponto , você pode simplesmente adicionar um segundo ignore para .git com
sed -i '/location ~ \/\.ht { deny all; }/a \ location ~ \/\.git { deny all; }' /etc/nginx/*
Tags nginx virtualhost lets-encrypt