How To Set Up Basic HTTP Authentication With Nginx on Ubuntu 14.04 | DigitalOcean

1: установка инструментов apache

Для настройки аутентификации необходима команда htpassword. Эта программа включена в пакет apache2-utils. Установите этот пакет:

sudo apt-get install apache2-utils

2: создание учётных данных

Теперь нужно создать пароль.

Пароль и связанное с ним имя пользователя будут храниться в указанном вами файле. Пароль будет зашифрован. Файл можно назвать как угодно; в данном руководстве файл называется /etc/nginx/.htpasswd, имя пользователя – nginx.

Чтобы создать пароль, введите команду:

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

Проверьте содержимое нового файла; там появятся учётные данные.

cat /etc/nginx/.htpasswdnginx:$apr1$ilgq7ZEO$OarDX15gjKAxuxzv0JTrO/

3: обновление настроек nginx

Итак, теперь у вас есть учётные данные; настройте Nginx для их поддержки.

4: тестирование аутентификации

Сначала нужно перезапустить Nginx:

sudo systemctl reload nginx

Теперь откройте сайт в браузере:

Combining basic authentication and other restrictions

So far, we have seen simple examples of basic authentication. nginx supports a wide variety of restrictions, and it is possible to combine them in various ways. In this section, we will consider an interesting case: combining IP restrictions with basic authentication.

Say, you have a section on your website meant for use by company staff. Any employees accessing the web server from within the network can access a page without using a password. However, if they try to access it over the Internet, they should use a password.

Configuring nginx

Now, open up the site-specific configuration file with an editor like nano. If you are using Debian or Ubuntu, the site specific configuration is present in /etc/nginx/sites-available/default:

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

However, if you use another Linux distribution, it will be in /etc/nginx/nginx.conf:

sudo nano /etc/nginx/nginx.conf

Step 4 — testing the setup

To apply the changes, first reload Nginx.

  1. sudoservice nginx reload

Настройка авторизации nginx

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

Откройте конфигурационный файл блока server (так называется виртуальный хост Nginx) для сайта, доступ к контенту которого нужно ограничить. В данном примере используется стандартный блок default, который поставляется в Ubuntu по умолчанию.

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;}}

Чтобы настроить авторизацию, нужно выбрать контекст ограничения доступа. Веб-сервер Nginx позволяет ограничивать доступ к контенту на уровне сервера или же по определённому адресу. В данном примере мы ограничим доступ к каталогу document root при помощи блока location (при необходимости укажите другой каталог).

Создание файла паролей

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

Примечание: На Nginx файлы паролей используют тот же формат, что и на Apache.

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

Создание файла паролей при помощи .htpasswd

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

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

sudo apt-get updatesudo apt-get install apache2-utils

Теперь на сервере доступна команда htpasswd, которая позволяет создать файл паролей, необходимый серверу Nginx для авторизации пользователей. Создайте скрытый файл .htpasswd в каталоге /etc/nginx.

При первом запуске этой утилиты нужно использовать флаг –c, который и создаёт необходимый файл. Укажите имя пользователя в конце команды, чтобы создать новую запись в файле:

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

Примечание: Замените условное имя 8host именем своего пользователя.

Программа предложит создать и подтвердить пароль для этого пользователя.

Чтобы добавить в файл паролей других пользователей, просто используйте команду htpasswd без флага –с:

Тестирование авторизации

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

Требования

Для выполнения руководства нужен не-root пользователь с правами sudo. Чтобы создать такой аккаунт, обратитесь к этому руководству.

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

sudo apt-get updatesudo apt-get install nginx

Заключение

Теперь контент сайта защищён паролем. Обратите внимание: защиту паролем следует комбинировать с шифрованием SSL, в противном случае учетные данные будут передаваться  на сервер в виде простого текста, а это очень серьёзная уязвимость для безопасности.

Примечание: Чтобы узнать, как создать SSL-сертификат для Nginx, читайте это руководство.

Tags:

Похожее:  ELK K LESK В ЛИЧНЫЙ КАБИНЕТ КЛИЕНТА ВОЙТИ ПО НОМЕРУ

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *