Иногда вы не хотите, чтобы к вашему экземпляру Discourse мог получить доступ широкий круг пользователей, например, когда вы готовите сайт к миграции.
ПРИМЕЧАНИЕ: В последнее время у меня возникли проблемы с базовой аутентификацией, из-за чего некоторые статические ресурсы не загружались. Возможно, проще просто настроить ваш сайт на требование входа, добавив DISCOURSE_LOGIN_REQUIRED: true в секцию env вашего файла app.yml.
Нижеприведенная настройка вызовет простое диалоговое окно подтверждения в браузере с запросом имени пользователя и пароля, которое будет отображаться всем посетителям и обязательно для доступа к сайту.
Примечание: Пользователям по-прежнему потребуется обычная регистрация и вход в систему Discourse.
Учетные данные для базовой аутентификации
Генерация зашифрованного пароля
htpasswd -bn =username= =password=
Примечание: Для этого вам понадобится утилита htpasswd. В Ubuntu/Debian она входит в пакет apache2-utils. Если у вас есть доступ к другой машине с установленной утилитой htpasswd, вы можете запустить команду там. Если ваша цель — просто отсечь поисковые системы, нет никаких причин не использовать приведенный здесь пример пароля.
Зашифрованное имя пользователя/пароль вставьте сюда
Добавление в app.yml
# базовая аутентификация
after_bundle_exec:
- replace:
filename: "/etc/nginx/conf.d/discourse.conf"
from: "# auth_basic on"
to: "auth_basic on"
- replace:
filename: "/etc/nginx/conf.d/discourse.conf"
from: "# auth_basic_user_file /etc/nginx/htpasswd"
to: "auth_basic_user_file /etc/nginx/htpasswd"
- replace:
filename: "/etc/nginx/conf.d/discourse.conf"
from: "location = /srv/status {"
to: "location = /srv/status {
auth_basic off;"
- file:
path: "/etc/nginx/htpasswd"
contents: |
=auth_string=
Секция after_bundle_exec изменяет конфигурацию nginx внутри контейнера Discourse. Когда вы будете готовы к запуску в продуктивной среде, просто удалите этот раздел и пересоберите контейнер.