If you haven't already swapped your web-server from Apache then you really should consider installing Nginx on a test server and running some stress tests on it. I wrote about stress testing in my book on scaling PHP.
Redirecting non-www traffic to www in nginx is best accomplished by using the "return" verb. You could use a rewrite but the Nginx manual suggests that a return is better in the section on "Taxing Rewrites".
Server blocks are cheap in Nginx and I find it's simplest to have two redirects for the person who arrives on the non-secure non-canonical form of my link. I wouldn't expect many people to reach this link because obviously every link that I create will be properly formatted so being redirected twice will only affect a small minority of people.
Anyway, here's the config: