I'm assuming you're using docker.
Make sure you have websockets support turned on.
You might also try to add custom locations under NPM. I made those changes at the same time I made some changes to the "advanced" tab of NPM. I'm not sure which thing fixed it, or maybe it required both. Try this, and if it still doesn't work, then add the advanced tab settings farther down this reply.
You will need custom locations in your NPM proxy host settings for Lemmy for the following paths.
/api
/feeds
/pictrs
/nodeinfo
They should point to the container that is running the lemmy application, not the UI one, just the lemmy one and to port 8536. If your NPM is not on the same docker network as lemmy, you will need to expose port 8536 on the lemmy container and add it to the lemmyexternalproxy network.
If those changes don't bring you joy, try also adding the following lines to the "advanced" tab of your NPM proxy host settings for Lemmy.
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Host $remote_addr;
real_ip_header X-Real-IP;
real_ip_recursive on;
If anything I have said is confusing to you, please reach out via DM and I'll try to help.