Make WordPress ActivityPub plugin work with Nginx

WordPress content management system can successfully federate – there is a nice ActivityPub plugin. However, when running WordPress on Nginx server (as HTTP server, not only reverse proxy) there might be an issue – after setting up ActivityPub on auto.coffee I couldn't find @gytis@auto.coffee from my Mastodon instance.

After doing some digging I found out ActivityPub standard requires webfinger end-point under .well-known folder which by proposed default WordPress configuration for Nginx is forbidden.

First I tried to allow access to .well-known but even though JSON API started working, trying to access specific user end-point it kept throwing following error:

{
  "code": "rest_missing_callback_param",
  "message": "Missing parameter(s): resource",
  "data": {
    "status": 400,
    "params": [
      "resource"
    ]
  }
}

While following example of successfully federating WordPress instance it was expected to return something like this:

{
  "subject": "acct:gytis@blog.gyt.is",
  "aliases": [
    "https://blog.gyt.is/author/gytis/"
  ],
  "links": [
    {
      "rel": "self",
      "type": "application/activity+json",
      "href": "https://blog.gyt.is/author/gytis/"
    },
    {
      "rel": "http://webfinger.net/rel/profile-page",
      "type": "text/html",
      "href": "https://blog.gyt.is/author/gytis/"
    }
  ]
}

Actually problem was that URL was not passed to WordPress' index.php – workaround was provided in issue #8 of ActivityPub plugin. Solution is easy as adding extra location directive in Nginx configuration:

location ~* /.well-known {
    try_files $uri $uri/ /index.php?$args;
}

And there it goes – Auto.Coffee is ready to federate :)

Read more #server and #nginx #configuration tips.


My name is Gytis Repečka, I am Solution Architect focusing on Data Vault automation. Experienced data professional with over 10 years of experience designing and implementing Data Warehouse solutions based on Teradata, Informatica PowerCenter, Oracle Data Integrator, PostgreSQL, AWS. I enjoy using, promoting and contributing to open source software and love communicating about tech to both advanced and non-tech people. Visit Inretio for consulting services. Mention me @gytis@mastodon.lt on Mastodon.