Поиск по сайту:

Как защитить паролем веб-каталоги в Nginx


Менеджерам веб-проектов часто приходится так или иначе защищать свою работу. Часто люди спрашивают, как защитить паролем свой веб-сайт, пока он еще находится в разработке.

В этом руководстве мы покажем вам простой, но эффективный способ защиты веб-каталога паролем при запуске Nginx в качестве веб-сервера.

Если вы используете веб-сервер Apache, вы можете ознакомиться с нашим руководством по защите паролем веб-каталога:

  1. Защита веб-каталогов паролем в Apache

Требования

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

  • Установлен веб-сервер Nginx
  • Root-доступ к серверу

Шаг 1. Создайте пользователя и пароль

1. Чтобы защитить паролем наш веб-каталог, нам нужно будет создать файл, который будет содержать наши зашифрованные имя пользователя и пароль.

При использовании Apache вы можете использовать утилиту «htpasswd». Если в вашей системе установлена эта утилита, вы можете использовать эту команду для создания файла паролей:

htpasswd -c /path/to/file/.htpasswd username

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

2. Если этот инструмент у вас не установлен, вы можете создать файл .htpasswd вручную. Файл должен иметь следующий синтаксис:

username:encrypted-password:comment

имя пользователя, которое вы будете использовать, зависит от вас, выбирайте любое, какое захотите.

Более важной частью является способ создания пароля для этого пользователя.

Шаг 2. Создайте зашифрованный пароль

3. Чтобы сгенерировать пароль, используйте встроенную в Perl функцию crypt.

Вот пример этой команды:

perl -le 'print crypt("your-password", "salt-hash")'

Пример из реальной жизни:

perl -le 'print crypt("#12Dfsaa$fa", "1xzcq")'

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

Вот как:

vi /home/tecmint/.htpasswd

Введите свое имя пользователя и пароль. В моем случае это выглядит так:

tecmint:1xV2Rdw7Q6MK.

Сохраните файл, нажав “Esc”, а затем “:wq”.

Шаг 3. Обновите конфигурацию Nginx

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

vi /etc/nginx/conf.d/default.conf       [For CentOS based systems]
OR
vi /etc/nginx/nginx.conf                [For CentOS based systems]


vi /etc/nginx/sites-enabled/default     [For Debian based systems]

В нашем примере мы защитим паролем корень каталога nginx: /usr/share/nginx/html.

5. Теперь добавьте следующие две строки под путь, который вы хотите защитить.

auth_basic "Administrator Login";
auth_basic_user_file /home/tecmint/.htpasswd;

Теперь сохраните файл и перезапустите Nginx с помощью:

systemctl restart nginx
OR
service nginx restart

6. Теперь скопируйте/вставьте этот IP-адрес в свой браузер, и вам будет предложено ввести пароль:

Вот и все! Ваш основной веб-каталог теперь защищен. Если вы хотите снять защиту паролем на сайте, просто удалите две строки, которые вы только что добавили в файл .htpasswd, или используйте следующую команду, чтобы удалить добавленного пользователя из файла паролей.

htpasswd -D /path/to/file/.htpasswd username