Nginx отключает .htaccess и скрытые файлы, но разрешает .well-известный каталог

У меня есть сервер Nginx, и я отключил скрытые файлы в nginx_vhost.conf

## Disable .htaccess and other hidden files
    location ~ /\. {
        deny all;
        access_log off;
        log_not_found off;
    }

Но LetsEncrypt нужен доступ к каталогу . Well-known .

Как разрешить каталог .well-known и запретить другие скрытые файлы?

16
задан 11 February 2016 в 22:32
5 ответов

Добавьте это (до или после):

location ^~ /.well-known/ {
        log_not_found off;
     }

Вы можете добавить это также внизу, потому что соответствующий модификатор ^ ~ имеет приоритет над регулярными выражениями. См. документы .

3
ответ дан 2 December 2019 в 20:34

Я предоставил полное пошаговое руководство по , как использовать Let's Encrypt с NGINX на моем веб-сайте.

Ключевые части:

  • официальный клиент только в порядке и действительно плох в Amazon Linux. Я рекомендую другой клиент, ACME .
  • Используйте это местоположение для метода webroot с моим рекомендуемым клиентом. Обратите внимание, что запросы обслуживаются по http, а не по https.

Вам вообще не нужны слушатели в вашем блоке https, все это делается по https. Это только для того, чтобы доказать, что вы контролируете домен, он не обслуживает ничего личного или секретного.

# 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;
  }
}

Полное пошаговое руководство, ссылка на который приведена выше.

8
ответ дан 2 December 2019 в 20:34

Nginx применяет местоположения с регулярными выражениями в порядке их появления в файле конфигурации.

Следовательно, добавление такой записи только перед вашего текущего местоположения поможет вам.

location ~ /\.well-known { 
    allow all;
}
16
ответ дан 2 December 2019 в 20:34

Другие решения мне не помогли.

Мое решение - включить отрицательное регулярное выражение для . Хорошо известно . Тогда ваш блок кода должен выглядеть так:

## Disable .htaccess and other hidden files
location ~ /\.(?!well-known).* {
    deny all;
    access_log off;
    log_not_found off;
}

Он будет блокировать все точечные файлы, кроме тех, которые начинаются с . Well-known

PS: Я бы также добавил return 404; к блок.

17
ответ дан 2 December 2019 в 20:34

Ọ bụrụ na ị nwere ọtụtụ nke config faịlụ na ha nwererịrị agọnahụ na .htaccess dị ka

location ~ /\.ht { deny all; }

mgbe ahụ kama ileghara faịlụ ntụpọ niile anya , ị nwere ike ịgbakwunye nke abụọ eleghara anya maka .git na

sed -i '/location ~ \/\\.ht { deny all; }/a \  location ~ \/\\.git { deny all; }' /etc/nginx/*
0
ответ дан 2 December 2019 в 20:34

Теги

Похожие вопросы