A volte non desideri che il pubblico generale possa accedere alla tua istanza di Discourse, ad esempio quando stai preparando un sito per una migrazione.
NOTA: Di recente ho avuto alcuni problemi con l’autenticazione di base, in cui alcune risorse statiche non venivano caricate. Potrebbe essere più semplice configurare il sito per login_required aggiungendo DISCOURSE_LOGIN_REQUIRED: true nella sezione env del tuo file app.yml.
La configurazione seguente mostrerà una semplice finestra di conferma del browser che richiede nome utente e password, comune a tutti i visitatori, e che sarà richiesta prima che possano accedere al sito.
Nota: Gli utenti dovranno comunque effettuare la normale registrazione e il login su Discourse.
Credenziali per l’autenticazione di base
Genera la password cifrata
htpasswd -bn =username= =password=
Nota: Per questo avrai bisogno di htpasswd. Su Ubuntu/Debian si trova nel pacchetto apache2-utils. Se hai accesso a un’altra macchina con htpasswd installato, puoi eseguirlo lì. Se il tuo obiettivo è semplicemente impedire l’accesso ai motori di ricerca, non c’è motivo di non utilizzare la password di esempio qui.
Inserisci qui l’utente/password cifrati
Aggiungi a app.yml
# autenticazione di base
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=
La sezione after_bundle_exec modifica la configurazione di nginx all’interno del contenitore di Discourse. Quando sei pronto per andare online, elimina semplicemente questa sezione e ricostruisci.