Настройка HTTP аутентификации Nginx в Ubuntu 14

Nginx — легковесный, по сравнению с Apache, HTTP, обратный прокси сервер написанный Igor Sysoe. Официальную документацию к Nginx вы найдете здесь.

Прежде чем начать

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

Шаг 1: Утилиты Apache

Для создания шифрованных паролей для базовой аутентификации нам понадобится htpasswd. Для этого установим apache2-utils:

sudo apt-get install apache2-utils

Шаг 2: Создание пользователя и пароля

Создайте файл .htpasswd в корневом каталоге своего сайта. При помощи следующей команды вы сможете не только создать этот файл, но и указать нового пользователя и его пароль:

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

Утилита запросить желаемый пароль.

New password:
Re-type new password:
Adding password for user exampleuser

Файл .htpasswd выглядит следующим образом:

login: password

Обратите внимание, что файл должен быть доступен для чтения пользователю, под которым запущен Nginx.

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

Файл настроек вашего сайта должен располагаться в /etc/nginx/sites-available/. Добавьте следующие строки для защищаемого домена:

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

Во второй строке вы указываете путь к файлу .htpasswd.

Например, допустим что файл настроек сайта лежит в /etc/nginx/sites-availabe/website_nginx.conf, откроем его при помощи nano или любого другого текстового редактора:

sudo nano /etc/nginx/sites-available/website_nginx.conf

Добавим две строки:

server {
 listen       portnumber;
 server_name  ip_address;
 location / {
     root   /var/www/mywebsite.com;
     index  index.html index.htm;
     auth_basic "Restricted";                                #For Basic Auth
     auth_basic_user_file /etc/nginx/.htpasswd;  #For Basic Auth
 }
}

Шаг 4: перезагрузка nginx

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

$ sudo /etc/init.d/nginx reload
* Reloading nginx configuration...     

Вы должны увидеть запрос на ввод идентификационных данных. Используйте логин и пароль, который вы указали при создании файла .htpasswd. Пока вы не введете корректные данные вы не получите доступ к сайту.

Вот и все! Теперь все пути вашего домена защищены при помощи базовой аутентификации nginx.