ActivityPub in nginx-Multisite mit Unterverzeichnissen
Veröffentlicht: – Kommentar hinterlassen Letzte Aktualisierung:
Das ActivityPub-Plugin für WordPress erfordert, dass bestimmte URLs funktionieren. Das trifft insbesondere auf Multisite-Instanzen mit Unterverzeichnissen zu. Wenn deine Multisite-Instanz auch via nginx läuft wie meine, erfordert das eine spezielle Handhabung.
Hier bei Epiphyt habe ich zwei ActivityPub-Blog-Konten aktiviert (gerne folgen ❤️). Eins via @epiphyt@epiph.yt
auf Deutsch und das andere via @epiphyt_en@epiph.yt
auf Englisch. Wie du bereits siehst, zeigen beide Konten auf dieselbe Domain, da Fediverse-Konten das Prinzip von Unterverzeichnissen für Kontonamen nicht kennen.
Wenn ein Konto aufgerufen wird, ist die Anfrage-URL genau umgekehrt: https://epiph.yt/@epiphyt
und https://epiph.yt/@epiphyt_en
Das mag zwar für den ersten Fall funktionieren, das zweite Konto würde aber nicht gefunden werden, da es nicht Teil des WordPress-Blogs unter https://epiph.yt/ ist, sondern Teil des WordPress-Blogs unter https://epiph.yt/en/. Daher müssen wir zuerst die zweite Anfrage umleiten:
location ~ ^/\@epiphyt_en {
return 301 $scheme://$server_name/en/@epiphyt_en;
}
Code-Sprache: Nginx (nginx)
Jetzt kannst du zwar das Konto des zweiten Blogs sehen, wenn du danach suchst, aber funktionieren wird es noch nicht korrekt. Das liegt daran, dass Anfragen an den Pfad /.well-known/webfinger
gesendet werden und ebenfalls funktionieren müssen (das gilt übrigens für beide Konten). Daher muss dieser Pfad zuerst auf die WordPress-Installation selbst zeigen:
location ~ ^/.well-known/webfinger {
try_files $uri $uri/ /index.php?$uri&$args;
include /etc/nginx/proxy_params;
}
Code-Sprache: Nginx (nginx)
Jetzt funktioniert das Konto @epiphyt@epiph.yt
problemlos, das Konto @epiphyt_en@epiph.yt
allerdings noch nicht. Das liegt – wieder – daran, dass die URL weitergeleitet werden muss. Da solche Anfragen immer einen resource
-URL-Parameter enthalten, können für nur Anfragen für dieses Konto weiterleiten, was wir dadurch erreichen, dass wir auf den URL-Parameter resource=acct:epiphyt_en@epiph.yt
prüfen:
location ~ ^/.well-known/webfinger {
if ( $query_string = "resource=acct:epiphyt_en@epiph.yt" ) {
return 301 $scheme://$server_name/en/.well-known/webfinger?resource=acct:epiphyt_en@epiph.yt;
}
try_files $uri $uri/ /index.php?$uri&$args;
include /etc/nginx/proxy_params;
}
Code-Sprache: Nginx (nginx)
Stelle sicher, dass du die Konto-Namen entsprechend deinen Anforderungen anpasst und die nginx-Konfiguration immer neu lädst, bevor du eine neue Konfiguration testest.
Neuveröffentlichungen
Likes