J’héberge des sites Wordpress et Discourse (auto-hébergés) en utilisant le plugin WP-Discourse.
J’ai réussi à activer l’authentification HTTP Basic sur les deux sites pour qu’ils ne soient pas accessibles tant qu’ils ne sont pas prêts à être publiés (bloquant ainsi l’accès du grand public ainsi que des moteurs de recherche).
Wordpress (informations pour ceux qui cherchent à accomplir quelque chose de similaire)
Créé un fichier .htpasswd avec un utilisateur et un mot de passe correspondant
Reconstruire la configuration : /var/discourse# ./launcher rebuild app
Le plugin WP-Discourse fonctionne bien jusqu’à ce que l’authentification de base soit activée sur le serveur Discourse.
(Modification) Voici l’erreur dans le journal du plugin WP-Discourse côté Wordpress : [2025-02-14 18:20:06] connection.INFO: check_connection_status.failed_to_connect {\"error\":\"wpdc_response_error\",\"message\":\"Une réponse invalide a été retournée par Discourse\",\"http_code\":401,\"http_body\":\"\u003chtml\u003e\\r\\n\u003chead\u003e\u003ctitle\u003e401 Authorization Required\u003c/title\u003e\u003c/head\u003e\\r\\n\u003cbody\u003e\\r\\n\u003ccenter\u003e\u003ch1\u003e401 Authorization Required\u003c/h1\u003e\u003c/center\u003e\\r\\n\u003chr\u003e\u003ccenter\u003enginx\u003c/center\u003e\\r\\n\u003c/body\u003e\\r\\n\u003c/html\u003e\\r\\n\"}
Des idées sur la façon d’exclure les API de l’exigence de l’authentification HTTP Basic sur Discourse ?
Vraiment ? Je ne suis pas tout à fait sûr que Discourse fonctionnera derrière une authentification de base ; j’ai essayé une fois mais j’ai abandonné. Il semble encore plus probable que cela puisse casser wp-discourse (oh, et j’avais raison à ce sujet !). Si vous aviez réussi, vous n’écririez pas ce message.
Pour les sites de staging de Discourse, je mets généralement simplement « connexion requise » et cela éloigne les moteurs de recherche. Quelqu’un avec une connexion peut toujours se connecter, mais c’est généralement ce que vous voulez.
S’il est inacceptable que vos sites soient accessibles à n’importe qui, vous devriez peut-être utiliser un pare-feu et limiter l’accès à votre adresse IP.
Merci, cet indice m’a aidé à résoudre le problème. Voici la section d’authentification de base mise à jour de app.yml sur mon serveur Discourse (aucun changement n’était nécessaire sur le serveur Wordpress) :
# authentification de base
after_bundle_exec:
- replace:
filename: "/etc/nginx/conf.d/discourse.conf"
from: "# Allow bypass cache from localhost"
to: |
# Allow bypass basic authentication for WP-Discourse plugin
geo $authentication {
default "Credentials you must provide.";
127.0.0.1 "off";
151.101.3.55/32 "off";
}
# Allow bypass cache from 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 est l’adresse IP publique (exemple) de mon serveur Wordpress. WP-Discourse indique maintenant :