Добавить базовую http авторизацию для этого файла
Когда пользователь пытается получить доступ к защищенному ресурсу, сервер отправляет пользователю WWW-Authenticate заголовок вместе с 401 Unauthorized ответ. Клиент отправляет обратно соответствующее имя пользователя и пароль, сохраненные в Authorization заголовок, и если он соответствует ключевому файлу, они могут подключаться.
Создать файл пароля
Вы можете использовать htpasswd генерировать файлы паролей. Скорее всего, это уже установлено в вашей системе, но если это не так, вы можете установить его из apache2-utils пакет. (Nginx использует тот же формат пароля, что и Apache):
Создать новый файл паролей, запустив htpasswd с -c флаг, в данном случае, для пользователя «admin»:
Вам будет предложено ввести пароль, который будет хешироваться и храниться в /etc/nginx/.htpasswd , Если вы хотите добавить несколько пользователей, оставьте -c флаг для добавления новых записей.
Вы можете защитить любой маршрут в nginx, используя auth_basic директива внутри локации. Например, чтобы защитить паролем /admin , вы бы поместили этот блок местоположения внутри блока сервера в вашем основном конфигурационном файле nginx (обычно расположенном в /etc/nginx/nginx.conf ):
auth_basic_user_file директива должна указывать на файл пароля, который вы создали на первом шаге. Это не должно называться чем-то особенным, поэтому вы можете создавать разные файлы паролей для разных маршрутов.
Nginx должен позаботиться обо всем остальном. Перезапустите, чтобы применить изменения:
И проверьте защищенный маршрут в вашем браузере. Вас попросят ввести пароль и запретить доступ, если вы не можете его предоставить.
Использование прокси-аутентификации
Распространенным вариантом использования базовой аутентификации является защита внешнего ресурса с помощью обратного прокси-сервера nginx. Это прекрасно работает с auth_basic и так же просто, как использовать два вместе:
Это работает путем запрета любой записи на прокси-сервер до того, как пользователь аутентифицируется. После проверки подлинности nginx работает как обычно.
Однако, если вы хотите выполнить аутентификацию на сервере за обратным прокси-сервером, конфигурация будет более сложной. Вместо этого вы захотите, чтобы nginx передавал ваши данные на веб-сервер, который может, например, запрашивать базу данных или выполнять более сложную проверку, чем простой файл паролей.
Вам нужно будет использовать заголовки, более Модуль, чтобы иметь возможность изменять заголовки более напрямую:
Следующая строка более сложная; обычный способ установки заголовков перезапишет realm переменная, когда она проксируется через nginx, что не идеально. С помощью more_set_headers сохранит это и покажет клиенту правильную информацию.
В этой статье мы узнаем, как использовать базовую функцию аутентификации, встроенную в nginx. Кроме того, вы можете комбинировать это с другими ограничениями, такими как разрешение доступа с определенных IP-адресов.
Подготовка
Очевидно, у вас должна быть копия nginx в вашей системе, прежде чем вы сможете ее настроить. Кроме того, вы должны установить утилиту Apache htpasswd для генерации хешированных паролей. В системах Debian/Ubuntu вы можете установить его с помощью:
На CentOS вы можете установить его так:
Создание файла htpasswd
Файл htpasswd содержит список имен пользователей и паролей. Nginx использует его для проверки учетных данных пользователей, которые хотят получить доступ к защищенным областям сайта.
Сначала создайте пустой файл с именем /etc/nginx/htpasswd примерно так:
Теперь вы можете добавить имена пользователей и пароли в этот файл с помощью команды htpasswd . Например, если вы хотите добавить пользователя bob в файл, запустите:
Вам будет предложено ввести пароль дважды. Когда вы введете пароль, его видно не будет.
Позже, если вы хотите изменить существующий пароль, просто повторите команду. Точно так же вы можете добавить других пользователей в файл, выполнив приведенную выше команду с другим именем пользователя.
Файл htpasswd представляет собой простой текстовый файл, и вы можете проверить его с помощью текстового редактора. Имена пользователей хранятся как есть, но пароли хешируются и шифруются. Вот файл, в котором есть два пользователя alice и bob :
Если вы хотите удалить пользователя из файла, используйте ключ -D следующим образом:
В следующем разделе мы настроим nginx для использования этого файла для ограничения доступа.
Конфигурирование nginx
Теперь откройте файл конфигурации для конкретного сайта с помощью редактора, такого как nano . Если вы используете Debian или Ubuntu, специфичная для сайта конфигурация присутствует в /etc/nginx/sites-available/default :
Однако, если вы используете другой дистрибутив Linux, он будет в /etc/nginx/nginx.conf :
Сохраните файл и выйдите из редактора. Затем, чтобы эти изменения вступили в силу, вы должны перезагрузить конфигурацию nginx:
Если вы работаете в более старом дистрибутиве, вы должны запустить:
Теперь, если вы откроете веб-браузер для доступа к чему-либо из каталога /files , то будет запрошено имя пользователя и пароль:
Если вы хотите защитить другой путь, просто добавьте еще один блок с тем же содержимым:
Имейте в виду, что вы можете также использовать другие директивы внутри этих блоков местоположения.
Ограничение для всего сайта
В предыдущем примере мы ограничивали доступ к определенным каталогам на сервере. Что если вы хотите установить ограничение для всего сайта? Вы можете сделать это, переместив основные директивы аутентификации в блок server :
Вы также можете пропустить определенные пути, установив для auth_basic значение off в блоке location . Например, следующий блок позволяет пользователям получить доступ.
Сочетание базовой аутентификации и других ограничений
До сих пор мы видели простые примеры базовой аутентификации. Nginx поддерживает множество ограничений, и их можно комбинировать различными способами. В этом разделе мы рассмотрим интересный случай: объединение ограничений IP с базовой аутентификацией.
Скажем, у вас есть раздел на вашем сайте, предназначенный для использования сотрудниками компании. Любой сотрудник, обращающийся к веб-серверу из сети, может получить доступ к странице без использования пароля. Однако, если они пытаются получить к нему доступ через Интернет, им следует использовать пароль.
Это означает, что у нас должно быть два ограничения: ограничение IP и директива базовой аутентификации. Мы уже видели, как указать основные директивы аутентификации. IP-адреса могут быть разрешены или заблокированы с помощью директив allow и deny . Кроме того, вы можете указать nginx выполнить одно из этих условий, используя satisfy any Таким образом, блок location может выглядеть примерно так:
В приведенном выше примере любой пользователь с IP-адресом 10.2.0.0-10.2.255.255 и 10.3.155.26 допускается без пароля. Для других пользователей мы возвращаемся к базовой аутентификации.
Теперь рассмотрим другую ситуацию. Возможно, вы хотите, чтобы сотрудники имели доступ к этим файлам только из сети компании, используя пароль. Сотрудники не должны получать доступ к этим файлам вне сети компании. Это означает, что оба условия должны быть выполнены. Чтобы внести это изменение, измените any на all :
Заключение
Бывают случаи, когда нужно ограничить доступ пользователей к определенной папке на сайте (разделу сайта) и пускать туда посетителей только по паролю. Например, в раздел администратора.
В этой статье мы узнаем, как использовать базовую функцию аутентификации, встроенную в Nginx. Кроме того, вы можете комбинировать это с другими ограничениями, такими как разрешение доступа с определенных IP-адресов.
Ограничить доступ можно по IP-адресу или организовать одновременное ограничение доступа по адресу и паролю.
2. Как настроить доступ по паролю.
Во-первых, необходим файл с кодами авторизации, который содержит имена пользователей и их пароли.
Во-вторых, необходимо указать web-серверу, что доступ к этому разделу сайта (папка, директория) возможен только авторизованным пользователям.
Очевидно, у вас должна быть копия Nginx в вашей системе, прежде чем вы сможете ее настроить. Кроме того, вы должны установить утилиту Apache для генерации хешированных паролей. На Nginx файлы паролей используют тот же формат, что и на Apache.
На CentOS 7 вы можете установить его так:
4. Файл htpasswd.
4.1. Описание файла htpasswd.
Расположение файла тоже может быть любое!
Файл htpasswd содержит список имен пользователей и паролей. Nginx использует его для проверки учетных данных пользователей, которые хотят получить доступ к защищенным областям сайта.
Задаёт файл, в котором хранятся имена и пароли пользователей.
Формат файла следующий:
В имени файла можно использовать переменные.
Сначала создайте пустой файл с именем /etc/nginx/htpasswd примерно так:
4.2. Создание файла htpasswd с помощью утилиты htpasswd.
Или просто заказать первичное создание этого файла у утилиты:
Внимание! Если у вас уже существует файл с таким именем, то его содержимое будет заменено, поэтому перед процедурой обязательно удостоверьтесь, что такого файла нет или используйте любое другое имя, которого точно нет.
Теперь вы можете добавить имена пользователей и пароли в этот файл с помощью команды htpasswd , добавлять -c не надо уже, так как файл для хранения паролей уже создан и создавать его снова нам не надо.
Например, если вы хотите добавить пользователя bob в файл, запустите:
Вам будет предложено ввести пароль дважды. Когда вы введете пароль, его видно не будет.
Позже, если вы хотите изменить существующий пароль, просто повторите команду. Точно так же вы можете добавить других пользователей в файл, выполнив приведенную выше команду с другим именем пользователя.
Файл htpasswd представляет собой простой текстовый файл, и вы можете проверить его с помощью текстового редактора. Имена пользователей хранятся как есть, но пароли хешируются и шифруются.
Просмотрите содержимое файла, чтобы убедиться, что учётные данные внесены правильно:
Вот файл, в котором есть два пользователя alice и bob :
Это пароли пользователей, никому не рассказывайте!
Если вы хотите удалить пользователя из файла, используйте ключ -D следующим образом:
4.3. Создание файла htpasswd с помощью утилиты openssl.
Если вы любите Nginx и давно не используете Apache, то устанавливать apache2-utils только ради утилиты htpasswd кажется глупым. И это верно. У вас на сервере, скорее всего уже есть openssl .
Пароль команда запросит ввести дважды.
Полученную строку копируем в файл htpasswd .
4.4. Создание файла htpasswd с помощью стороннего сервиса.
Вводим туда необходимые данные:
И жмем кнопку «Create .htpasswd file».
В результате получаем аналогичную с предыдущим пунктом строку, содержащую в себе логин и хеш пароля.
Далее необходимо создать файл /etc/nginx/htpasswd и вставить в него эту строку, которую нам сформировал сайт.
5. Ограничение на каталог.
Теперь откройте файл конфигурации для конкретного сайта с помощью редактора, такого как mcedit.
Рассмотрим на примере центральной конфигурации Nginx /etc/nginx/nginx.conf :
Пролистайте файл и найдите блок server . Сделав это, добавьте блок location для пути, который вы хотите защитить. Внутри этого блока вы должны установить имя области и путь к файлу htpasswd .
В приведенном ниже примере мы ограничили доступ ко всему в каталоге /files , и «имя области» установлено как «Restricted«. Имя области отображается браузерами и используется для определения защищенных частей веб-сайта.
Если вы хотите защитить другой путь, просто добавьте еще один блок с тем же содержимым:
Имейте в виду, что вы можете также использовать другие директивы внутри этих блоков местоположения.
Сохраните файл и выйдите из редактора.
Чтобы эти изменения вступили в силу, вы должны перезагрузить конфигурацию Nginx:
6. Ограничение для всего сайта.
А если вы хотите установить ограничение для всего сайта?
Вы можете сделать это, переместив основные директивы аутентификации в блок server :
Вы также можете пропустить определенные пути, установив для auth_basic значение off в блоке location .
Например, следующий блок позволяет пользователям получить доступ.
Директивы:
7. Объединение ограничений IP с базовой аутентификацией.
Скажем, у вас есть раздел на вашем сайте, предназначенный для использования сотрудниками компании. Любой сотрудник, обращающийся к веб-серверу из сети, может получить доступ к странице без использования пароля. Однако, если они пытаются получить к нему доступ через Интернет, им следует использовать пароль.
Это означает, что у нас должно быть два ограничения: ограничение IP и директива базовой аутентификации. Мы уже видели, как указать основные директивы аутентификации. IP-адреса могут быть разрешены или заблокированы с помощью директив allow и deny . Кроме того, вы можете указать Nginx выполнить одно из этих условий, используя satisfy any .
Таким образом, блок location может выглядеть примерно так:
В приведенном выше примере любой пользователь с IP-адресом 10.2.0.0-10.2.255.255 и 10.3.155.26 допускается без пароля. Для других пользователей мы возвращаемся к базовой аутентификации.
Правила проверяются в порядке их записи до первого соответствия. В данном примере доступ разрешён только для IPv4-сетей 10.1.1.0/16 и 192.168.1.0/24 , кроме адреса 192.168.1.1 , и для IPv6-сети 2001:0db8::/32 .
Директивы:
Разрешает доступ для указанной сети или адреса. Если указано специальное значение unix: , разрешает доступ для всех UNIX-сокетов.
Запрещает доступ для указанной сети или адреса. Если указано специальное значение unix: , запрещает доступ для всех UNIX-сокетов.
8. Доступ внутри сети, но без доступа вне сети.
Теперь рассмотрим другую ситуацию. Возможно, вы хотите, чтобы сотрудники имели доступ к этим файлам только из сети компании, используя пароль. Сотрудники не должны получать доступ к этим файлам вне сети компании. Это означает, что оба условия должны быть выполнены.
Чтобы внести это изменение, измените any на all :
Пример ниже разрешает доступ, если все ( all ) или хотя бы один ( any ) из модулей разрешают доступ.
Директивы:
9. Проверка работы htpasswd.
Внимание! Если у вас открылся сайт без окошка авторизации, то просто страница сохранилась в кеше браузера. Перезагрузите страницу с Shift+F5 и увидите приглашение залогиниться. Работает!
Если вы все сделали правильно, то при посещении запароленной папки (раздела на сайте), вы должны увидеть примерно следующее уведомление:
Создайте файл с именем passwd в /etc/nginx/conf.d
Используйте команду openssl для создания контента в следующем формате (вы также можете использовать команду htpasswd для создания того же формата)
Формат информации о пользователе: имя пользователя: пароль пользователя
Примечание. Пароль пользователя зашифрован, образец журнала показан ниже.
Добавьте в раздел местоположения следующий контент:
Используйте следующую команду, чтобы перезагрузить файл конфигурации
Команда загрузки: nginx -s reload
Конечно, перезапуск Nginx может иметь такой же эффект.
При открытии страницы со службой, настроенной с помощью nginx, будет отображаться следующее всплывающее окно для проверки входа в систему.После правильного ввода имени пользователя и пароля может отображаться страница, настроенная с помощью nginx.
Если имя пользователя или пароль неверны, появится запрос на повторный вход.
Интеллектуальная рекомендация
Michael.W Поговорите о Hyperledger Fabric. Проблема 20 - Подробная индивидуальная сортировка узла с пятью порядками с исходным кодом для чтения.
Michael.W Поговорите о Hyperledger Fabric. Проблема 20 - Подробная индивидуальная сортировка узла с пятью порядками с исходным кодом чтения Fabric Файл исходного кода одиночного режима находится в ord.
Мяу Пасс Матрица SDUT
Мяу Пасс Матрица SDUT Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Problem Description Лянцзян получил матрицу, но эта матрица была особенно уродливой, и Лянцзян испытал отвращение. Чт.
Гессенская легкая двоичная структура удаленного вызова
Hessian - это легкая двоичная структура удаленного вызова, официальный адрес документа, в основном он включает протокол удаленного вызова Hessian, протокол сериализации Hessian, прокси-сервер клиента .
TCP Pasket и распаковка и Нетти Solutions
Основные введение TCP является ориентированным на соединение, обеспечивая высокую надежность услуг. На обоих концах (клиенты и терминалы сервера) должны иметь один или более гнезда, так что передающий.
Читайте также: