Введение
Если вы намерены настроить пароль для входа в Nginx на удаленном сервере Debian 10, читайте дальше, в противном случае, если вы хотите настроить пароль для Nginx на локальном компьютере, пропустите первый абзац «Подключение к серверу» и прочитайте следующий.
Подключение к серверу
Чтобы получить доступ к серверу, вам нужно знать IP-адрес. Вам также потребуется ваше имя пользователя и пароль для аутентификации. Чтобы подключиться к серверу как root, введите следующую команду:
ssh root@IP_DEL_SERVER
Далее вам нужно будет ввести пароль пользователя root.
Если вы не используете пользователя root, вы можете войти в систему с другим именем пользователя, используя ту же команду, а затем изменить root на свое имя пользователя:
ssh VOSTRO_UTENTE@IP_DEL_SERVER
Затем вам будет предложено ввести пароль пользователя.
Стандартный порт для подключения по ssh — 22, если ваш сервер использует другой порт, вам нужно будет указать его с помощью параметра -p, затем введите следующую команду:
ssh nome_utente@IP_DEL_SERVER -p PORTA
Теперь вы подключены к своему серверу, вы готовы начать настройку 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 10 завершена.