Richard Harms's Blog
Upgrading to Zimbra 8.7: Part 1
Zimbra 8.7 requires Zimbra Proxy and memcached to be installed before the upgrade is performed. Three articles came in useful for doing this (the last two were due to a Null Pointer Exception being thrown when the nginx configuration files were being generated - this was due to the server having been renamed and its old name was left in Zimbra’s configuration).
In the last article, the last post mentioned a couple configuration values that lead me to the solution for the NPE:

Check the values listed from these and make sure only valid servers are listed:

zmprov gacf zimbraReverseProxyUpstreamLoginServers
zmprov gacf zimbraReverseProxyAvailableLookupTargets