Estoy preparando sitios de Wordpress y Discourse (autoalojados) usando el plugin WP-Discourse.
He habilitado con éxito la autenticación básica HTTP en ambos sitios para evitar que sean accesibles hasta que estén listos para hacerse públicos (bloqueando efectivamente el acceso del público en general, así como de los motores de búsqueda).
Wordpress (información para quienes buscan lograr algo similar)
Creado archivo .htpasswd con un usuario y contraseña correspondiente
El plugin WP-Discourse funciona bien hasta que se habilita la autenticación básica en el servidor Discourse.
(Editar) Este es el error en el registro del plugin WP-Discourse en el extremo de Wordpress: [2025-02-14 18:20:06] connection.INFO: check_connection_status.failed_to_connect {"error":"wpdc_response_error","message":"Se devolvió una respuesta inválida desde Discourse","http_code":401,"http_body":"<html>\r\n<head>\u003ctitle\u003e401 Authorization Required\u003c/title\u003e\u003c/head\u003e\r\n<body>\r\n<center>\u003ch1\u003e401 Authorization Required\u003c/h1\u003e\u003c/center\u003e\r\n<hr>\u003ccenter\u003enginx\u003c/center\u003e\r\n</body>\r\n</html>\r\n"}
¿Alguna idea sobre cómo excluir las API de requerir autenticación básica HTTP en Discourse?
¿Lo has hecho? No estoy completamente seguro de que Discourse funcione detrás de la autenticación básica; lo intenté una vez pero me di por vencido. Parece aún más probable que pueda romper wp-discourse (¡oh, y tenía razón sobre eso!). Si hubieras tenido éxito, no estarías escribiendo este mensaje.
Para los sitios de staging de Discourse, generalmente solo configuro “login required” y eso mantiene alejados a los motores de búsqueda. Alguien con un inicio de sesión aún puede iniciar sesión, pero eso es lo que generalmente quieres.
Si es inaceptable que tus sitios estén disponibles para cualquier persona, entonces quizás deberías usar un firewall y limitar el acceso a tu IP.
Gracias, esta pista me ayudó a resolver el problema. Aquí está la sección de autenticación básica actualizada de app.yml en mi servidor Discourse (no fueron necesarios cambios en el servidor Wordpress):
# autenticación básica
after_bundle_exec:
- replace:
filename: "/etc/nginx/conf.d/discourse.conf"
from: "# Permitir el bypass de caché desde localhost"
to: |
# Permitir el bypass de la autenticación básica para el plugin WP-Discourse
geo $authentication {
default "Credenciales que debes proporcionar.";
127.0.0.1 "off";
151.101.3.55/32 "off";
}
# Permitir el bypass de caché desde 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 es la dirección IP pública (de ejemplo) de mi servidor Wordpress. WP-Discourse ahora informa: