Для створення логіну та пароля можна використовувати утиліту htpasswd
з пакету apache2-utils
добре виконує цю функцію.
Для встановлення apache2-utils
:
sudo apt update
sudo apt install apache2-utils
Тепер є доступ до команди htpasswd і можна використовувати це для створення файлу паролів, який Nginx може використовувати для аутентифікації користувачів. Створіть для цього прихований файл з ім'ям .htpasswd
у вашому каталозі конфігурації /etc/nginx
.
При першому використанні цієї утиліти необхідно додати параметр -c
для створення вказаного файлу. Вкажіть ім'я користувача (в даному прикладі test
) в кінці команди, щоб створити новий запис у файлі:
sudo htpasswd -c /etc/nginx/.htpasswd test
Буде запропоновано ввести та підтвердити пароль для користувача test
Для подальшого додавання користувачів у цей файл -c використовувати не потрібно.
sudo htpasswd /etc/nginx/.htpasswd test2
Виведення файлу cat /etc/nginx/.htpasswd буде наступним:
test:$apr1$.KinUDGA$TvhvtRYlYlz24VHbRcXLI/
test2:$apr1$Sfi7G4dc$zWnuctM7Ju4GAWSfaNzls/
Щоб настроїти автентифікацію, потрібно вибрати контекст для обмеження. Окрім іншого, Nginx
дозволяє вам встановлювати обмеження на рівні сервера або всередині певного місця.
Цей приклад буде обмеження лише на рівні сервера. Директива auth_basic
включає автентифікацію та ім'я області, що відображатиметься користувачеві при запиті облікових даних.
Ви будете використовувати директиву auth_basic_user_file
, щоб вказати Nginx
на створений вами файл паролів:
nginx
server {
listen 80 default_server;
. . .
auth_basic "Restricted Content";
auth_basic_user_file /etc/nginx/.htpasswd;
}
Залежно від того, в якому блоці ви розміщуєте обмеження, ви можете контролювати ступінь деталізації того, які частини вашого сайту потребують пароля. Цей альтернативний приклад обмежує лише корінь /
документа блоком розташування. Тобто іншими словами ви можете вказати конкретний каталог на який потрібно обмежити доступ:
nginx
server {
listen 80 default_server;
. . .
location / {
try_files $uri $uri/ =404;
auth_basic "Restricted Content";
auth_basic_user_file /etc/nginx/.htpasswd;
}
}
Збережіть та закрийте файл, коли закінчите. Перезавантажте nginx
.
sudo systemctl restart nginx
Якщо на сервері встановлено OpenSSL
, ви можете створити файл паролів без додаткових пакетів.
** C ** віддайте прихований файл з ім'ям .htpasswd
у каталозі конфігурації /etc/nginx
для зберігання комбінацій імені користувача та пароля.
Ви можете додати ім'я користувача test до файлу за допомогою цієї команди:
sudo sh -c "echo -n' test:' >> /etc/nginx/.htpasswd"
Потім додайте зашифрований пароль для імені користувача, набравши:
sudo sh -c "openssl passwd -apr1 >> /etc/nginx/.htpasswd"
або ще один варіант
printf "$USER:$(openssl passwd -crypt $PASS)\n" >> .htpasswd
echo 'user:'`openssl passwd -apr1 test`