Налаштування авторизації на основі пароля на Nginx в Ubuntu
Пропозиція від 8host.com

Вимоги
Якщо сервер 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, інакше облікові дані передаватимуться на сервер у вигляді простого тексту, а це дуже серйозна вразливість для безпеки.