
Узнайте, как настроить базовую систему HTTP-аутентификации. Это позволит вам защитить паролем определенные каталоги на вашем сайте, чтобы доступ к ним можно было получить только после входа в систему с именем пользователя и паролем.
Такая форма защиты паролем — это быстрый и простой способ обеспечить базовый уровень безопасности с помощью авторизации доступа к сайту.
Требования
- Сервер под управлением Linux (Ubuntu 16.04 или CentOS 7).
- Установленный и запущенный NGINX.
Создание файла паролей с помощью OpenSSH
На вашем сервере, скорее всего, уже установлен OpenSSH. Если нет, вы можете установить его с помощью команд:
CentOS 7:
sudo yum install openssh openssh-server openssh-clients openssl-libs
Ubuntu 16.04:
sudo apt-get install openssh-server
Используйте следующую команду для создания файла с именем .htpasswd в каталоге /etc/nginx:
sudo sh -c "echo -n '[username]:' >> /etc/nginx/.htpasswd"
Например, для добавления пользователя jdoe команда выглядит следующим образом:
sudo sh -c "echo -n 'jdoe:' >> /etc/nginx/.htpasswd"
Затем добавьте пароль для этого пользователя с помощью команды:
sudo sh -c "openssl passwd -apr1 >> /etc/nginx/.htpasswd"
Вам будет предложено ввести пароль дважды для его подтверждения.
Настройка аутентификации по паролю в NGINX
Следующим шагом будет добавление директив аутентификации пароля в конфигурационный файл NGINX для домена, на котором вы устанавливаете Joomla.
В большинстве случаев конфигурационный файл домена будет расположен в /etc/nginx/conf.d на CentoS 7 и /etc/nginx/sites-available на Ubuntu 16.04.
Отредактируйте этот файл:
CentOS 7:
sudo nano /etc/nginx/conf.d/example.com.conf
Ubuntu 16.04:
sudo nano /etc/nginx/sites-available/example.com.conf
Вы добавите следующие строки в этот файл:
auth_basic "Password Required";
auth_basic_user_file /etc/nginx/.htpasswd;
Эти две директивы обеспечат базовое ограничение пароля для указанного каталога. NGINX предлагает множество способов настройки защиты паролем различных файлов и каталогов, включая возможность фильтрации по типу файлов. Если вы хотите настроить более сложную систему защиты паролем, обратитесь к официальной документации NGINX за более подробной информацией.
Чтобы защитить весь сайт, поместите директивы внутрь существующего блока location / command. Если командного блока не существует, добавьте его:
location / {
auth_basic "Password Required";
auth_basic_user_file /etc/nginx/.htpasswd;
}
Если вы хотите защитить паролем подкаталог, укажите этот каталог:
location /admin {
auth_basic "Password Required";
auth_basic_user_file /etc/nginx/.htpasswd;
}
Обязательно добавьте этот блок location внутри блока server. Например, если ваш конфигурационный файл выглядит следующим образом:
server {
listen 80;
server_name example.com;
root /usr/share/nginx/example.com/html/;
index index.php index.html index.htm;
}
После добавления нового раздела он будет выглядеть следующим образом:
server {
listen 80;
server_name example.com;
root /usr/share/nginx/example.com/html/;
index index.php index.html index.htm;
location / {
auth_basic "Password Required";
auth_basic_user_file /etc/nginx/.htpasswd;
}
}
Сохраните и выйдите из файла, затем перезапустите NGINX:
sudo nginx -s reload
Чтобы проверить конфигурацию, перейдите по URL-адресу в браузере. Если конфигурация настроена правильно, вы увидите всплывающее сообщение с просьбой ввести имя пользователя и пароль.