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

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

Введение

Если вы намерены настроить пароль для входа в Nginx на удаленном сервере Debian 9, читайте дальше, в противном случае, если вы хотите настроить пароль для Nginx на локальном компьютере, пропустите первый абзац «Подключение к серверу» и прочитайте следующий.

Подключение к серверу

Чтобы получить доступ к серверу, вам нужно знать IP-адрес. Вам также потребуется пароль для аутентификации.

Чтобы подключиться к серверу как root, введите эту команду:

ssh root@IP_DEL_SERVER

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

Если вы не используете пользователя root, вы можете войти под другим именем пользователя с помощью той же команды, а затем изменить первый параметр:

ssh VOSTRO_UTENTE@IP_DEL_SERVER

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

Теперь вы подключены к своему серверу, вы готовы начать настройку Nginx.

Предпосылки

Установите 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 для чтения этого файла.

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

Из консоли:

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

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

...
 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 с аутентификацией по паролю в Debian 9 завершена.

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.