Налаштування авторизації на основі пароля на Nginx в Ubuntu

Пропозиція від 8host.com

nginx

Вимоги

Якщо сервер Nginx не було встановлено раніше, установіть його зараз за допомогою команд:

sudo apt-get update sudo apt-get install nginx

Створення файлу паролів

Примітка : На файлах паролів Nginx використовують той же формат, що і на Apache.

Виберіть найбільш підходящий метод і дотримуйтесь інструкцій відповідного розділу.

Створення файлу паролів за допомогою OpenSSL

Якщо на сервері встановлено пакет OpenSSL, для створення файлу паролів не потрібно жодних додаткових пакетів. Створіть прихований файл .htpasswd в каталозі /etc/nginx, де зберігатимуться облікові дані користувачів.

Щоб додати користувача, використовуйте таку команду:

sudo sh -c "echo -n '8host:' >> /etc/nginx/.htpasswd"

Примітка : Замініть умовне ім'я 8host на ім'я користувача.

Потім додайте у файл пароль користувача у зашифрованому вигляді:

sudo sh -c "openssl passwd -apr1 >> /etc/nginx/.htpasswd"

Щоб додати файл інших користувачів, просто повторіть вищеописаний процес. Файл паролів містить імена користувачів та їх паролі у зашифрованому вигляді:

cat /etc/nginx/.htpasswd 8host:$apr1$wI1/T0nB$jEKuTJHkTOOWkopnXqC1d1

Створення файлу паролів за допомогою .htpasswd

Незважаючи на те, що OpenSSL відмінно справляється з підтримкою файлу паролів для Nginx, більшість користувачів вважає за краще використовувати для цих цілей утиліту htpasswd, яка знаходиться в пакеті apache2-utils.

Щоб встановити пакет утиліт apache2-utils, введіть:

sudo apt-get update sudo apt-get install apache2-utils

При першому запуску цієї утиліти потрібно використовувати прапор –c, який істворює потрібний файл. Вкажіть ім'я користувача в кінці команди, щоб створити новий запис у файлі:

sudo htpasswd -c /etc/nginx/.htpasswd 8host

Примітка : Замініть умовне ім'я 8host на ім'я користувача.

Програма запропонує створити та підтвердити пароль для цього користувача.

Щоб додати до файлу паролів інших користувачів, просто використовуйте команду htpasswd без прапорця –

sudo htpasswd /etc/nginx/.htpasswd another_user

Перегляньте вміст файлу, щоб переконатися, що облікові дані внесені правильно:

cat /etc/nginx/.htpasswd 8host:$apr1$lzxsIfXG$tmCvCfb49vpPFwKGVsuYz. another_user:$apr1$p1E9MeAf$kiAhneUwr.MhAE2kKGYHK.

Отже, потрібний файл паролів готовий. Тепер потрібно настроїти веб-сервер Nginx для перевірки цього файлу перед обслуговуванням закритого контенту.

sudo nano /etc/nginx/sites-enabled/ default

server listen 80 default_server; listen [::]:80 default_server ipv6only=on; root /usr/share/nginx/html; index index.html index.htm; server_name localhost; location / try_files $uri $uri/ =404; > >

server listen 80 default_server; listen [::]:80 default_server ipv6only=on; root /usr/share/nginx/html; index index.html index.htm; server_name localhost; location / try_files $uri $uri/ =404; auth_basic "Restricted Content"; auth_basic_user_file /etc/nginx/.htpasswd; > >

Збережіть та закрийте файл. Перезапустіть Nginx, щоб оновити конфігурацію.

sudo service nginx restart

Тепер контент, що міститься в цьому каталозі, захищений паролем.

Authentication Required Сервер потребує username і password. The server says: Restricted server. User Name: Password:

Введіть валідні облікові дані, щоб отримати доступ до контенту. У разі отримання невірних облікових даних сервер поверне помилку "Authorization Required".

Висновок

Наразі контент сайту захищений паролем. Зверніть увагу: захист паролем слід комбінувати з шифруванням SSL, інакше облікові дані передаватимуться на сервер у вигляді простого тексту, а це дуже серйозна вразливість для безпеки.