El error de Webfinger en WordPress es de esas cosas que se resuelven fácil, pero requieren buen rato de investigación por andarte de aventurero con Nginx. Esas cosas con Apache2 no pasaban XD
Que te digo, esto es de esos errores que se arreglan en unas cuantas lineas pero requiere un buen rato de búsqueda y pruebas para saber si sirve cada sugerencia que hay por internet.
Tras mucho buscar, termine llegando al mismo foro de wordpress donde una usuaria se lamenta con las siguientes palabras:
https://wordpress.org/support/topic/i-think-i-tried-everything-403-on-well-known/
I would really like to use ActivityPub, Webfinger, Friends, etc. (EDIT: it’s a new site and no plugins besides those)
I tried every solution linked here in the support forums, or on the GitHub repository.
I even tried the “alternative if we cannot access the /.well-known folder” (it’s out of the site patch, but it’s my server so I can access, but well), such as this post and this ticket (#188 on GitHub)
Realmente me gustaría usar ActivityPub, Webfinger, Friends, etc (EDIT: Es un nuevo sitio y no tiene plugins aparte de esos). He intentado cada solución enlazada aquí, en los foros de soporte o en el repositorio de GitHub. Incluso he intentado la «alternativa si no puedes acceder a la carpeta /.well-known» (esta fuera del parche del sitio, pero es mi servidor, así que puedo acceder, pero bueh)
La misma usuaria encuentra un truco en https://github.com/Automattic/wordpress-activitypub/issues/188 que básicamente es crear la carpeta de forma manual y comparte este código de configuración para Nginx que finalmente es lo que me sirvio con mi problema.
location ^~ /.well-known/webfinger {
auth_basic off;
allow all;
default_type text/plain;
try_files $uri $uri/ /index.php?$args;
break;
}
Definitivamente hay muchas cosas que se hacen pensando en Apache2 y funcionan a la primera allí, pero hay que configurarlas en Nginx y probablemente en otros servidores web.
Explicación
¿Qué es WebFinger?
WebFinger es un protocolo que permite obtener metadatos sobre una cuenta (como usuario@dominio.com) mediante una solicitud HTTP a /.well-known/webfinger. Para que esto funcione, el servidor debe estar correctamente configurado para responder a esa ruta.
Análisis línea por línea
location ^~ /.well-known/webfinger {
Define un bloque de configuración para las solicitudes que comienzan con /.well-known/webfinger. El modificador ^~ indica que si esta ruta coincide, Nginx no buscará otras expresiones regulares más abajo. Es una coincidencia preferente.
auth_basic off;
allow all;
Permite el acceso a todos los clientes. Refuerza que esta ruta debe ser pública para que otros servidores puedan consultar información sobre tus usuarios.
default_type text/plain;
Establece el tipo MIME por defecto como text/plain. Aunque WebFinger normalmente responde con JSON (application/jrd+json), esta línea asegura que si no se especifica el tipo, al menos se devuelve texto plano. Puede ser redundante si el backend ya define el tipo correcto.
try_files $uri $uri/ /index.php?$args;
Intenta servir el archivo solicitado directamente ($uri), luego como directorio ($uri/), y si no existe, redirige la solicitud a index.php con los parámetros originales ($args). Esto permite que aplicaciones como Nextcloud o Mastodon manejen la solicitud dinámicamente desde PHP.
break;
Detiene el procesamiento de otras reglas de ubicación. Una vez que esta se ejecuta, no se evalúan más bloques. Asegura que la solicitud se maneje exclusivamente por este bloque.
¿Por qué es necesaria esta configuración?
WebFinger requiere que /.well-known/webfinger esté accesible públicamente y que el servidor responda con información sobre el usuario. Sin esta configuración, Nginx podría devolver un error 404 o redirigir mal la solicitud. Es especialmente importante en entornos como Nextcloud, Mastodon, o Matrix, donde la federación depende de que otros servidores puedan consultar esta ruta. Y en este caso, para wordpress con el plugin de ActivityPub.