Nginx desativa arquivos .htaccess e ocultos, mas permite o diretório .bem conhecido

12

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?

    
por Janghou 11.02.2016 / 21:32

5 respostas

13

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;
}
    
por 11.02.2016 / 21:46
7

Eu forneci um tutorial passo a passo completo sobre como usar Vamos Criptografar com NGINX no meu site.

As partes principais são:

  • O cliente oficial está apenas ok e é muito ruim no Amazon Linux. Eu recomendo um cliente diferente, ACME .
  • Use esse local para o método webroot, com meu cliente recomendado. Observe que as solicitações são exibidas por http, não por https.

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.

    
por 11.02.2016 / 23:25
7

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.

    
por 11.05.2017 / 17:17
3

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 .

    
por 12.02.2016 / 11:58
0

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/*
    
por 26.08.2018 / 14:00