How am I able to use the same rewrite rule for both port 80 and 443?
Try this:
server {
## This is to avoid the spurious if for sub-domain name
## rewriting. See Pitfalls and Common Mistakes | NGINX.
listen [::]:80; # ipv6
listen [::]:443 ssl; # ipv6
server_name example.com;
## Server certificate and key.
ssl_certificate /etc/ssl/certs/example.com-cert.pem;
ssl_certificate_key /etc/ssl/private/example.com-key.pem;
## Use only HTTPS.
rewrite ^ https://www.example.com$request_uri? permanent;
} # server domain rewrite.
It seems like nginx complains if you try to run multiple sites on
port 443 with one cert?
It should, each site needs a different cert or a cert that supports
several Alternative Names: www.example.comwww.example.net, &c.