Sto preparando i siti Wordpress e Discourse (self-hosted) utilizzando il plug-in WP-Discourse.
Ho abilitato con successo l’autenticazione HTTP Basic su entrambi i siti per evitare che vengano resi accessibili finché non saranno pronti per essere resi pubblici (bloccando efficacemente l’accesso sia al pubblico generale che ai motori di ricerca).
Wordpress (informazioni per chi cerca di realizzare qualcosa di simile)
Creato il file .htpasswd con un utente e una password corrispondente
Ricostruzione della configurazione: /var/discourse# ./launcher rebuild app
Il plug-in WP-Discourse funziona bene finché l’autenticazione basic non viene abilitata sul server Discourse.
(Modifica) Questo è l’errore nel log del plug-in WP-Discourse sul lato Wordpress: [2025-02-14 18:20:06] connection.INFO: check_connection_status.failed_to_connect {"error":"wpdc_response_error","message":"An invalid response was returned from Discourse","http_code":401,"http_body":"<html>\r\n<head><title>401 Authorization Required</title></head>\r\n<body>\r\n<center><h1>401 Authorization Required</h1></center>\r\n<hr>\r\n<center>nginx</center>\r\n</body>\r\n</html>\r\n"}
Qualche idea su come escludere le API dalla richiesta di autenticazione HTTP Basic su Discourse?
Ci sei riuscito? Non sono del tutto sicuro che Discourse funzioni con l’autenticazione di base; ho provato una volta ma ho rinunciato. Sembra ancora più probabile che possa rompere wp-discourse (oh, e avevo ragione su quello!). Se ci fossi riuscito, non staresti scrivendo questo messaggio.
Per i siti di staging di Discourse, generalmente imposto solo “login richiesto” e questo tiene lontani i motori di ricerca. Qualcuno con un login può ancora accedere, ma di solito è quello che vuoi.
Se è inaccettabile che i tuoi siti siano disponibili a chiunque, allora forse dovresti usare un firewall e limitare l’accesso al tuo IP.
Grazie, questo indizio mi ha aiutato a risolvere il problema. Ecco la sezione di autenticazione di base aggiornata di app.yml sul mio server Discourse (non sono state necessarie modifiche sul server Wordpress):
# autenticazione di base
after_bundle_exec:
- replace:
filename: "/etc/nginx/conf.d/discourse.conf"
from: "# Allow bypass cache from localhost"
to: |
# Consenti bypass autenticazione di base per il plugin WP-Discourse
geo $authentication {
default "Credenziali che devi fornire.";
127.0.0.1 "off";
151.101.3.55/32 "off";
}
# Consenti bypass cache da localhost
- replace:
filename: "/etc/nginx/conf.d/discourse.conf"
from: "# auth_basic on"
to: "auth_basic $authentication"
- 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: |
alfred:$apr1$jSdLuHyZ$faWxYGjnmLd/zRC6UMsRs1
151.101.3.55 è l’indirizzo IP pubblico (di esempio) del mio server Wordpress. WP-Discourse ora segnala: