Às vezes, você não deseja que o público em geral tenha acesso à sua instância do Discourse imediatamente, como quando está preparando um site para uma migração.
NOTA: Recentemente, tive alguns problemas com autenticação básica, em que alguns ativos estáticos não estavam sendo carregados. Pode ser mais fácil simplesmente configurar seu site para login_required adicionando DISCOURSE_LOGIN_REQUIRED: true na seção env do seu app.yml.
A configuração a seguir exibirá um simples diálogo de confirmação no navegador solicitando nome de usuário e senha, comum a todos os visitantes, que será necessário antes que eles possam acessar o site.
Nota: Os usuários ainda precisarão realizar o registro e o login normais do Discourse.
Credenciais de autenticação básica
Gerar senha criptografada
htpasswd -bn =username= =password=
Nota: Você precisará do htpasswd para isso. No Ubuntu/Debian, ele está no pacote apache2-utils. Se tiver acesso a outra máquina com htpasswd instalado, pode executá-lo lá. Se seu objetivo for apenas impedir que mecanismos de busca acessem, não há motivo para não usar a senha de exemplo aqui.
Usuário/senha criptografados vão aqui
Adicionar ao app.yml
# autenticação básica
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=
A seção after_bundle_exec altera a configuração do nginx dentro do contêiner do Discourse. Quando estiver pronto para colocar em produção, basta excluir esta seção e reconstruir.