Как защитить директорию сайта паролем

Включить htaccess

Сначала надо добавить директиву AllowOverride All в конфигурации виртуального хоста в секции :

<VirtualHost *:80>
  ...
<Directory /var/www/repo>
  Order deny,allow
  Allow from all
  AllowOverride All
</Directory>
   ...
И перезапустить службу apache2.

Создать .htaccess

После этого добавляем в нужный каталог (в примере /var/www/repo) файл .htaccess со следующим содержимым:

AuthType Basic
AuthName "Secret Repository"
AuthUserFile /var/www/.htpasswd
Require valid-user  
AuthUserFile указывает путь к файлу с паролями. AuthName определяет realm, где обычно указывается, к чему осуществляется доступ. AuthType определяет тип авторизации - практически всегда используется Basic (кроме него доступен тип Digest). Наконец, Require определяет набор условий, по которым определяется, кто из перечисленных в .htpasswd пользователей имеет доступ к данному каталогу сайта. ‘valid-user’ подразумевает, что доступ может получить любой пользователь после ввода пароля. Вместо valid-user можно через пробел перечислить имена пользователей, которым предоставляется доступ.

Создать файл .htpasswd

Осталось создать файл /var/www/.htpasswd. Его желательно расположить за пределами каталога, где лежат файлы сайта - снаружи где-то. Для генерации этого файла надо установить пакет apache2-utils, который содержит утилиту htpasswd.

apt -y install apache2-utils
htpasswd -c /var/www/.htpasswd <username>
В ответ на запрос пароля - ввести пароль пользователя После этих действий при открытии защищенного URL появится окно с заросом имени и пароля.