Как установить пароль аутентификации для Nginx в Ubuntu 17.10

12 set 2022 2 min di lettura
Как установить пароль аутентификации для Nginx в Ubuntu 17.10
Indice dei contenuti

Введение

В этой статье мы покажем, как ограничить доступ к веб-серверу Nginx, работающему в Ubuntu 17.10.

Предпосылки

Прежде чем приступить к работе с этим руководством, на вашем сервере должен быть установлен пользователь без полномочий root с привилегиями sudo. Следуйте этому руководству: Первоначальная настройка в Ubuntu 16.04-17.10

Если вы еще этого не сделали, установите Nginx на свой сервер, набрав в консоли:

sudo apt-get update
sudo apt-get install nginx

Создайте файл паролей

Для начала нам нужно создать файл, который будет содержать наши данные для входа: имя пользователя и пароль. Вы можете сделать это с помощью инструмента OpenSSL, который уже может быть доступен на сервере. Кроме того, вы можете использовать инструмент htpasswd, включенный в пакет.

Создайте файл паролей с помощью OpenSSL

Если на вашем сервере установлен OpenSSL, вы можете создать файл паролей без дополнительных пакетов. Мы создадим скрытый файл с именем .htpasswd в каталоге конфигурации /etc/nginx для хранения наших данных для входа: имени пользователя и пароля.

Вы можете добавить имя пользователя в файл с помощью этой команды. Мы используем grok в качестве имени пользователя, но вы можете использовать любое другое имя:

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

Затем добавьте зашифрованный пароль для выбранного имени пользователя, набрав:

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

Вы можете повторить этот процесс для дополнительных пользователей. Вы можете увидеть, как пользователи и зашифрованные пароли хранятся в файле, набрав:

cat /etc/nginx/.htpasswd

Output
 grok:$apr1$wI1/T0nB$jEKuTJHkTOOWkopnXqC1d1

Создайте файл паролей с помощью инструмента Apache.

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

Чтобы установить пакет apache2-utils на свой сервер, введите в консоли:

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

Теперь у вас есть доступ к команде htpasswd. Мы можем использовать его для создания файла паролей, который Nginx может использовать для аутентификации пользователей. Для этой цели мы создадим скрытый файл с именем .htpasswd внутри нашего каталога конфигурации /etc/nginx.

При первом использовании этой утилиты нам нужно добавить параметр -c для создания указанного файла. В этом примере мы можем использовать то же имя пользователя, предварительно указав «grok» в конце команды, чтобы создать новую запись в файле:

sudo htpasswd -c /etc/nginx/.htpasswd grok

Вам будет предложено ввести и подтвердить пароль для пользователя.

Если вы хотите добавить больше пользователей, больше не используйте параметр -c, например:

sudo htpasswd /etc/nginx/.htpasswd nuovo_utente

Мы можем видеть имя пользователя и зашифрованный пароль для каждой записи:

cat /etc/nginx/.htpasswd

Output
 grok:$apr1$lzxsIfXG$tmCvCfb49vpPFwKGVsuYz.
 nuovo_utente:$apr1$p1E9MeAf$kiAhneUwr.MhAE2kKGYHK.

Настройте Nginx с паролем аутентификации

Теперь, когда у нас есть файл с нашими пользователями и паролями в формате, который может прочитать Nginx, нам нужно настроить Nginx для чтения этого файла.

Начните с открытия файла конфигурации блока сервера, на который вы хотите добавить ограничение. В нашем примере мы будем использовать файл блокировки сервера по умолчанию, установленный через пакет Ubuntu Nginx:

Из консоли:

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

Найдите следующий блок:

...nginx
 location /{
 try_files $uri $uri/=404;
 }...

Добавьте следующие элементы:


auth_basic "Restricted Content";
 auth_basic_user_file /etc/nginx/.htpasswd;

Окончательный результат должен быть следующим:


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

Указанный вами каталог теперь должен быть защищен паролем.

Подключитесь к вашему общедоступному IP-адресу или локальному хосту:


http://localhost/

Вам будет предложено ввести имя пользователя и пароль.

Настройка Nginx с паролем аутентификации в Ubuntu завершена.

Support us with a

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.