Могу посоветовать перейти на caddy вместо nginx. Он очень сильно проще и множество вещей включены по умолчанию сразу. Как пример он сам будет получать сертификаты и обновлять их, может и самоподписанный сертификат гонять самже. По умолчанию сразу пробрасываются все хедеры вебсокеты и прочее. В общем оно очень простое и удобное при этом мощное.
Как пример, все с чем вы мучаетесь выше в реалиях caddy выглядит так.
golanghelloworld.hackersandslackers.app {
reverse_proxy 127.0.0.1:3002
}
Дополнительное могу порекомендовать не использовать имя localhost а использовать напрямую 127.0.0.1.
В коде вообще лучше слушать на всех интерфейсах, т.е. использовать такую запись
http.ListenAndServe(":3002", nil)