You can solve the problem in your option #1 (which, as you said, is a much better approach) by setting the HTTP_X_FORWARDED_PROTO in your nginx config with
proxy_set_header X-Forwarded-Proto $scheme;
and configuring WordPress to recognize it by appending this line to wp-config.php
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') { $_SERVER['HTTPS'] = 'on';}
See also Wordpress support article for a variation of this solution.