Allestimento di una nuova community: l'autenticazione di base interrompe il plugin WP-Discourse

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)

Discourse

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?

Grazie!

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. :wink:

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.

Puoi dire a un’autenticazione di base di consentire l’accesso dall’IP del tuo server Discourse? Forse: Allow access from one IP, require basic auth from all other sources - Traefik v2 - Traefik Labs Community Forum

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:
Uno schermo vuoto mostra il testo con bordo verde, "You are connected to Discord!" (Sottotitolato dall'IA)

2 Mi Piace

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.