I'm surprised the "set a resolver with a dns ttl" isn't on here; it's probably my only headache with nginx. If you have an upstream that you specify with a hostname, nginx will lookup the host, cache it, and never refresh it by default.
I don't know why it happens to me so often, but I will set up nginx containers that proxy to some load balanced service (via DNS), and then one day the IPs will change and that service would break because I forgot to set resolver.