The operating system error is quite explicit - it reports a "Permission denied" error when trying to bind to IP 104.237.4.53 on port 80. Remember that binding to privileged ports (those below 1024) must be done with root privileges, and this binding occurs before the process drops its privileges to the user "nsadmin." Thus, even if you later switch to "nsadmin," the binding will have already failed.
I also noticed that your command uses the following bind option:
sudo /usr/local/ns/bin/nsd -t /usr/local/ns/config-file.tcl -u nsadmin -g nsadmin -b 127.0.0.0:80,127.0.0.0:443
Here, you're binding to 127.0.0.0, which is unusual because the standard loopback address is 127.0.0.1. Moreover, this IP address doesn't match the one shown in the error message (104.237.4.53). Could it be that the IP address of your host has changed, or might there be a misconfiguration in the bind option?
On a related note, you're currently using NaviServer 4.99.20, which was released over four years ago. There have been 10 newer releases in the 4.99 series since then. Although upgrading may not directly resolve the permission issue, it could offer other improvements and bug fixes that might benefit your setup.