I'm with you -- NGINX certainly seems to be ignoring the TTL returned be DNS queries. One suggestion I found, which I have not tested yet, is to add this (e.g. within your `http` block):
resolver 127.0.0.1 valid=30s;
Unclear of the `valid` option is necessary or not.
I will say ... it's pretty shocking that this issue exists in something as popular as NGINX. Good luck!